当前位置:首页 > 电源 > 数字电源
[导读]可以看看时钟程序是怎么样设计的。 MCS51单片机汇编程序 Z8279 EQU 08701H ;8279 状态/命令口地址 D8279 EQU 08700H ;8279 数据口地址 LEDMOD EQU 00H;左边输入 八位字符显示 ;外部译码键扫描方式,双键互锁

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

 

 

 

MCS51单片机汇编程序

 

 

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:[!--empirenews.page--]

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭