微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机外部中断编程实例2

51单片机外部中断编程实例2

时间:11-17 来源:互联网 点击:

别受控于上述8个按键
sbit led1=P0^1;
sbit led2=P0^2;
sbit led3=P0^3;
sbit led4=P0^4;
sbit led5=P0^5;
sbit led6=P0^6;
sbit led7=P0^7;

void delay_ms(unsigned int xms); //ms级延时子程序
void main()
{
//上电初始化,led灯不亮
TCON=0x01; //打开外部中断0,并设置为下降沿触发
IE=0x81; //开总中断
while(1)
{
delay_ms(3000);
}
}
void delay_ms(unsigned int xms) //ms级延时子程序
{ unsigned int x,y;
for(x=xms;x>0;x--)
for(y=130;y>0;y--);

}
void key_scan() interrupt 0 //使用了外部中断0的键盘扫描子函数
{ if(k0==0) //有键按下吗?(k0=0 ?)
{ delay_ms(10); //延时消抖
if(k0==0) //确实是有键按下,则:
{led0=~led0; //翻转灯的状态
while(!k0);} //等待按键放开
}
if(k1==0) //有键按下吗?(k1=0 ?)
{ delay_ms(10); //延时消抖
if(k1==0) //确实是有键按下,则:
{led1=!led1; //翻转灯的状态
while(!k1);} //等待按键放开
}
if(k2==0) //有键按下吗?(k2=0 ?)
{ delay_ms(10); //延时消抖
if(k2==0) //确实是有键按下,则:
{led2=!led2; //翻转灯的状态
while(!k2);} //等待按键放开
}
if(k3==0) //有键按下吗?(k3=0 ?)
{ delay_ms(10); //延时消抖
if(k3==0) //确实是有键按下,则:
{led3=!led3; //翻转灯的状态
while(!k3);} //等待按键放开
}
if(k4==0) //有键按下吗?(k4=0 ?)
{ delay_ms(10); //延时消抖
if(k4==0) //确实是有键按下,则:
{led4=!led4; //翻转灯的状态
while(!k4);} //等待按键放开
}
if(k5==0) //有键按下吗?(k5=0 ?)
{ delay_ms(10); //延时消抖
if(k5==0) //确实是有键按下,则:
{led5=!led5; //翻转灯的状态
while(!k5);} //等待按键放开
}
if(k6==0) //有键按下吗?(k6=0 ?)
{ delay_ms(10); //延时消抖
if(k6==0) //确实是有键按下,则:
{led6=!led6; //翻转灯的状态
while(!k6);} //等待按键放开
}
if(k7==0) //有键按下吗?(k7=0 ?)
{ delay_ms(10); //延时消抖
if(k7==0) //确实是有键按下,则:
{led7=!led7; //翻转灯的状态
while(!k7);} //等待按键放开


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top