DIY编程器网

标题: 8279显示电子钟的硬件设计与软件设计 [打印本页]

作者: liyf    时间: 2012-1-16 16:43
标题: 8279显示电子钟的硬件设计与软件设计
可以看看时钟程序是怎么样设计的。
?






?
?
MCS51单片机汇编程序
??Z8279 EQU 08701H ;8279 状态/命令口地址?D8279 EQU 08700H ;8279 数据口地址?LEDMOD EQU 00H;左边输入 八位字符显示?;外部译码键扫描方式,双键互锁?LEDFEQ EQU 2FH;扫描速率?LEDCLS EQU 0C1H ;清除显示 RAM?LEDWR0 EQU 80H;设定的将要写入的显示RAM地址??ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址?AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279;初始化8279?MOV R3,#0H ;时?MOV R2,#0H ;分?MOV R1,#0H ;秒?MOV R6,#0H ;标志?MOV TMOD,#10HMOV TL1,#00H ;50 MS 的时间常数?MOV TH1,#04CHMOV R0,#20SETB TR1SETB ET1SETB EA ;允许中断?WAIT: CJNE R6,#0FFH,WAITLCALL DISPLAYMOV R6,#0SJMP WAIT??INIT8279:;8279初始化子程序?PUSH DPH ;保存现场?PUSH DPLPUSH ACCLCALL DELAY ;延时?MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式?MOVX @DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率?MOVX @DPTR,AMOV A,#LEDCLS ;清除 LED 显示?MOVX @DPTR,ALCALL DELAY ;延时?POP ACC ;恢复现场?POP DPLPOP DPHRET;显示字符子程序?;输入R4,位置 R5,值?DISLED: PUSH DPH ;保存现场?PUSH DPLPUSH ACCMOV A,#LEDWR0 ;置显示起始地址?ADD A,R4 ;加位置偏移量?MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置?MOV DPTR,#LEDSEG ;置显示常数表起始位置?MOV A,R5MOVC A,@A+DPTR;查表?MOV DPTR,#D8279MOVX @DPTR,A ;显示数据?POP ACC ;恢复现场?POP DPLPOP DPHRETDELAY: ;延时子程序?PUSH 0 ;保存现场?PUSH 1MOV 0,#0HDELAY1: MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场?POP 0RET?INT_T1: ;INT_T1中断服务子程序?PUSH DPH ;保护现场?PUSH DPLPUSH ACCPUSH PSWCLR TR1MOV TL1,#00H ;50MS 定时常数?MOV TH1,#4CHSETB TR1DJNZ R0,EXIT ;判断毫秒=0?MOV R0,#20 ;DELAY 1 SECOND?MOV R6,#0FFH ;置秒标志?CJNE R1,#59H,SECOND ;判断秒=59?MOV R1,#99HCJNE R2,#59H,MINUTE ;判断分=59?MOV R2,#99HCJNE R3,#23H,HOUR ;判断时=23?MOV R3,#99HHOUR:
                          
                       
                          
                                MOV A,R3ADD A,#1 ;时加1?DA AMOV R3,AMINUTE:MOV A,R2ADD A,#1 ;分加1?DA AMOV R2,ASECOND:MOV A,R1ADD A,#1 ;秒加1?DA AMOV R1,AEXITOP PSW ;恢复现场?POP ACCPOP DPLPOP DPHRETI ;中断返回?DISPLAY:MOV A,R3ANL A,#0FHMOV R5,AMOV R4,#6LCALL DISLED ;显示小时低位?MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED ;显示小时高位?MOV A,R2ANL A,#0FHMOV R5,AMOV R4,#3LCALL DISLED ;显示分钟低位?MOV A,R2SWAP AANL A,#0FHMOV R5,AMOV R4,#4LCALL DISLED ;显示分钟高位?MOV A,R1ANL A,#0FHMOV R5,AMOV R4,#0LCALL DISLED ;显示秒低位?MOV A,R1SWAP AANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLED ;显示秒高位?RET?LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'?DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'?DB 6DH,02H,08H,00H,59H,0FH,76H;'U,-,_, ,I,O,P, '?END
                          
                       
                          
                               




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2