闲暇之余做了一个简单的流水灯,设计思路先将LED灯从0-7逐个显示,然后再从7-0逐个显示。如果产生外部中断(即按钮按下),则8个LED灯全亮,之后又恢复流水灯状态。
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit K=P3^2;//启动按钮,外部中断
uchar led;
void delay(uint x)
{
while(x--);
}
void XX()//中断设置
{
EA=1;
EX0=1;
}
void DD()
{
uint i=0;//定义i=0,以便下面的调用
led=0xfe;//1111 1110
delay(30000);
while(1)
{
for(i=0;i<7;i++)
{
led=_crol_(led,1);//1111 1101 (A,B),A是左移的值,B是左移的位数
P1=led;
delay(30000);
}
for(i=0;i<7;i++)
{
led=_cror_(led,1);//0111 1111
P1=led;
delay(30000);
}
}
}
void main()
{
XX();
DD();
}
void XX1() interrupt 0
{
delay(1000);//防抖
if(K==0)
{
P1 = 0X00;
delay(30000);
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』