|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用定时器中断实现8个LED亮1000MS灭1000MS的问题5 e# P, U* a) c6 P) Z% X
- h4 a) l# x4 h7 n5 b* ?问题: 使用定时器中断实现8个LED亮1000MS灭1000MS,要求不适用软件延时。
& H" ^& X! S- B% C9 k我的写了一个程序,但是没有实现要求,哪里出错了呢?
3 ?/ \2 C3 b$ w% u. T% U( g程序和原理图如下:
$ D+ f/ E% A+ j& x% e* O" O
' {( G' s5 \; ]) c5 ` `#include<reg52.h>9 B% J& s: c$ P
#define uchar unsigned char$ a6 d1 `& ^5 P" \
uchar count;( m% {9 W1 c! g$ t9 O6 w6 y6 H7 k
/*定时器中断初始化*/
" T- c9 {. D- A9 @void inint()
1 \1 t2 a9 z! K* N3 A/ h{. O+ B5 T3 `7 ?7 X! X
TMOD = 0x10;//选择定时器1
# x, t, m1 E- | TH1 = 0x4b;6 S( Z3 {. I, q' y W
TL1 = 0xfd;//定时50MS
; U" f$ O' L5 Z9 k; y TR1 = 1; b% n5 s6 y' ?* E+ N
ET1 = 1;: d0 o8 h$ t; }1 g
EA = 1;3 l0 T5 w& L6 j+ g$ e
}4 b8 R+ l- y$ b9 S6 c4 u- Y
int main(void)
1 H: v0 Q: X8 E+ x2 W. _{8 l+ ~$ s: l( C2 v1 k
inint();
9 j' P5 c1 J$ y, e while(1)3 ^+ n. E5 B' R0 o1 L
{' `4 C5 Y* @: _
P1 = 0; / L: v+ C5 Q7 H R% Q
}
6 |) z0 F. p# X: _* `: s( y return 0;
, x# C: |3 n- t/ m- @}# p) ?7 Y5 k0 r6 ?. b' L
/*定时器1中断服务程序*/1 H, k. W# j" O1 G
void timer1(void)interrupt 3
4 K7 @0 M2 [) Q% s4 v{ y0 U$ b, Z1 ]& {
TH1 = 0x4b;
; y+ v: t2 Z4 Q% R+ ~7 @ TL1 = 0xfd;
& l, a" m- G* o5 y1 w3 B7 R: y$ o; N# C8 E count++;
% ]2 j- b) |& [; A( \! a' x if (count == 20)
, ~" K& T; Q F. W/ Y8 ]$ H { 7 u$ ~9 Z- X0 e4 I9 W. `+ t" i' I
P1 = 1;" i! Q0 S- j" s! @3 D. j+ j
count = 0;& H/ [0 b. @, [2 Z/ t0 R# ^
}
. z9 O7 Y, M- n9 [} h5 F Q$ g1 `6 ?! u" r" j2 z
% V5 o5 s9 m3 ^+ V
+ U N4 {$ u9 P, J
5 w" O: p1 Q; w |
|