📄 ttt.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
MAIN:
ACALL KEY1
CJNE A,#08H,CLOCK
ACALL ROT8
;时钟程序************************************************
CLOCK:
AJMP MAIN1
ORG 001BH
AJMP SERVE
MAIN1: MOV TMOD,#10H
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 WRCOM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY ;延时
SETB E
MOV A,#30H ;功能设置,8位接口,1行显示,5*7点阵
ACALL WRCOM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
SETB E
ACALL DELAY
MOV A,#0EH ;开显示,有光标,有闪烁
ACALL WRCOM
CLR E
SETB E
MOV A,#00H
ACALL WR_DATA
CLR E
ACALL DELAY
;PA口地址
SETB E
MOV A,#06H ;显示移位,AC为增量方式
ACALL WRCOM
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
;*************************************************************************************************
;设定下8255的工作方式
SET0: MOV A,#80H
MOV DPTR,#0FF7FH
MOVX @DPTR,A
RET
;延时
DELAY: MOV R1,#01H
TT: MOV R2,#0F9H
SS: NOP
NOP
DJNZ R2,SS
DJNZ R1,TT
RET
;********************************************
ROT8:
MAIN2:
;SS:
;CLR OE
;SETB DIR
;MOV P0,#55H
;MOV P0,#0
;JMP SS
MOV A,#80H
MOV DPTR,#0FF7FH
MOVX @DPTR,A
CLR OE
SETB DIR
MOV A,#38H
SETB E
CALL WRCOM
CLR E
SETB E
MOV A,#38H
CALL WRCOM
CLR E
SETB E
MOV A,#38H
CALL WRCOM
CLR E
SETB E
MOV A,#38H
CALL WRCOM
CLR E
SETB E
MOV A,#38H
CALL WRCOM
CLR E
MOV A,#38H
SETB E
CALL WRCOM
CLR E
MOV A,#38H
SETB E
CALL WRCOM
CLR E
;初始化---------------------------------------------
MOV A,#30H;8位2行5x7点阵
CALL WRCOM
CLR E
SETB E
MOV A,#0CH;显示器开、光标开、闪烁开
CALL WRCOM
CLR E
SETB E
MOV A,#1CH
CALL WRCOM
CLR E
SETB E
MOV A,#06H;文字不动,光标自动右移
CALL WRCOM
CLR E
SETB E
MOV A,#01H
CALL WRCOM
CLR E
;写命令--------------------------------------------------------
;ACALL CLRER
;SETB E
;MOV A,#'8'
;CALL WR_DATA
;CLR E
;CALL DL1S
START:
MOV R4,#00H
FIRST:
ACALL CLRER
ACALL ADDRESS
ACALL WRITE_8
ACALL DLNS
CJNE R4,#08H,FIRST
MOV R4,#40H
SECOND:
ACALL CLRER
ACALL ADDRESS
ACALL WRITE_8
ACALL DLNS
CJNE R4,#48H,SECOND
ACALL START
DLNS:
MOV R5,#33H
FLAG7: MOV R7,#0AH
FLAG8: MOV R6,#0F9H
FLAG9: NOP
NOP
DJNZ R6,FLAG9
DJNZ R7,FLAG8
DJNZ R5,FLAG7
RET
CLRER:
SETB E
MOV A,#01H
ACALL WRCOM
CLR E
RET
;****************************
ADDRESS:
SETB E
MOV A,#80H
ADD A,R4
CALL WRCOM
CLR E
RET
;***************************
WRITE_8:
SETB E
MOV A,#'8'
ACALL WR_DATA
CLR E
INC R4
RET
;*******************************
WRCOM:
CLR OE
SETB DIR
CLR RS
CLR RW
MOV DPTR,#0FF7CH
MOVX @DPTR,A
ACALL DL5MS
RET
;写数据----------------------------------
WR_DATA:
CLR OE
SETB DIR
SETB RS
CLR RW
SETB E
MOV DPTR,#0FF7CH
MOVX @DPTR,A
ACALL DL5MS
RET
;YANSHI-------------------------------------
DL5MS:
MOV R7,#0AH
LOOP8: MOV R6,#0F9H ;F9
LOOP9: NOP
NOP
DJNZ R6,LOOP9
DJNZ R7,LOOP8
RET
DL1S:
MOV R5,#03H
LOOP3: MOV R7,#0FFH
LOOP1: MOV R6,#0F9H
LOOP2: NOP
NOP
DJNZ R6,LOOP2
DJNZ R7,LOOP1
DJNZ R5,LOOP3
RET
KEY1:
ACALL KS1
JNZ LK1
AJMP KEY1
KS1:
MOV DPTR,#0FF7DH
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#0FF7EH
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
LK1:
ACALL T12MS
ACALL KS1
JNZ LK2
AJMP KEY1
LK2:
MOV R2,#0FEH
MOV R4,#00H
LK4:
MOV DPTR,#0FF7DH
MOV A,R2
MOVX @DPTR,A
INC DPTR
INC DPTR
MOVX A,@DPTR
JB ACC.0,LONE
MOV A,#00H
AJMP LKP
LONE:
JB ACC.1,LTWO
MOV A,#08H
AJMP LKP
LTWO:
JB ACC.2,LTHI
MOV A,#10H
AJMP LKP
LTHI:
JB ACC.3,NEXT
MOV A,#18H
LKP:
ADD A,R4
PUSH ACC
LK3:
ACALL KS1
JNZ LK3
POP ACC
RET
NEXT:
MOV A,R2
INC R4
JNB ACC.7,KND
CPL A
AJMP LK4
KND:
AJMP KEY1
T12MS:
MOV R6,#18H
TM:
MOV R7,#0FFH
TM7:
DJNZ R7,TM7
DJNZ R6,TM
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -