|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
使用定时器中断实现8个LED亮1000MS灭1000MS的问题+ ~5 H" e! i/ u+ J
- v# X+ ~. Q2 P) }$ R& ~问题: 使用定时器中断实现8个LED亮1000MS灭1000MS,要求不适用软件延时。
. N7 x- |' j; e1 h7 w- ~/ x我的写了一个程序,但是没有实现要求,哪里出错了呢?8 d, p9 z7 Y# o# I
程序和原理图如下:
, l4 M" I0 O/ \$ k- G5 B2 ]+ o0 |- S2 {$ W
#include<reg52.h>) S8 z7 U z; `% Q- T. w' }
#define uchar unsigned char# T* U$ Z4 n6 d; H
uchar count;
" W( v3 I0 S! K: {1 K6 C: X' S/*定时器中断初始化*/- [3 M m9 U' M% x0 [( b/ `, X+ `
void inint()
4 K! F1 S/ A/ a* ]* \! x! f' H1 N{
2 t. h1 p7 C3 J+ i" Z+ p TMOD = 0x10;//选择定时器1
1 x9 C( J5 z0 R/ J3 D TH1 = 0x4b;
, a* w0 N1 P# w% t3 \ TL1 = 0xfd;//定时50MS; n# R# g4 X2 ~ d0 T
TR1 = 1;
- k1 W. O) O* v ET1 = 1;5 q' j/ s+ `7 T5 {5 n
EA = 1;
; A1 i m& u- R9 F}
* f9 N8 I/ v' r' R: K8 Qint main(void)" Y$ N: J- t! r) s! E y ]3 X* ?: z
{
$ O- z# T; I$ N7 ?6 c7 B" c inint();
* U" K0 j: B! g2 F; X( v while(1)
" b& F# y2 m# g9 S1 S {
9 S" p! N9 e+ v' H- W" S P1 = 0;
, f e) Y# u9 ~+ M }& V: V8 D$ `( V
return 0;
+ g$ h5 a( @2 M: i}
% d+ `; h% O7 n, F. K) c- I1 s: q q2 M/*定时器1中断服务程序*/
+ S- l0 ^8 ]" c/ [, Uvoid timer1(void)interrupt 31 y- o0 A" u, q' ?: V
{ " |! W/ I) H0 B
TH1 = 0x4b; h; } g) [# v5 R
TL1 = 0xfd;; w: K! d7 y; [/ K4 C; y. y" U6 o/ |
count++;* ^+ `2 a$ u# w% B. ^( o1 o
if (count == 20). O6 C1 N0 s. t( u& [1 z) |5 ^5 S
{
4 @6 ]6 O) j( ?# t P1 = 1;" b# M$ ]& r1 U# ~
count = 0;
u. Y$ B3 F( l( v$ t3 {7 Y2 d! o8 s }
7 ^% W6 {7 X! k! r+ @0 p6 ^}
5 c8 f% e. x D% o8 Q( {: v# P8 v/ ]& S3 s, S y; A( D" h
. x% B1 `4 ?- m! K. _9 `, F. Q
4 ~3 D% E' y6 C |
|