8279显示电子钟的硬件设计与软件设计
可以看看时钟程序是怎么样设计的。
本文引用地址:http://www.amcfsurvey.com/article/172385.htmZ8279 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:
51单片机相关文章:51单片机教程
评论