|
在单片机的P2口上接8只LED组成流水灯。使用一个按键开关来控制流水灯的变化。开关断开是,流水灯是左右循环闪烁,当开关按下时,流水灯进行交替闪烁。开关断开恢复左右循环闪烁。很简单的一个程序,适合刚开始学习单片机做流水灯的新手学习。- #include<reg52.h>
- #include<intrins.h>
- void delay(int z) //延时程序
- {
- int x,y;
- for(x=0;x<=z;x++)
- for(y=0;y<=255;y++);
- }
- void init_tx() //中断初始化函数
- {
- EA=1; //开中断
- EX1=1; //允许外部中断1中断请求
- IT1=0; //外部中断1触发方式为跳沿触发方式
- IP=0X00; //设置中断优先级
- }
- void main()
- {
- unsigned char LED;
- init_tx();
- LED=0x00; //初始化LED灯
- P2=LED;
- while(1)
- {
- unsigned char i,j;
- LED=0x80;
- P2= LED; //点亮一个LED灯
- delay(100);
- for(i=0;i<=6;i++) //右移流水灯模块
- {
- LED=_cror_(LED,1);
- P2=LED;
- delay(100);
- }
- LED=0X01;
- P2= LED; //点亮最后一个灯
- delay(100);
- for(j=0;j<=6;j++) //左移流水灯模块
- {
- LED=_crol_(LED,1);
- P2= LED;
- delay(100);
- }
- }
- }
- void tx1() interrupt 2 //外部中断1处理程序
- {
- unsigned char temp;
- temp=P2; //保护现场
- P2=0xaa; //点亮4个LED灯
- delay(200);
- P2=0x55; //点亮另外4个LED灯
- delay(200);
- P2=temp; //返回现场
- }
-
复制代码
|
评分
-
查看全部评分
|