按键及中断

#include <reg52.h>
sbit KEY = P1^0;
//sbit LED = P0^0;
unsigned char LED[16] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};  //,0X77,0X7C,0X39,0X5E,0X79,0X71}; //~(1~f) 段选
unsigned char code   dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选
unsigned char min[16] = {0XBF,0X86,0XdB,0XcF,0Xe6,0XeD,0XfD,0X87,0XfF,0XeF}; 
void delayus(unsigned int i);
void delayms(unsigned char t);
unsigned int k;
void min_1();
void t_1();




void turn_left();
void main()
{
/* KEY = 1;
P0 = 0X00;
while(1)
{
if(!KEY)
LED = 0X00;
else
LED = 0X01;
} */
// turn_left();
// min_1();
t_1();
}
void min_1()
{
KEY = 1;
P0 = 0X00;
if(!KEY)
{
delayms(10);
for(k=0;k<10;k++)
{
P2 = 0XFE;
P0 = LED[k];
delayms(100);
}
}
}
void turn_left() //转向灯
{
KEY = 1;
P0 = 0X00;
if(!KEY)
{
delayms(10);
 if(!KEY)
 {
P0 = 0X03;
delayus(10000);
P0 = 0X00;
delayus(10000);
}



}



//外部中断
void t_1()
{
P0 =0X55;
EA = 1;
EX0 = 1;
IT0 = 1;
while(1)
{}
}
void ISR_Key(void) interrupt 0 
{
P0 = ~P0;
delayms(100);
}
void delayus(unsigned int i)
{
while(--i);
}
void delayms(unsigned char t)
{
while(t--)
{
delayus(245);
delayus(245);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值