|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)
+ U0 P0 U2 S# H5 G3 G5 N, f" n+ f- ]; ~
#include <reg52.h>
9 b+ Z5 `! O5 d* p& N3 g#define uint unsigned int* {- c6 e {3 L3 ~
uint data i = 0;
+ c3 C+ D! E: @9 l- d, E- k5 `void time0_init(void)6 i; c; D1 h* e( g$ H) ^2 z
{
& P' s3 g, S0 V% D1 `, p TMOD = 0x02;8 z; s0 w6 {9 X; C/ G
TH0 = (65536-60000)/256;
7 F4 x$ x w, k6 N7 F3 |9 i+ \ TL0 = (65536-60000)%256;- I# N. A% n9 f
EA = 1;7 V( E: t( G, C: o' U4 |* ^( S
ET0 = 1;3 q: y. u7 r) j
TR0 = 1;- i5 }5 c+ y$ q9 w( O$ W2 X$ c
}8 ~" }- x# x' q% Z; x7 @% M' @( Y
7 @4 C0 o* K! E% Q
* E1 J' @& d+ p. Aint main()1 L* c- \$ n& [* X6 s7 Y8 j; L
{ # n. H v5 l# p9 F! b( j6 e- w7 m* w' B
P1=0xfe;5 ?8 Z5 L1 Q# d2 ^4 `. t& r
time0_init();3 h; ^3 ?9 j" n4 c1 |" Y. B
while(1);
9 I) n/ a* g! r) Y; t. b. f}
, q$ Z6 p9 S2 a5 [$ H; @+ {; a8 ^ O' c0 u1 Q$ z# M! ]
$ A" ?7 \" X7 ~% ?' Z8 z0 X3 E) s4 |1 |
void flash(void) interrupt 1/ d4 Q3 d9 J4 ~, ~
{
m! K, U/ o: |7 i$ O9 E! B; l time0_init();( f; G0 ~$ I; X+ t) e
if(i>9). x* o& x0 p3 s* d! Q, s" o
{
K( P0 @" {# \7 l r0 \& P/ K if(P1==0x7f)* V: S# d* H$ j/ \
{; u. O+ n+ v% H% g
P1=0xfe;1 M; X a4 a1 X% R# z/ F
}
8 ^4 H& E) H* u: U else
! L" U" W9 a; C {) ^% ~8 \ ]; {0 r
P1<<=1;0 j7 t4 y! M6 v7 f
P1|=0x01;
0 i1 I4 j& F5 _1 B! ?. u. B }1 V+ U! d, v9 a$ Z
i=0;' o- a2 ~& K) Z
}
& {: @- k5 ~! [5 N5 X9 R else
L0 V8 c& z* b/ W! k- X& E" x i++;( B% u. g a+ ^4 F
}0 E, J4 f' P: l
$ v; ~: m8 `7 c7 L9 L4 M9 u
! I: Z+ Q0 c# j$ m3 E) ~; I
3 I. w% j- @9 U' H3 n: s |
|