基于52单片机电子时钟的设计论文(纯汇编语言编写) 联系客服

发布时间 : 星期日 文章基于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