8279显示电子钟的设计与程序源代码
2012-07-25
标签: 8279

可以看看时钟程序是怎么样设计的。

        Z8279 EQU 08701H       ;8279 状态/命令口地址
        D8279 EQU 08700H       ;8279 数据口地址
        LEDMOD EQU 00H ;左边输入 八位字符显示
        
        ;外部译码键扫描方式,双键互锁
        LEDFEQ EQU 2FH ;扫描速率
        LEDCLS EQU 0C1H;清除显示 RAM
        LEDWR0 EQU 80H ;设定的将要写入的显示RAM地址
        
        ORG 0000H
        AJMP START
        ORG 001BH      ;INT T1 入口地址
        AJMP INT_T1
        ORG 0040H
START:  
        MOV SP,#60H
        LCALL INIT8279 ;初始化8279
        MOV R3,#0H     ;时
        MOV R2,#0H     ;分
        MOV R1,#0H     ;秒
        MOV R6,#0H     ;标志
        MOV TMOD,#10H
        MOV TL1,#00H   ;50 MS 的时间常数
        MOV TH1,#04CH
        MOV R0,#20
        SETB TR1
        SETB ET1
        SETB EA        ;允许中断
WAIT:   CJNE R6,#0FFH,WAIT
        LCALL DISPLAY
        MOV R6,#0
        SJMP WAIT
        
        
INIT8279:
        
        
        ;8279初始化子程序
        PUSH DPH       ;保存现场
        PUSH DPL
        PUSH ACC
        LCALL DELAY    ;延时
        MOV DPTR ,#Z8279
        MOV A,#LEDMOD  ;置8279工作方式
        MOVX @DPTR,A
        MOV A,#LEDFEQ  ;置键盘扫描速率
        MOVX @DPTR,A
        MOV A,#LEDCLS  ;清除 LED 显示
        MOVX @DPTR,A
        LCALL DELAY    ;延时
        POP ACC        ;恢复现场
        POP DPL
        POP DPH
        RET
        
        ;显示字符子程序
        ;输入R4,位置 R5,值
DISLED: PUSH DPH       ;保存现场
        PUSH DPL
        PUSH ACC
        MOV A,#LEDWR0  ;置显示起始地址
        ADD A,R4       ;加位置偏移量
        MOV DPTR,#Z8279
        MOVX @DPTR,A   ;设定显示位置
        MOV DPTR,#LEDSEG       ;置显示常数表起始位置
        MOV A,R5
        MOVC A,@A+DPTR ;查表
        MOV DPTR,#D8279
        MOVX @DPTR,A   ;显示数据
        POP ACC        ;恢复现场
        POP DPL
        POP DPH
        RET
        
DELAY:  ;延时子程序
        PUSH 0         ;保存现场
        PUSH 1
        MOV 0,#0H
DELAY1: MOV 1,#0H
        DJNZ 1,$
        DJNZ 0,DELAY1
        POP 1          ;恢复现场
        POP 0
        RET
        
INT_T1: ;INT_T1中断服务子程序
        PUSH DPH       ;保护现场
        PUSH DPL
        PUSH ACC
        PUSH PSW
        CLR TR1
        MOV TL1,#00H   ;50MS 定时常数
        MOV TH1,#4CH
        SETB TR1
        DJNZ R0,EXIT   ;判断毫秒=0
        MOV R0,#20     ;DELAY 1 SECOND
        MOV R6,#0FFH   ;置秒标志
        CJNE R1,#59H,SECOND    ;判断秒=59
        MOV R1,#99H
        CJNE R2,#59H,MINUTE    ;判断分=59
        MOV R2,#99H
        CJNE R3,#23H,HOUR      ;判断时=23
        MOV R3,#99H
HOUR:   
        MOV A,R3
        ADD A,#1       ;时加1
        DA A
        MOV R3,A
MINUTE: 
        MOV A,R2
        ADD A,#1       ;分加1
        DA A
        MOV R2,A
SECOND: 
        MOV A,R1
        ADD A,#1       ;秒加1
        DA A
        MOV R1,A
EXIT:   
        POP PSW        ;恢复现场
        POP ACC
        POP DPL
        POP DPH
        RETI           ;中断返回
        
DISPLAY:
        MOV A,R3
        ANL A,#0FH
        MOV R5,A
        MOV R4,#6
        LCALL DISLED   ;显示小时低位
        MOV A,R3
        SWAP A
        ANL A,#0FH
        MOV R5,A
        MOV R4,#7
        LCALL DISLED   ;显示小时高位
        MOV A,R2
        ANL A,#0FH
        MOV R5,A
        MOV R4,#3
        LCALL DISLED   ;显示分钟低位
        MOV A,R2
        SWAP A
        ANL A,#0FH
        MOV R5,A
        MOV R4,#4
        LCALL DISLED   ;显示分钟高位
        MOV A,R1
        ANL A,#0FH
        MOV R5,A
        MOV R4,#0
        LCALL DISLED   ;显示秒低位
        MOV A,R1
        SWAP A
        ANL A,#0FH
        MOV R5,A
        MOV R4,#1
        LCALL 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
        
        


可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号