|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)
! o! [1 @4 c5 P8 M( c$ O d7 E8 k3 x7 t; V5 b
#include <reg52.h>
8 D( I2 q5 D+ f. G3 M+ j. g#define uint unsigned int0 E/ W% a+ s8 M6 E! a6 A: }/ |
uint data i = 0;
/ N4 o, k5 ] x8 Ovoid time0_init(void) r/ ]6 V# e! H3 S8 B
{& { I8 T5 c. F; J9 `9 h
TMOD = 0x02;
* ~" K" j1 \ ? ~* W% {9 p) c TH0 = (65536-60000)/256;
' \0 F# P+ F, X) G" Z' T TL0 = (65536-60000)%256;
4 H6 q5 H1 V( t5 c" u. @# { EA = 1;
+ N6 S1 P+ J: ]+ T ET0 = 1;
4 s* |6 r1 t# G( M4 H TR0 = 1;4 w5 ?# h ?! N/ {, J+ S; E
}
1 f" X# {7 R9 S. D O1 K" w) e2 A& m/ |
: g) g8 g1 J6 B) \3 }; X; n3 t: f/ w" [int main(): [4 A( z/ p2 V+ ?2 E
{
, G( z( b+ v# t9 J P1=0xfe;# D- n c& K2 s, b
time0_init();
9 s$ V: n6 w8 q+ n+ n while(1);
' g! h$ F; W, p5 q}/ E# o# t- [1 K% ]
( q( z( q2 T6 D& i! |, C- a2 }1 K- f' ]- Q
& A3 D. D4 C0 j. A" mvoid flash(void) interrupt 1
8 K8 Q, P& x1 N1 X{
! _ A U1 S4 R+ Q& e time0_init();8 s/ z) L! E! U7 }& \
if(i>9)! d- f2 J9 g9 T7 C
{
, e2 K; B( q8 F0 m( ^! n( r if(P1==0x7f)
$ x; p* h, n; N5 I- `, Z( I. p {
! e6 `1 v+ o2 u9 R" K' @ P1=0xfe;) r( i* ^2 ?! Q2 C+ m3 J
}
% B2 A2 ] V! g0 e } else
8 D3 n1 B9 m1 x8 v" n6 H {
- l" c% X- |: K( C- A9 w) p P1<<=1;
# n; [+ q6 T: w9 s- l: f) m P1|=0x01;
( q. l+ P; m! F8 Z# b' d9 O }; V! n/ E5 I; z3 {7 S& k
i=0;
8 O9 B' K8 O/ y6 v" L8 _ }
6 ~" S. Q; S8 [+ V: E else
% o+ n! L, [; ?! \ o% f i++;
2 A. r' O1 t/ Q _}6 x, H& {' h; T l- N
4 P3 n, O3 @1 N2 s, Y
3 O: R" T, J8 w6 y# O5 ?1 N+ @2 h$ `( ?# v1 \$ j1 y
|
|