单片机按键中断查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
unsignedint hour=12;
unsignedint min=0;
unsignedint sec=0;
unsignedint switch1=0;
unsignedintct=0;
unsignedint button=0;
unsignedinttime_tem=0;
intzm[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0--9的字模intzmd[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //0--9的带点字模
/******程序延时*/
void delay (unsigned int i)
{
for (i;i>0;i--);
}
void scan1()
{
P2=0XFE;P0=zm[hour/10];delay(50);
P2=0XFD;P0=zmd[hour%10];delay(50);
P2=0XFB;P0=zm[min/10];delay(50);
P2=0XF7;P0=zmd[min%10];delay(50);
P2=0XEF;P0=zm[sec/10];delay(50);
P2=0XDF;P0=zmd[sec%10];delay(50);
}
void main()
{
P1=0;
EA=1;
EX0=1;
IT0=1; //跳变触发
EX1=1;
ET0=1;
TMOD=1;
TH0=15536/256;
TL0=15536%256;
TR0=1;
P3_3=1;
for(;;)
{
if(time_tem==0)
{scan1();} //显示时间
if(time_tem==1)
{P1=0xff;} //显示温度}
}
voidwuhan() interrupt 0 using 1
{
P1=0xff;
if(P1_0==0) time_tem=!time_tem;
if(P1_1==0) hour=(hour+1)%24;
if(P1_2==0) min=(min+1)%60;
if(P1_3==0) P3_3=!P3_3;
}
void myTimer0(void) interrupt 1
{
TH0=15536/256;
TL0=15536%256;
ct=(ct+1)%20;
if(ct==0)
{
sec=(sec+1)%60;
if (sec==0)
{
min=(min+1)%60;
if (min==0)
{
hour=(hour+1)%24;
}
}
}
}