|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)
4 P5 d- ]5 {# }' ?6 w0 t8 @. `) I0 [. J& l* I j: H- L1 F% H* [" E4 H
#include <reg52.h>
0 L3 S, k: u" n#define uint unsigned int
$ W- Z- K- q- puint data i = 0;
# o' ?) S C, \# lvoid time0_init(void)" F6 l* M4 E' R& P' F
{
6 ]3 g+ X8 |' G TMOD = 0x02;8 F. k6 E& N# |& U0 |' {, S
TH0 = (65536-60000)/256;
- R8 A- N; g# }. w: N TL0 = (65536-60000)%256;
- W: X _: n p* z) W8 V2 ^( ] EA = 1;1 W. G( n0 p; S. `* w" a& k: A
ET0 = 1;
5 H/ k) J3 j6 S9 G0 G TR0 = 1;
- l) F# J' R6 }2 D; S( n}( \% [( J, y* P
1 Y. P) H! u; q. @9 k$ m
$ M0 G# _4 G; ~0 e i* r) w$ L9 t# Q
int main()0 i; z' P9 q/ Y6 b
{ $ X1 a3 C) h" s3 n, r
P1=0xfe;
, p" `, q3 ? `6 g+ q) C time0_init();
5 E: ^) j- L+ j/ R) L2 {2 p while(1);2 w& U* k7 S) M; Y2 p; ?# w) t0 ?4 W
}. y/ t% ?, H) L$ x4 w3 B
5 H1 z9 y7 J* O# Q! i' O: k
( n6 p! y* x- F" V/ b4 X/ F1 X+ B, H! {' w, ]
void flash(void) interrupt 13 Q ^7 n7 g, O' _: S$ T
{
, Y$ @7 Y1 A5 |- ^ time0_init();
3 c% q1 m+ s% c' R if(i>9)
6 V: U7 t3 s2 Q! i) y; I2 u9 k { 7 q8 Q& j, P3 v1 e: U
if(P1==0x7f)
& X* Q. v7 r, W f* f {
# T, c- N! M; E( F1 ~ P1=0xfe;
1 y* a" s E, @2 X% [. }. e }
g, _- B' g- ]5 @; v else
% s% o* R) |: i! Q6 {! J {
7 I- I3 x9 y; F8 { P1<<=1;
; M' t# ?5 R# l; ?4 y3 |- Z3 s: [ P1|=0x01;
# j1 i0 m' b0 S3 k n }
3 I4 W. W2 W: G& X0 l! b q. K i=0;
7 q5 R+ _4 w3 ?# }4 x0 p! E9 p9 Z }
8 s+ g8 D6 d1 M- L# G0 @: C. {; |) B; ` else " p9 D! _3 Z* E( @% u9 [* j
i++;! B5 Y8 m, ~# G ~0 B
}4 g& O5 Y. R" ~& _
9 O! q! u H" E0 ], Z+ T% p* t" G6 b2 W( a. U$ a
/ @! D& _: W# V7 }- s" H, C$ [0 i |
|