单片机按键中断查询

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

}

}

}

相关文档
最新文档