发布时间 : 星期日 文章基于52单片机电子时钟的设计论文(纯汇编语言编写)更新完毕开始阅读5d18cfa3767f5acfa1c7cdf9
orl a,#30h
acall LcdWrDat inc R0
djnz R2, LcdDspBuf ret
;显示设置——自创字符写入CGRAM的子程序
word: mov a,#40h
lcall LcdWrCmd mov r5,#40
mov dptr,#tab1 mov r4,#0 nextt: mov a,r4
movc a,@a+dptr lcall LcdWrDat inc r4
djnz r5,nextt ret tab1:
db 08h,0fh,12h,0fh,0ah,1fh,02h,00h;年 db 0fh,09h,0fh,09h,0fh,09h,13h,00h;月 db 0fh,09h,09h,0fh,09h,09h,0fh,00h;日
db 06h,0fh,1fh,0fh,07h,1bh,19h,00h;显示闹钟功能开启标示符号 db 15h,15h,04h,11h,1bh,1fh,0eh,00h;显示报时功能开启标示符号
;进入闹钟功能设置显示
display_nz: mov a,#0c2h
acall LcdWrCmd ;确定闹钟时间的首地址 mov R0, #dspba+0 mov R2, #2
acall LcdDspBuf ;显示时
mov a,#3ah ;显示分隔符号 acall LcdWrDat mov R0, #dspba+2 mov R2, #2
acall LcdDspBuf ;显示时
jb BJ,XT ;判断闹钟功能是否开启 mov a,#0c0h acall LcdWrCmd
24
mov a,#03h ;显示闹钟功能开启标示符号 acall LcdWrDat XT: ret
;正常显示设置
display:
mov a,#80h
acall LcdWrCmd ;指明显示的首地址 mov R0, #DspBuf-2 mov R2, #2
acall LcdDspBuf ;显示年份前两位 mov R0, #DspBuf+0 mov R2, #2
acall LcdDspBuf ;显示年后两位 mov a,#00h ;显示汉字年 acall LcdWrDat mov R0, #DspBuf+2 mov R2, #2
acall LcdDspBuf ;显示月份 mov a,#01h ;显示汉月字年 acall LcdWrDat mov R0, #DspBuf+4 mov R2, #2
acall LcdDspBuf ;显示日期 mov a,#02h ;显示汉日字年 acall LcdWrDat mov a,#8ch ;w指明星期的首地址 acall LcdWrCmd mov a,#57h
acall LcdWrDat ;显示w
mov a,#3ah ;显示分隔符号 acall LcdWrDat
mov a,66h ;显示星期值 orl a,#30h
acall LcdWrDat
jb bs,XtT ;判断报时功能是否开启
mov a,#04h ;显示报时功能开启标示符号 acall LcdWrDat XtT:
mov a,#0c2h
acall LcdWrCmd ;确定地址 mov R0, #DspBuf+7 mov R2, #2
25
acall LcdDspBuf ;显示时
mov a,#3ah ;显示分隔符号 acall LcdWrDat mov R0, #DspBuf+9 mov R2, #2
acall LcdDspBuf ;显示分 mov a,#3ah ;显示分隔符号 acall LcdWrDat mov R0, #DspBuf+11 mov R2, #2
acall LcdDspBuf ;显示秒
jb BJ,xyz ;判断闹钟功能是否开启 mov a,#0c0h acall LcdWrCmd
mov a,#03h ;显示闹钟功能开启标示符号 acall LcdWrDat xyz: ret ret
;按键处理
anjian:
mov a,pq anl a,#0fh
cjne a,#0fh,kp1 ret kp1:
mov a,#5 ;设置5ms延时,起到去抖扫描 acall delay mov a,pq anl a,#0fh
cjne a,#0fh,kp2 ret kp2:
JB pq.0,KK1 jnb pq.0,$
lcall anjian1 ret KK1: JB pq.1,KK2 jnb pq.1,$
lcall anjian2 ret KK2:
26
JB pq.2,KK3 jnb pq.2,$
lcall anjian3 ret KK3:
JB pq.3,KK4 jnb pq.3,$
lcall anjian4 KK4: ret
;该子程序根据的KeyCode内容转入各对应的操作程序中
anjian1:
mov a,KeyCode mov dptr,#tab5 add a,KeyCode jnc nadd
inc dph ;KeyCode乘2进位加到DPH中 nadd:
mov r3,a ;暂存
movc a,@a+dptr ;取地址高八位 xch a,r3 ;保存转移地址高8位 inc a
movc a,@a+dptr ;取地址低八位 mov dpl,a ;置转移地址低8位 mov dph,r3 clr a
jmp @a+dptr ret
tab5: dw opr00,opr01,opr02 ,opr03 ;16位转移地址表的首地址
;进入时间调整设置状态
opr00:
setb IsSheZhi
mov r1,#DspBuf+12 ;编辑时间从秒个位开始 mov a,#0fh
acall LcdWrCmd mov a,#0c9h acall LcdWrCmd mov KeyCode,#02h ret
;进入设置闹钟时间状态
27