EDA365电子工程师网
标题:
51单片机定时器中断函数内能不能重置该定时器
[打印本页]
作者:
看海去不去
时间:
2017-7-22 14:47
标题:
51单片机定时器中断函数内能不能重置该定时器
51单片机模式1为16为定时计数器,1、在定时器模式1的中断函数内重置该定时器,能否实现自动重装的效果?2、自己以流水灯为例试了一下,好像不可以,大家帮忙看一下程序有没有问题。(定时器定时10s,变量i,用来加倍定时)
/ U/ b- O4 C) c! y5 W3 M- ~7 p8 @
: `4 y4 P1 a4 M
#include <reg52.h>
$ j5 U) c$ t2 I% x; w' P9 I* `, L
#define uint unsigned int
6 \; ]5 b0 U0 _0 h) k
uint data i = 0;
c4 n# q# c4 }8 _5 _
void time0_init(void)
1 v1 [. V$ T5 q0 N4 U" b
{
$ A8 h+ ~+ B; O& F3 [
TMOD = 0x02;
4 I0 l! [2 T: d$ ~( V" n
TH0 = (65536-60000)/256;
3 i7 c- @6 [% q" O( f: c. {
TL0 = (65536-60000)%256;
& u3 G: Q- Y, A3 h8 v) Z' A
EA = 1;
4 B1 q2 K# u2 Q" z0 e, o
ET0 = 1;
5 h3 O0 @9 u; U
TR0 = 1;
4 x$ a* S$ g2 k4 {
}
. M- }9 Z+ Z1 P4 g( ]
8 o- b1 q! r% _- L" |% B6 m
9 Y F& B% S. \
int main()
9 T. h' t! A5 d4 r4 Y
{
n( {9 K# Z9 G1 f8 i* j3 A
P1=0xfe;
8 f+ L; V' D8 C& ~
time0_init();
% Z% i4 k; y' A" P
while(1);
+ a5 F& _, ]5 b
}
- v/ y1 s4 b+ T9 k! I! s
# ^. t/ _, F' [! }
$ a9 U4 P5 H1 L9 t
) m6 U$ y, ]% W7 u
void flash(void) interrupt 1
6 z# G3 \. p i$ }; T6 D
{
; I9 w+ r- g' N0 w1 Z
time0_init();
- C5 s8 a/ \5 @7 o. _* B' X" b
if(i>9)
4 w: @# P7 d% {8 t% e1 y
{
3 n. I, c3 n( I4 @4 p! W5 q
if(P1==0x7f)
1 K* p- A$ k. c$ M
{
$ V6 m$ x4 P3 t
P1=0xfe;
2 F1 P. _- a" A" h1 H% H1 k. ?
}
( ~) A. r9 a6 K$ C O& V
else
. Q, |2 E, s9 H9 J
{
& d0 H( S6 A+ B+ u; d3 X% U; E
P1<<=1;
3 S! p4 H0 }* ^7 f( q' u4 g/ g) l
P1|=0x01;
; q5 T& N) H5 r. t) T
}
_4 O7 g1 c7 V f) G
i=0;
" d7 ]; S/ c5 ?* e/ C
}
0 a2 ?+ J# N' w4 K( G
else
* Z7 K2 L1 [6 X' J2 S7 I
i++;
; t( ?1 X# l8 P1 F9 R# R& N, n
}
2 _5 t. ?0 ?# I7 G% d
+ H& j: E7 e: C
4 g e" p: x: M& F$ q
1 e6 u: Y: S5 `- E/ C# d
作者:
刘萍的小跟班
时间:
2017-7-25 12:54
定时器方式2是8位自动重装的定时计数器,通过设置TMOD来设置M1M0选择方式二,这样定时比较精确。初值的计算会有些不同。自己参考一下资料吧
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2