西安文理学院课程设计报告
}
CNT++; //记下按键KEY1按下的次数 IF(CNT==4&&CNT1==0) { MIAO4=MIAO; FEN4=FEN; SHI4=SHI; CNT1++; } IF(CNT==8) { CNT=0; IF(CNT1==1) { MIAO=MIAO4; FEN=FEN4; SHI=SHI4; } CNT1=0; } }
IF(KEY2==0) //判断KEY2是否按下 { WHILE(!KEY2) //防止掉显 { IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } } JIA(); }
IF(KEY3==0) //判断KEY3是否按下 { WHILE(!KEY3) //防止掉显 { IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } }
JIAN(); //调用减1子函数 }
IF(KEY4==0) //判断KEY4是否按下 {WHILE(!KEY4) //防止掉 { IF(CNT==1||CNT==2||CNT==3) { ALM1=~ALM1; DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) {DISPLAY();} } }
IF(KEY5==0) { DELAY(5); IF(!KEY5)
第 21 页
西安文理学院课程设计报告
{ TR1=1;} WHILE(!KEY5)
{ IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} } }
IF(KEY6==0) { IF(!KEY6) {TR1=0;}
WHILE(!KEY6)
{ IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} } }
IF(KEY7==0)
{ WHILE(!KEY7)
{IF(CNT==1||CNT==2||CNT==3) { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8) { DISPLAY(); } IF(CNT==7) {DISPLAY2();} MIAO2=0;FEN2=0;SHI2=0; } } }
//****************************加1子函数*************************** VOID JIA() { IF(CNT==1) //判断KEY1按下的次数是否为1 { MIAO1++; //是,则秒加1
IF(MIAO1>59) //判断秒是否大于60,是,则秒清零 MIAO1=0; }
IF(CNT==2) //以下含意同上 { FEN1++; IF(FEN1>59) FEN1=0; }
IF(CNT==3)
第 22 页
西安文理学院课程设计报告
{ SHI1++; IF(SHI1>23) SHI1=0; }
IF(CNT==4) { MIAO++; IF(MIAO>59) MIAO=0; CNT1++; }
IF(CNT==5) { FEN++; IF(FEN>59) FEN=0; CNT1++; }
IF(CNT==6) { SHI++; IF(SHI>23) SHI=0; CNT1++; } }
//***************************减1子函数**************************// VOID JIAN() { IF(CNT==1) //判断KEY1按下的次数是否为1,是则秒减1 { MIAO1--;
IF(MIAO1==255) //判断秒是否减到255,是,则秒置59 MIAO1=59; }
IF(CNT==2) //以下含意同上 { FEN1--;
IF(FEN1==255) FEN1=59; }
IF(CNT==3) { SHI1--;
IF(SHI1==255) SHI1=23; }
IF(CNT==4) { MIAO--;
IF(MIAO==255) MIAO=59; CNT1++; }
IF(CNT==5) { FEN--;
IF(FEN==255) FEN=59;
第 23 页
西安文理学院课程设计报告
CNT1++; }
IF(CNT==6) { SHI--;
IF(SHI==255) SHI=23; CNT1++; } }
//***************************闹铃子函数***************************// VOID CLOCK()
//判断秒的数值是否相等 { IF(MIAO==MIAO1&&ALM1==0)
//是,在判断分是否相等 IF(FEN==FEN1&&ALM1==0) //是,再判断时是否相等 IF(SHI==SHI1&&ALM1==0)
{ FLAG2=0; //是,则标志位,FLAG2清零 WHILE(!(FLAG2>1200)&&(CNT==0)) //判断FLAG2是否到1200且不 {IF(KEY4==0) //没有,则继续驱动蜂鸣器响 {DELAY(5); FMQ=1; // WHILE(!KEY4) FLAG2=1250;
//调用时间子函数 } // 为调时状态
IF(FLAG1>1) //等时方波驱动蜂鸣器 { FMQ=~FMQ; FLAG1=0; }
SHIJIAN(); //调用时间子函数 DISPLAY(); //调用显示子函数 }
//关闭蜂鸣器 } }
//**************************主函数********************************// VOID MAIN()
{ INIT(); //调用初始化子函数 WHILE(1)
{ CLOCK(); //闹钟子函数 IF(CNT==1||CNT==2||CNT==3) //显示子函数 { DISPLAY1(); } IF(CNT==0||CNT==4||CNT==5||CNT==6||CNT==8)
第 24 页
西安文理学院课程设计报告
{ DISPLAY(); } IF(CNT==7)
{DISPLAY2();} SHIJIAN(); //调用时间子函数 KEY_SCAN(); //调用键盘扫描子函数 IF(HMFLAG>17)
{HMFLAG=0;MIAO2++;}
IF(MIAO2>99) {MIAO2=0;FEN2++;} IF(FEN2>59) {FEN2=0;SHI2++;} IF(SHI2>99) {SHI2=0;} } }
//**************************定时T0中断******************************// VOID TIME0() INTERRUPT 1
{ TH0=0X3C; //初值50MS (65536-50000)/256 TL0=0X0B0; // (65536-50000)%6 FLAG++; //标志位 FLAG1++; FLAG2++; }
//**************************定时T1中断******************************// VOID TIME1() INTERRUPT 3
{ TH1=0XFE; //初值0.5MS (65536-50000)/256 TL1=0X0C; // (65536-50000)%6 HMFLAG++; //标志位 }
第 25 页