分享16位跑马灯,利用中断,功能左跑马+右跑马
单片机源程序如下:
- #include <reg52.h>
- void delay(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- int k1=0,fx=0,k2=0;
- void main(void)
- { unsigned char i,j,l=0x80;
- EA=1;EX0=1;EX1=1;IT0=1;IT1=1;IP=0x04;P0=0x01;
- P0=0x00;
- P2=0x00;
- while(1)
- { if(k2==0){ //
- if(k1==0){ //方向
-
- if(l>=0x80){fx=0;P2=0x80;delay(300);}
- if(l<=0x01){fx=1;P0=1;delay(300);}
- if(fx==0){P0=l;l=l>>1;P2=0;delay(300);}
- else{P2=l;l=l<<1;P0=0;delay(300);}
- }else{
- if(l>=0x80){fx=1;P0=0x80;delay(300);}
- if(l<=0x01){fx=0;P2=1;delay(300);}
- if(fx==0){P0=l;l=l<<1;P2=0;delay(300);}
- else{P2=l;l=l>>1;P0=0;delay(300);}
- }
- }
- }
- }
- void INT_0() interrupt 0 //中断
- {
- if(k1==0)k1=1;else k1=0;
- }
- void INT_1() interrupt 2 //反向
- {
- if(k2==0)k2=1;else k2=0;
- /*P0=0xaa;
- P2=0x55;
- delay(700);
- P0=0x55;
- P2=0xaa;
- delay(700);
- P0=0;P2=0; */
- }
复制代码
所有资料51hei提供下载:
51,.16位跑马.zip
(16.66 KB, 下载次数: 25)
|