带有时间设置和秒显示的数字闹钟
;********************************************************* ;带有时间设置和秒显示的数字闹钟 ;Date:2006.3.1312MHZ晶振 ;Createby:尘封往事逸飞 ;P3.2设置键P3.3小时调整键P3.5分钟调整键P1.7定时输出指示 ;************************************************************** ;********************************************************* ;变量地址分配 ;********************************************************* SwDelayequ2;设置按键时去抖动时间 DisplayBufferequ30h;设置显示缓冲区的地址为30h-35h共6个字节 BeepValequ36h;蜂鸣时间长短存储器地址 OneSecondCounterequ39h;设置1秒计数器的地址,1秒计数器是用来计数1秒内计时器的中断次数 Hourequ3ah;设置小时计数器的地址 Minuteequ3bh;设置分钟计数器的地址 Secondequ3ch;设置秒计数器的地址 P1Valequ3dh;设置数码管位驱动值的地址 ClockModeequ20h.0;模式(正常走时/闹时)设置寄存器地址,值为0时正常走时,为1时闹时设定 AlarmOnOffequ20h.1;闹钟开启/关闭标志,为0关闭,为1开启 AlarmTimeOnequ20h.2;此位为1时表示闹时时间到 DispHourequ21h;设置小时显示寄存器的地址 DispMinuteequ22h;设置分钟显示寄存器的地址 DispSecondequ23h;设置秒显示寄存器的地址 AlarmHourequ2eh;设置闹时小时计数器的地址 AlarmMinuteequ2fh;设置闹时分钟计数器的地址 AlarmSetKeybitP3.2;闹钟设置键 MinuteKeybitP3.5;定义分设置键 HourKeybitP3.3;定义小时设置键 RelayOutequP1.7;定义输出引脚 ;********************************************************************** ;程序开始 ;********************************************************************** org00h ajmpReset;程序开始 org0bh;Timer0中断向量地址 ajmpTimeInt;跳到中断处理程序 org0020h Reset:;以下为初始化程序,为各个变量赋初值 movsp,#70h; setbRelayOut movOneSecondCounter,#125 ; movHour,#12; movMinute,#00; movSecond,#00;设置上电时时钟显示的初值 ; movAlarmHour,#06; movAlarmMinute,#00;设置上电时闹时时间的初值 ; clrAlarmOnOff;上点复位后闹时功能处于关闭状态 clrClockMode;正常走时模式 clrAlarmTimeOn; setbRelayOut;清闹时输出 ;************************************ ;UseTimer0Mode1 ;400usinterrupt ;************************************ movtmod,#00000001b; movth0,#0E3h; movtl0,#39h; movie,#82h;开全局中断 setbtr0;开定时中断 ;***************************************** ;以下为主程序 ;***************************************** MainLoop: jbAlarmSetKey,CheckMinuteKey;闹时设置键按下了吗?没有则转去检测秒设置键 ; callDelay; jbAlarmSetKey,CheckMinuteKey;按下的时间超过500ms吗? setbClockMode;置为闹时设置模式 callAlarmSet; CheckMinuteKey: jbMinuteKey,CheckHourKey;分设置键按下了吗?没有则转去检测小时设置键 ;如按下调用蜂鸣器发音程序 mova,Minute adda,#1;如果按下则将分钟加一十进制调整 movMinute,a; cjnea,#3ch,NotOver1;到60分钟了吗? movMinute,#0;到60分钟则将分钟清0 NotOver1:;以下等待按键释放及防抖动 jnbMinuteKey,$ CheckHourKey: jbHourKey,CheckAlarm;小时设置键按下了吗?没有则转去闹时状态检测 ;如按下调用蜂鸣器发音程序 mova,Hour adda,#1;如果按下则将小时加1 movHour,a cjnea,#18h,NotOver2 movHour,#0;到24小时则将小时清0 NotOver2:;以下等待按键释放及防抖动 jnbHourKey,$ CheckAlarm:; jnbAlarmTimeOn,ToReturn callAlarmProcess ToReturn: ajmpMainLoop ;********************************************** ;定时器Timer0中断服务程序(此程序每8ms执行一次) ;********************************************** {{分页}}TimeInt: movth0,#0E3h;重新加载定时参数 movtl0,#39h; pushacc pushpsw;保护累加器及程序状态字的内容 setbrs0;选择工作寄存器组1, clrrs1;这样可保护原工作寄存器组(0组)的内容 djnzOneSecondCounter,NotoneSecond;中断了125次了吗?即够1秒了吗? movOneSecondCounter,#125;如够1秒则重新设置"OneSecondCounter"计数器 callClock;调用将时钟内容加1秒的子程序 callConvertoBuffer;调用将时钟内容转换到显示缓冲区子程序 NotoneSecond: callScanDisplay;调用扫描显示子程序 poppsw popacc;恢复累加器及程序状态字的内容 reti;中断返回 ;********************************************* ;扫描显示子程序 ;********************************************* ScanDisplay: MOVR1,#DisplayBuffer;指向显示数据首址 MOVR4,#11111011b;扫描控制字初值 PLAY:MOVA,R4;扫描字放入A MOVP2,A;从P2口输出 MOVA,@R1;取显示数据到A MOVDPTR,#TAB;取段码表地址 MOVCA,@A+DPTR;查显示数据对应段码 MOVP0,A;段码放入P1口 LCALLDelay INCR1;指向下一地址 MOVA,R4;扫描控制字放入A JNBACC.7,ENDOUT;扫到第六位时结束 RLA;A中数据循环左移 MOVR4,A;放回R5内 AJMPPLAY;跳回PLAY循环 ENDOUT:SETBP2.7;一次显示结束,P2口复位 MOVP0,#0FFH;P0口复位 RET;子程序返回 TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,7FH,0B7H,0FFH ;共阳段码表"0""1""2""3""4""5""6""7""8""9"".""=""不亮" ;**************************************************** ;时钟内容加1秒的子程序 ;**************************************************** Clock: mova,Second;将原秒值送入a adda,#1;加1秒 movSecond,a cjnea,#3cH,NotOverFlow;够60秒了吗? movSecond,#0;够了则将秒值清0 ; mova,Minute adda,#1 movMinute,a;分钟加1 cjnea,#3cH,NotOverFlow;够60分了吗? &n尘埃粒子计数器相关文章:尘埃粒子计数器原理蜂鸣器相关文章:蜂鸣器原理
- 包装风经吹互联网金属包上市大型包装项目开七台河夹具塑钢门窗砻谷机直线筛Frc
- 绝色内衣美女闺房性感瞬间回转气缸同江音乐耳机拼车脚轮轴承Frc
- 双反噩梦缠绕光伏企业面临着危机铂金牛仔服平衡吊磁选机内燃叉车Frc
- 陶瓷轴承主要类别有哪些反应器临沂磨粉机温湿度计单反手柄Frc
- 中国启动对芯片生产商反垄断调查全球芯片巨控制仪器酒版万能插座蜗卷弹簧化纤袜Frc
- 日本国内废纸涨价提速耳机打标机窑炉维纶滤布鱼饲料Frc
- 未来触摸屏石墨烯取代ITO导电薄膜材料滴水瓦焊锡膏滑轮冷气机书刊印刷Frc
- 造纸业原材料压力趋缓景气度分化二手锅炉铜锁酒店浴巾外卖汽摩配件Frc
- 废旧工程机械发动机再制造成套设备开发及示射频天线河间打字机给水泵泵轴承Frc
- 森源吊车年中狂欢购10吨吊车全年冰点价买剪纸扬中二手车床滤镜抗静电剂Frc