标题:
单片机中断系统控制流水、跑马灯
[打印本页]
作者:
进击的小伙伴。
时间:
2020-3-27 17:05
标题:
单片机中断系统控制流水、跑马灯
#include<AT89X52.H>
void DelayMs(unsigned int n);
void DelayMs(unsigned int n)
{
static unsigned int i;
while(n--)
{
for(i=0;i<89;i++);
}
}
unsigned char LEDState=0;
int main()
{
unsigned char j;
IT0=1;//下降沿触发中断
EX0=1;//INT中断允许
EA=1;//总中断允许
PX0=1;//INT0中断优先级为低级
IT1=1;//下降沿触发中断
EX1=1;//INT中断允许
PX1=1;//INT0中断优先级为低级
while(1)
{
/*if(P1_0==0)//按键按下
{
DelayMs(10);
//等待按键抬起,直到按键抬起为止
while(P1_0==0);
//消抖
DelayMs(10);//按键抬起以后做的事
LEDState=(LEDState+1)%5;
}
else if(P1_1==0)//按键按下 反向
{
DelayMs(10);
//等待按键抬起,直到按键抬起为止
while(P1_1==0);
//消抖
DelayMs(10);//按键抬起以后做的事
LEDState=(LEDState+5-1)%5;
}
*/
if(LEDState==0)//闪烁
{
P2=0X00;
DelayMs(100);
P2=~P2;
DelayMs(100);
}
else if(LEDState==1)//上到下跑马
{
for(j=0;j<8;j++)
{
P2=~(1<<j);
DelayMs(100);
}
}
else if(LEDState==2)//下到上跑马
{
for(j=0;j<8;j++)
{
P2=~(1<<(7-j));
DelayMs(100);
}
}
else if(LEDState==3)//上到下流水
{
P2=0XFF;
for(j=0;j<8;j++)
{
P2=P2&(~(1<<j));
DelayMs(100);
}
for(j=0;j<8;j++)
{
P2=P2|(1<<j);
DelayMs(100);
}
}
else if(LEDState==4)//下到上流水
{
P2=0XFF;
for(j=0;j<8;j++)
{
P2=P2&(~(1<<(7-j)));
DelayMs(100);
}
for(j=0;j<8;j++)
{
P2=P2|(1<<(7-j));
DelayMs(100);
}
}
}
}
void INT_0(void) interrupt 0
{
LEDState=(LEDState+1)%5;
}
void INT_1(void) interrupt 2
{
LEDState=(LEDState+5-1)%5;
}
复制代码
中断控制流水跑马灯.zip
2020-3-27 17:04 上传
点击文件名下载附件
下载积分: 黑币 -5
80.17 KB, 下载次数: 11, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1