基于MCS51单片机的智能时钟控制系统设计方案

来源:华强电子网 作者:—— 时间:2012-10-31 09:49

 

;**************************; 以下为主程序 (检测各键是否按下) 
;***************************MainLoop: 
jb AlarmSetKey,CheckMinuteKey 
call Delay 
jb AlarmSetKey,CheckMinuteKey 
setb ClockMode 
call AlarmSet 
CheckMinuteKey: 
jb MinuteKey,CheckHourKey 
mov a,Minute 
add a,#1 
mov Minute,a 
cjne a,#3ch,NotOver1 
mov Minute,#0 
NotOver1: 
jnb MinuteKey,$ 
CheckHourKey: 
jb HourKey,CheckAlarmA 
mov a,Hour 
add a,#1 
mov Hour,a 
cjne a,#18h,NotOver2 
mov Hour,#0 
NotOver2: 
jnb HourKey,$ 
CheckAlarmA: 
jnb AlarmTimeOnA,CheckAlarmP 
call StartPc; call AlarmProcess 
ajmp ToReturn 
CheckAlarmP: 
jnb AlarmTimeOnP,ToReturn 
call ShutPc 
ToReturn: 
ajmp MainLoop 
;**************************; 定时器Timer0中断服务程序(此程序每8ms执行一次) 
;*************************** 
TimeInt: 
mov th0,#0E0h 
mov tl0,#0bfh 
push acc 
push psw 
SETB rs0 
clr rs1 
d jnz OneSecondCounter,NotoneSecond 
mov OneSecondCounter,#125 
call Clock 
call ConvertoBuffer 
NotoneSecond: 
call ScanDisplay 
pop psw 
pop acc 
reti 
; *************************** 
; 扫描显示子程序 
;*************************** 
ScanDisplay: 
mov r1,#DisplayBuffer 
mov R4,#11111011b 
play: 
mov a,R4 
mov P2,A 
mov A,@R1 
mov DPTR,#TAB 
movc A,@A+DPTR 
mov P0,A 
lcall Delay 
inc R1 
mov A,R4 
jnb ACC.7,ENDOUT 
rl A 
mov R4,A 
ajmp PLAY 
endout: SETB P2.7 
mov P0,#0FFH ret 
TAB:DB 0C0H,0F9H,0A4H,0B0H, 
99H,92H,82H,0F8H,80H,90H,7FH, 
0B7H,0FFH 
;*************************** 
; 时钟内容加1秒的子程序 
;*************************** 
Clock: 
mov a,Second 
add a,#1 
mov Second,a 
cjne a,#3cH,NotOverFlow 
mov Second,#0 
mov a,Minute 
add a,#1 
mov Minute,a 
cjne a,#3cH,NotOverFlow 
mov Minute,#0 
mov a,Hour 
add a,#1 
mov Hour,a 
cjne a,#18H,NotOverFlow 
mov Hour,#0 
NotOverFlow: 
mov a,Second 
jnz NotAlarm 
jnb AlarmAOnOff,PAlarm 
mov a,Minute 
cjne a,AlarmAMinute,PAlarm 
mov a,Hour 
cjne a,AlarmPHour,PAlarm 
ajmp alarming 
PAlarm: 
jnb AlarmPOnOff,NotAlarm 
mov a,Minute 
cjne a,AlarmPMinute,NotAlarm 
mov a,Hour 
cjne a,AlarmPHour,NotAlarm 
ajmp Alarming1 
Alarming: 
setb AlarmTimeOnA 
ajmp NotAlarm 
Alarming1: 
setb AlarmTimeOnP; 
NotAlarm: 
ret 
;*************************** 
; 将时钟内容或闹时设置值转换到显示缓冲区子程序 
;*************************** 
ConvertoBuffer: 
mov r1,#DisplayBuffer 
jb ClockMode,DispAlarmSet 
mov a,Second 
mov DispSecond,a 
mov a,Minute 
mov Dispminute,a 
mov a,Hour 
mov DispHour,a 
ajmp Convert 
DispAlarmSet: 
jb AlarmAOnOff,AlarmAOn 
mov DispSecond,#00h 
jb AlarmPOnOff,AlarmPOn 
mov DispSecond,#00h 
ajmp Convert 
AlarmAOn: 
mov DispSecond,#11 
NextA: 
mov a,AlarmAMinute 
mov Dispminute,a 
mov a,AlarmAHour 
mov DispHour,a 
ajmp Convert 
AlarmPOn: 
mov DispSecond,#11 
NextP: 
mov a,AlarmPMinute 
mov Dispminute,a 
mov a,AlarmPHour 
mov DispHour,a 
Convert: 
mov a,DispSecond 
mov b,#10 
div ab 
mov @r1,b 
inc r1 
mov @r1,a 
inc r1 
mov a,DispMinute 
mov b,#10 
div ab 
mov @r1,b 
inc r1 
mov @r1,a 
inc r1 
mov a,DispHour 
mov b,#10 
div ab 
mov @r1,b 
inc r1 
mov @r1,a 
ret


结束语

该智能时钟控制系统,以AT89C51微处理器为核心,具有集成度高、性能稳定、抗干扰能力强、性价比高的优点。经软件仿真和实际功能验证,证明设计可靠、设计方案可行,在实际应用中有较大的实 用价值。

 

了解更多热点资讯、独家行业透析和分销管理知识,请点击:华强电子信息速递

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子