您的位置:首页单片机51单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

8279显示电子钟的设计与程序源代码

[日期:2008-01-29 ] [来源:东哥开发网(www.picavr.com) 作者:] [字体: (投递新闻)
 

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

 

 

            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
            
            
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐