EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
通过定时器的方式实现流水灯延时,并通过外部中断改变流水灯样式。两种样式分别为:(1)4个led为一组交替亮灭,延时1s;(2)从左往右逐个点亮(同一时刻只有一个灯亮),延时1s。 #include <reg51.h>% e9 }4 q6 {. {% e7 t/ }* U 
#define uchar unsigned char9 z5 ~; O. U8 B" H; _ 
uchar count;! v, }. M: m- C0 u+ _; |  p 
sbit k=P3^2; 
/ Y- x) |7 N/ Uvoid main(void) 
* @* ?$ |( l- \( i! }5 R* ~{EA=1; 
9 e: C; Q/ l  L" q$ ZIT0=1; 
; F6 R- E; D% \! ?EX0=1; 
9 ^2 G2 \$ e+ g% O3 s! }TMOD=0x01;- i8 U. Q; {3 ?* B+ b 
TH0=0X3C; 
, \2 C2 U" Z+ j, wTL0=0XB0;+ g& @# c- u5 K7 A2 f1 m! X, c# F 
ET0=1; 
' _; K3 c& W4 O& K2 L. oTR0=1;        
+ s0 L) K: L2 p, W3 Z% H8 KP1=0x0F; 
/ y: ?+ h0 b5 i0 Q; }while(1) 
3 N. ^! u# f2 ?5 G( `9 m;}& X. X1 H8 ^$ q5 P3 E 
void INTO()interrupt 0* s  ^9 E$ W2 _* R) d 
{! p) y" g9 |. \' |$ h* j 
uchar i; 
/ [3 @9 s8 s+ m6 o- L6 Y8 N. uwhile(1) 
! p, t/ ?# I  v- L{( y  s' T: s% _1 I3 s 
P1=0x0f;% |4 b* Z" o$ m 
for(i=0;i<8;i++) 
0 O7 m( e+ k& G% V! m{P1>>=1;}& x! d$ \: d8 {4 z 
}' l) c& b7 U/ P5 @ 
}' N, B- H) O# J4 w 
void timer0() interrupt 1 
0 Q6 X# i& w  R/ E7 L{' G- _+ B9 Z+ { 
        TH0=0X3C;6 q1 M% u8 ?/ y, m5 Q& S# n) U 
        TL0=0XB0;" i) P  o9 F, D' _ 
        count++;6 ]" T( o. r, m$ D+ G4 M 
        if(k==0) 
" U* f* j! O. M; o- b        {5 ~# }6 J! l8 ^# M; Q( J 
        if(count==20) 
' D# K7 B( H. s5 E4 z, B7 t7 l2 L        { 
" @# z3 |6 U  q                count=0;: g! o6 c1 o4 X- r! ^3 f6 a 
                P1=~P1;} 
2 g# c- ?( [+ }: E2 c( W* l( u        } 
4 N) ~4 ]! {, H# E7 T$ k/ d        else 
% K, j9 p3 h3 q3 D1 k        {if(count==20)( N- K0 w' ~& x( H 
                { 
# k2 u2 _4 X% o4 c) U! {                        count=0; 
- i) W' N1 y  w4 k! I$ N                        P1>>1;}}} 
# x( q* Q: @/ k: O这个程序烧录进去失败了,哪里有问题呀?  
# V3 b( O$ E7 [9 S9 W |