|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)( F7 Q# }: J8 I" g/ L; `
% j" G6 F* x$ z( K {% w
#include <reg52.h>
: s% W- D3 c7 y5 e#define uint unsigned int9 R$ Q' O/ ]1 T# ^ S% N Z$ P
uint data i = 0;: T7 p( T3 b9 j& u) s1 y; z! n
void time0_init(void); m# B+ x Q7 T. R! t* \
{
& g' x8 p4 r4 Q/ K6 s3 v TMOD = 0x02;# S, @5 O$ \; R8 z# b- P
TH0 = (65536-60000)/256;
; n+ z1 g/ i5 [ TL0 = (65536-60000)%256;
- b3 q$ P. H% u; \: A7 q EA = 1;
; U5 R. p$ W, v8 t5 s- N ET0 = 1;, b5 P4 U b) {4 j7 A- P
TR0 = 1;
4 n% X- O( G, h}
& h" a1 x5 [4 a! k( P+ X5 b. m! M" G
1 r% W2 [! @' x8 i: W. f, C2 ~3 K8 [/ q9 M8 y
int main()
$ R8 `; T" h1 j$ o X y{ . H' q3 Z0 \# B! D- Z& c
P1=0xfe;, b, Y$ S' I) n! J+ I! G T
time0_init();( v/ t9 y! m% p. _0 r8 r. _8 B
while(1);/ f( h+ T6 ^5 R7 q) B6 \
}! k6 U9 f, _7 P, [7 L" v: A2 I0 X, U
0 Z, E/ ^! `) |; i6 x. R5 R- l3 X s* f1 E. i4 \7 v9 i
4 g3 c, o3 {0 t( C' M$ F w9 Rvoid flash(void) interrupt 1
& |% C) W: M# E- L% [{
4 P2 p# V+ S+ S H8 x time0_init();
0 G1 |" O: T$ l( T2 @1 q if(i>9)
; b3 i* J7 P o. g8 k: X+ w {
& ^( t b& k8 g5 G! T) \" O7 ]( f5 | if(P1==0x7f)$ O5 w5 }/ K. i- ~3 A
{" B8 v7 r7 W% r; u, n/ o8 D
P1=0xfe;- d9 P: ]% G: S
}* q( P3 O6 L0 y, D/ l0 A
else
7 C- `4 U& U% U: b* y0 ` {
7 c+ V2 d* h6 G. L2 |6 D7 ?4 h P1<<=1;
/ |7 s4 H; ]" G1 r P1|=0x01;
! S. z5 j" [% ^* X7 R6 U }
7 Z# f- ^, a, ]* W4 _, [& q2 E i=0;9 _9 X0 N) ^0 u/ b
}
4 k9 Z$ K5 ~: U! K- b else
4 `" b$ Y, j: E2 e' B* G+ ^ i++;3 `- J. o. S, ?- P; R
}
" a9 H& z4 c- V9 _* Y4 \) L. v6 T8 M" a+ R6 U
0 N- D7 G$ K% U8 Y' |) o
/ @# @8 ]& _( o y |
|