|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)" T4 I. y" D- W! k& r! F& G( Z
) Y: ]* O$ H) ^9 n#include <reg52.h>
1 a9 v) _3 k2 L. v& ~4 r0 E#define uint unsigned int; Z+ G& k- j, G: p& R& _2 x
uint data i = 0;
$ b2 h5 c8 o8 c1 Z8 f% N. evoid time0_init(void)/ Y! |( `- R, u5 s: P# R W ^
{
, O4 O" D! |9 k2 F3 Q) J TMOD = 0x02;
2 n6 W9 x/ W2 H, @ TH0 = (65536-60000)/256;5 z& f6 w5 _8 _1 |
TL0 = (65536-60000)%256;
" ] j/ ^4 p2 \& s EA = 1;6 B x* ]& I" v# R! S( J. W4 e3 ]
ET0 = 1;* M% z) m- ^ J2 r4 z5 y3 C2 \% ]9 [
TR0 = 1;; ?6 V/ v6 P% N6 x7 ^
}
- U F7 m* F7 d2 w
. ?. {, t' \6 C9 ] C a9 f {) W# B* z
int main()8 K6 N4 Q6 ~) r3 U& E6 S( h& P
{ / p3 v6 D% o7 V/ W+ F7 I/ w1 }
P1=0xfe;. Y+ ]+ v0 l, C0 n: ?( n8 j0 E r
time0_init();
3 Z- p5 b# f: @. s while(1);
4 t Y( V: |3 R+ Q: v/ m}
2 l! G- O! ^" {. C) Y
1 c# R& I0 B. e6 _$ L8 _2 {
H8 E- F( b% ~8 T1 s+ ~0 u
: x+ q4 |$ c! Kvoid flash(void) interrupt 1' y# _' P! b0 \/ O P h
{
. H8 {2 H( S4 [8 w, k time0_init();
& q; h/ u& g! B1 ` if(i>9): d, G5 m& s; J, _4 n$ F
{
) k' m- l3 U: k$ i( M/ X3 p6 K if(P1==0x7f)- w5 o1 m8 q" p: A: v: j: p
{
" b# @& @; y: J P1=0xfe;& V) h7 ^: a/ W( u" P3 q) V
}$ v* v) e3 j8 {7 m a
else
" V: `" i9 _: Z9 k2 A0 \ {3 H1 q- u8 J+ I& f `
P1<<=1;
5 I+ N) j4 Q+ r( ^: b3 d; q P1|=0x01;. [- [/ P9 ]5 Z8 z" @$ m1 w2 _5 N8 L
}
3 @% b! p% X3 Q) P* u i=0;
& n) l1 L0 E! B8 c4 W$ x* _4 X }3 v5 Y9 f+ I6 R
else + f( q% r, g* h2 d/ E8 P
i++;/ e# D! r, K4 @. Z2 u
}
; l( T0 d' R5 |- Y$ }" o, ?: \2 f0 s% T
8 j: z1 e' p/ ?
8 a+ F* ?! | V, d* `
|
|