📄 成功版时钟.asm
字号:
OE EQU P3.0
DIR EQU P3.7
E EQU P3.5
RS EQU P2.1
RW EQU P2.0
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP SERVE
MAIN: MOV TMOD,#01H
MOV 20H,#0AH ;中断次数
CLR A
MOV 30H,A ;时单元置零
MOV 31H,A ;分单元置零
MOV 32H,A ;秒单元置零
MOV B,#0AH
SETB ET1
SETB EA
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
SJMP $
SERVE: PUSH PSW
PUSH ACC
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 20H,RETUNT
MOV 20H,#0AH
MOV A,#01H
ADD A,32H ;秒位加1
MOV 32H,A
ACALL DISPLAY
MOV A,32H
CJNE A,#60,RETUNT
MOV 32H,#00H
MOV A,#01H
ADD A,31H
MOV 31H,A
ACALL DISPLAY
MOV A,31H
CJNE A,#60,RETUNT
MOV 31H,#00H
MOV A,#01H
ADD A,30H
MOV 30H,A
ACALL DISPLAY
MOV A,30H
CJNE A,#24,RETUNT
MOV 30H,#00H
RETUNT: POP ACC
POP PSW
RETI
;************************************************************************************************************
DISPLAY: ACALL SET0
SETB E
MOV A,#01H
ACALL WR_COM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY ;延时
SETB E
MOV A,#30H ;功能设置,8位接口,1行显示,5*7点阵
ACALL WR_COM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
SETB E
ACALL DELAY
MOV A,#0EH ;开显示,有光标,有闪烁
ACALL WR_COM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY
;PA口地址
SETB E
MOV A,#06H ;显示移位,AC为增量方式
ACALL WR_COM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
;*******************************************************************************************************显示时位
ACALL DELAY
MOV B,#0AH
MOV A,30H
DIV AB
CLR PSW.6
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY
MOV A,B
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E ;FEFF SHUJU
MOV A,#00H
ACALL WR_DATA
CLR E
;****************************************************************************************显示短线
ACALL DELAY
SETB E
MOV A,#2DH
ACALL WR_DATA
CLR E
MOV A,#00H
ACALL WR_DATA
CLR E
;*********************************************************************显示分位
ACALL DELAY
MOV B,#0AH
MOV A,31H
DIV AB
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY
MOV A,B
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E ;7EFF SHUJU
MOV A,#00H
ACALL WR_DATA
CLR E
;********************************************************************************************显示短线
ACALL DELAY
SETB E
MOV A,#2DH
ACALL WR_DATA
CLR E
;选通lcd
MOV A,#00H
SETB E
ACALL WR_DATA
CLR E
;**********************************************************************显示秒位
ACALL DELAY
MOV B,#0AH
MOV A,32H ;8的ASCII码
DIV AB
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E ;选通lcd
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY
MOV A,B
DA A
ADD A,#30H
SETB E
ACALL WR_DATA
CLR E
SETB E ; 选通lcd的数据寄存器
MOV A,#00H
ACALL WR_DATA
CLR E
RET
;********************************************************
WR_DATA:
CLR OE
SETB DIR
SETB RS
CLR RW
MOV DPTR,#0FF7CH
MOVX @DPTR,A
RET
WR_COM:
CLR OE
SETB DIR
CLR RS
CLR RW
MOV DPTR,#0FF7CH
MOVX @DPTR,A
RET
;*************************************************************************************************
;设定下8255的工作方式
SET0: MOV A,#80H
MOV DPTR,#0FF7FH
MOVX @DPTR,A
RET
;延时
;DELAY: MOV R1,#02H
;LOOP1: MOV R2,#0F9H
;LOOP2: NOP
; NOP
;DJNZ R2,LOOP2
;DJNZ R1,LOOP1
;RET
;END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -