📄 total.asm
字号:
SDA BIT P1.7 ;I2C的总线结构
CLK BIT P1.6
ADDRESS EQU 70H
CLRLCD EQU 0E0H
MODE EQU 0D8H
DSP EQU 0F0H
RAM EQU 00H
;****************************************************
ORG 00H
LCALL CLEAR
STAR:
STAR1: JNB P3.7,MAIN1
JNB P1.0,MAIN2
AJMP STAR1
CLEAR:
MOV DPTR, #TABLEN0
LCALL MAIN3
RET
MAIN1: MOV DPTR, #TABLE0
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE1
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE2
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE3
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE4
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE5
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE6
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE7
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE8
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE9
LCALL MAIN
LCALL DELAY1M
MOV DPTR, #TABLE01
LCALL MAIN
LJMP STAR
MAIN2: MOV DPTR, #TABLE10
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE11
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE12
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE13
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE14
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE15
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE16
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE17
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE18
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE19
LCALL MAIN3
LCALL DELAY1M
MOV DPTR, #TABLE101
LCALL MAIN3
LJMP STAR
MAIN:
LCALL START ;启动程序
LCALL MODESET ;显示初始化
LCALL DSPLAY ;显示程序
NEXT4: LCALL STOP ;停止程序
RET
MAIN3:
LCALL START ;启动程序
LCALL MODESET ;显示初始化
LCALL DSPLAY31 ;显示程序
NEXT34: LCALL STOP ;停止程序
RET
;*********************************************
MODESET: ;模式设置
MOV A, #ADDRESS ;发送器件地址 70H
LCALL SENDBIT
MOV A, #CLRLCD ;发送清除屏幕地址 E0H
LCALL SENDBIT
MOV A, #MODE ;器件模式设置 D8H
LCALL SENDBIT
MOV A, #DSP ;显示控制 F0H
LCALL SENDBIT
MOV A, #RAM ;发送单元地址 00H
LCALL SENDBIT
RET
;*********************************************
DSPLAY: ;命令输入
MOV R0, #09H ;数据循环数
MOV R2, #00H
DSPLAY1:
MOV A, R2
MOVC A, @A+DPTR
LCALL SENDBIT
INC R2
DJNZ R0, DSPLAY1
RET
DSPLAY31: ;命令输入
;MOV DPTR,#TABLE01
MOV R0, #0FH ;数据循环数
MOV R2, #00H
DSPLAY11:
MOV A, R2
MOVC A, @A+DPTR
LCALL SENDBIT
INC R2
DJNZ R0, DSPLAY11
RET
;*********************************************
SENDBIT: ;发送数据
SETB SDA
LCALL DELAY5US
CLR CLK
MOV R1, #08H
SENDBIT1:
RLC A
MOV SDA, C
LCALL DELAY5US
LCALL CHANGE
DJNZ R1, SENDBIT1
SETB SDA ;最后CLK还要跳变一个电平,WHY???难道还真的有个应答信号??
LCALL DELAY5US
SETB CLK
LCALL DELAY5US
CLR CLK
LCALL DELAY5US
RET
CHANGE:
SETB CLK
LCALL DELAY5US
CLR CLK
LCALL DELAY5US
RET
;*********************************************
START: ;开I2C总线
SETB SDA
LCALL DELAY5US ;SCL = 1,SDA from 1 to 0
SETB CLK
LCALL DELAY5US
CLR SDA
LCALL DELAY5US
CLR CLK
LCALL DELAY5US
SETB SDA
LCALL DELAY5US
RET
;*********************************************
STOP: ;关I2C总线
CLR SDA ;SCL = 1,SDA from 0 to 1
LCALL DELAY5US
SETB CLK
LCALL DELAY5US
SETB SDA
LCALL DELAY5US
CLR CLK
LCALL DELAY5US
RET
;*********************************************
DELAY5US: ;delay5US
NOP
NOP
NOP
NOP
NOP
RET
DELAY1M:
MOV R7,#20
D2: MOV R6,#100
D1: MOV R5,#200
DJNZ R5,$
DJNZ R6,D1
DJNZ R7,D2
RET
TABLE9: ;只显示9的数值
DB 11111100B ;1
DB 11111100B ;2
DB 11111100B ;3
DB 11111100B ;4
DB 11111100B ;5
DB 11111100B ;6
DB 11111100B ;7
DB 00000000B ;8
db 00000000b
TABLE8: ;只显示8的数值
DB 11111110B ;1
DB 11111110B ;2
DB 11111110B ;3
DB 11111110B ;4
DB 11111110B ;5
DB 11111110B ;6
DB 11111110B ;7
DB 00000000B ;8
db 00000000b
TABLE7: ;只显示7的数值
DB 11100000B ;1
DB 11100000B ;2
DB 11100000B ;3
DB 11100000B ;4
DB 11100000B ;5
DB 11100000B ;6
DB 11100000B ;7
DB 00000000B ;8
db 00000000b
TABLE6: ;只显示6的数值
DB 10111110B ;1
DB 10111110B ;2
DB 10111110B ;3
DB 10111110B ;4
DB 10111110B ;5
DB 10111110B ;6
DB 10111110B ;7
DB 00000000B ;8
db 00000000b
TABLE5: ;只显示5的数值
DB 10111100B ;1
DB 10111100B ;2
DB 10111100B ;3
DB 10111100B ;4
DB 10111100B ;5
DB 10111100B ;6
DB 10111100B ;7
DB 00000000B ;8
db 00000000b
TABLE4: ;只显示4的数值
DB 01101100B ;1
DB 01101100B ;2
DB 01101100B ;3
DB 01101100B ;4
DB 01101100B ;5
DB 01101100B ;6
DB 01101100B ;7
DB 00000000B ;8
db 00000000b
TABLE3: ;只显示3的数值
DB 11110100B ;1
DB 11110100B ;2
DB 11110100B ;3
DB 11110100B ;4
DB 11110100B ;5
DB 11110100B ;6
DB 11110100B ;7
DB 00000000B ;8
db 00000000b
TABLE2: ;只显示2的数值
DB 11010110B ;1
DB 11010110B ;2
DB 11010110B ;3
DB 11010110B ;4
DB 11010110B ;5
DB 11010110B ;6
DB 11010110B ;7
DB 00000000B ;8
db 00000000b
TABLE1: ;只显示1的数值
DB 01100000B ;1
DB 01100000B ;2
DB 01100000B ;3
DB 01100000B ;4
DB 01100000B ;5
DB 01100000B ;6
DB 01100000B ;7
DB 00000000B ;8
db 00000000b
TABLE0: ;只显示0的数值
DB 11111010B ;1
DB 11111010B ;2
DB 11111010B ;3
DB 11111010B ;4
DB 11111010B ;5
DB 11111010B ;6
DB 11111010B ;7
DB 00000000B ;8
db 00000000b
TABLE01: ;全部显示
DB 11111111B ;1
DB 11111111B ;2
DB 11111111B ;3
DB 11111111B ;4
DB 11111111B ;5
DB 11111111B ;6
DB 11111111B ;7
DB 11111111B ;8
db 11111111b
;****************************************************8
TABLE19: ;只显示9的数值
DB 0CFH ;1
DB 0CFH ;2
DB 0CFH ;3
DB 0CFH ;4
DB 0CFH ;5
DB 0CFH ;6
DB 0CFH ;7
DB 0CFH ;8
DB 0CFH ;9
DB 0CFH ;10
DB 0CFH ;11
DB 00H ;12
DB 00H ;13
DB 00H ;14
DB 00H ;15
TABLE18: ;只显示8的数值
DB 11101111B ;1
DB 11101111B ;2
DB 11101111B ;3
DB 11101111B ;4
DB 11101111B ;5
DB 11101111B ;6
DB 11101111B ;7
DB 11101111B ;8
DB 11101111B ;9
DB 11101111B ;10
DB 11101111B ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE17: ;只显示7的数值
DB 0EH ;1
DB 0EH ;2
DB 0EH ;3
DB 0EH ;4
DB 0EH ;5
DB 0EH ;6
DB 0EH ;7
DB 0EH ;8
DB 0EH ;9
DB 0EH ;10
DB 0EH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE16: ;只显示6的数值
DB 0EBH ;1
DB 0EBH ;2
DB 0EBH ;3
DB 0EBH ;4
DB 0EBH ;5
DB 0EBH ;6
DB 0EBH ;7
DB 0EBH ;8
DB 0EBH ;9
DB 0EBH ;10
DB 0EBH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE15: ;只显示5的数值
DB 0CBH ;1
DB 0CBH ;2
DB 0CBH ;3
DB 0CBH ;4
DB 0CBH ;5
DB 0CBH ;6
DB 0CBH ;7
DB 0CBH ;8
DB 0CBH ;9
DB 0CBH ;10
DB 0CBH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE14: ;只显示4的数值
DB 0C6H ;1
DB 0C6H ;2
DB 0C6H ;3
DB 0C6H ;4
DB 0C6H ;5
DB 0C6H ;6
DB 0C6H ;7
DB 0C6H ;8
DB 0C6H ;9
DB 0C6H ;10
DB 0C6H ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE13: ;只显示3的数值
DB 4FH ;1
DB 4FH ;2
DB 4FH ;3
DB 4FH ;4
DB 4FH ;5
DB 4FH ;6
DB 4FH ;7
DB 4FH ;8
DB 4FH ;9
DB 4FH ;10
DB 4FH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE12: ;只显示2的数值
DB 6DH ;1
DB 6DH ;2
DB 6DH ;3
DB 6DH ;4
DB 6DH ;5
DB 6DH ;6
DB 6DH ;7
DB 6DH ;8
DB 6DH ;9
DB 6DH ;10
DB 6DH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE11: ;只显示1的数值
DB 06H ;1
DB 06H ;2
DB 06H ;3
DB 06H ;4
DB 06H ;5
DB 06H ;6
DB 06H ;7
DB 06H ;8
DB 06H ;9
DB 06H ;10
DB 06H ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE10: ;只显示0的数值
DB 0AFH ;1
DB 0AFH ;2
DB 0AFH ;3
DB 0AFH ;4
DB 0AFH ;5
DB 0AFH ;6
DB 0AFH ;7
DB 0AFH ;8
DB 0AFH ;9
DB 0AFH ;10
DB 0AFH ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
TABLE100: ;除了点和数值外的数
DB 00010000B ;1
DB 00010000B ;2
DB 00010000B ;3
DB 00000000B ;4
DB 00000000B ;5
DB 00000000B ;6
DB 00000000B ;7
DB 00000000B ;8
DB 00010000B ;9
DB 00010000B ;10
DB 00010000B ;11
DB 11111111B ;12
DB 11111111B ;13
DB 11111111B ;14
DB 11111111B ;15
TABLE101: ;全部显示
DB 11111111B ;1
DB 11111111B ;2
DB 11111111B ;3
DB 11111111B ;4
DB 11111111B ;5
DB 11111111B ;6
DB 11111111B ;7
DB 11111111B ;8
DB 11111111B ;9
DB 11111111B ;10
DB 11111111B ;11
DB 11111111B ;12
DB 11111111B ;13
DB 11111111B ;14
DB 11111111B ;15
TABLEN0:
DB 00000000B ;1
DB 00000000B ;2
DB 00000000B ;3
DB 00000000B ;4
DB 00000000B ;5
DB 00000000B ;6
DB 00000000B ;7
DB 00000000B ;8
DB 00000000B ;9
DB 00000000B ;10
DB 00000000B ;11
DB 00000000B ;12
DB 00000000B ;13
DB 00000000B ;14
DB 00000000B ;15
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -