📄 code.asm
字号:
DB 01FH,03FH,07FH,07FH,0FFH,0FFH,0E0H,0C0H
DB 000H,000H,0C3H,0CFH,0FFH,0FFH,07FH,07FH
DB 03FH,01FH,00FH,000H,000H,000H,000H,000H
DISP6TAB2: DB 000H,000H,000H,000H,01FH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,030H
DB 030H,070H,087H,0C7H,0E7H,0E7H,0E7H,0E3H
DB 0E3H,0C1H,080H,000H,000H,000H,000H,000H
DISP6TAB3: DB 000H,000H,000H,000H,0F8H,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,000H,080H
DB 000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,03FH,000H,000H,000H,000H
DISP6TAB4: DB 000H,000H,000H,000H,000H,080H,0E0H,0F0H
DB 0F8H,0FCH,0FEH,0FEH,0FFH,0FFH,003H,000H
DB 000H,003H,0FFH,0FFH,0FFH,0FEH,0FEH,0FCH
DB 0F8H,0F0H,0E0H,000H,000H,000H,000H,000H
DISP7: MOV A, R2
MOV DPTR,#DISP7TAB1
MOVC A,@A+DPTR
MOV D1, A
MOV A, R2
MOV DPTR,#DISP7TAB2
MOVC A,@A+DPTR
MOV D2, A
MOV A, R2
MOV DPTR,#DISP7TAB3
MOVC A,@A+DPTR
MOV D3, A
MOV A, R2
MOV DPTR,#DISP7TAB4
MOVC A,@A+DPTR
MOV D4, A
LJMP SHOW
DISP7TAB1: DB 000H,000H,000H,000H,000H,000H,000H,07FH
DB 0FFH,03EH,03EH,07EH,07EH,0FEH,0FEH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,07FH,07FH,07EH
DB 07CH,0F8H,0E0H,000H,000H,000H,000H,000H
DISP7TAB2: DB 000H,000H,000H,000H,000H,000H,0C0H,0C0H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 001H,003H,007H,00FH,03FH,038H,060H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DISP7TAB3: DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,001H,00FH,01FH,07FH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,001H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DISP7TAB4: DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,0F8H,0FCH,0FEH,0FFH,0FFH
DB 0FFH,0FFH,0FEH,0FEH,0F8H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DISP8: MOV A, R2
MOV DPTR,#DISP8TAB1
MOVC A,@A+DPTR
MOV D1, A
MOV A, R2
MOV DPTR,#DISP8TAB2
MOVC A,@A+DPTR
MOV D2, A
MOV A, R2
MOV DPTR,#DISP8TAB3
MOVC A,@A+DPTR
MOV D3, A
MOV A, R2
MOV DPTR,#DISP8TAB4
MOVC A,@A+DPTR
MOV D4, A
MOV A, R2
LJMP SHOW
DISP8TAB1: DB 000H,000H,000H,000H,000H,007H,01FH,03FH
DB 07FH,07FH,0FFH,0FFH,0FFH,0FFH,0C0H,000H
DB 000H,0C0H,0FFH,0FFH,0FFH,0FFH,07FH,07FH
DB 03FH,01FH,007H,000H,000H,000H,000H,000H
DISP8TAB2: DB 000H,000H,000H,000H,000H,0E0H,0F0H,0F8H
DB 0FCH,0FCH,0FEH,0FFH,0FFH,0FFH,003H,000H
DB 000H,003H,0FFH,0FFH,0FFH,0FEH,0FCH,0FCH
DB 0F8H,0F0H,0E0H,000H,000H,000H,000H,000H
DISP8TAB3: DB 000H,000H,000H,000H,007H,01FH,03FH,07FH
DB 07FH,0FFH,0FFH,0FFH,0FFH,0FFH,080H,000H
DB 000H,080H,0FFH,0FFH,0FFH,0FFH,0FFH,07FH
DB 07FH,03FH,01FH,007H,000H,000H,000H,000H
DISP8TAB4: DB 000H,000H,000H,000H,0E0H,0F8H,0FCH,0FEH
DB 0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,007H,003H
DB 003H,007H,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH
DB 0FEH,0FCH,0F8H,0E0H,000H,000H,000H,000H
DISP9: MOV A, R2
MOV DPTR,#DISP9TAB1
MOVC A,@A+DPTR
MOV D1, A
MOV A, R2
MOV DPTR,#DISP9TAB2
MOVC A,@A+DPTR
MOV D2, A
MOV A, R2
MOV DPTR,#DISP9TAB3
MOVC A,@A+DPTR
MOV D3, A
MOV A, R2
MOV DPTR,#DISP9TAB4
MOVC A,@A+DPTR
MOV D4, A
LJMP SHOW
DISP9TAB1: DB 000H,000H,000H,000H,001H,007H,00FH,01FH
DB 03FH,07FH,07FH,0FFH,0FFH,0FFH,0E0H,0C0H
DB 000H,0C0H,0C0H,0FFH,0FFH,07FH,03FH,03FH
DB 01FH,00FH,003H,000H,000H,000H,000H,000H
DISP9TAB2: DB 000H,000H,000H,000H,0FCH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,001H,000H
DB 001H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,01FH,000H,000H,000H
DISP9TAB3: DB 000H,000H,000H,000H,000H,000H,081H,0C3H
DB 0C7H,0E7H,0E7H,0E7H,0E7H,0E3H,0E1H,0C0H
DB 080H,000H,000H,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0F8H,000H,000H,000H
DISP9TAB4: DB 000H,000H,000H,000H,000H,000H,0F0H,0F8H
DB 0FCH,0FEH,0FEH,0FFH,0FFH,0F7H,0C3H,000H
DB 000H,003H,007H,0FFH,0FFH,0FEH,0FEH,0FCH
DB 0F8H,0F0H,0C0H,000H,000H,000H,000H,000H
DISPT: MOV A, R2
MOV DPTR,#DISPTTAB1
MOVC A,@A+DPTR
MOV D1, A
MOV A, R2
MOV DPTR,#DISPTTAB2
MOVC A,@A+DPTR
MOV D2, A
MOV A, R2
MOV DPTR,#DISPTTAB3
MOVC A,@A+DPTR
MOV D3, A
MOV A, R2
MOV DPTR,#DISPTTAB4
MOVC A,@A+DPTR
MOV D4, A
LJMP SHOW
DISPTTAB1: DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 01H,02H,04H,08H,10H,20H,40H,80H
DISPTTAB2: DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 01H,02H,04H,08H,10H,20H,40H,80H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DISPTTAB3: DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 01H,02H,04H,08H,10H,20H,40H,80H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DISPTTAB4: DB 01H,02H,04H,08H,10H,20H,40H,80H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
SHOW:
MOV A,D1 ;用于第一位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
SHOW1: RRC A ;左移A,待发射的数据压入发射仓C
MOV HC595DS1,C ;数据发射,目标74HC595一区数据端!
SETB HC595SH ;上升沿,74HC595一区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,SHOW1 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB HC595ST1 ;发射完8位用上升沿命令74HC595一区做好存储工作
NOP ;喘口气
CLR HC595ST1 ;存储端回归
;报告长官,74HC595一区数据发射完毕!准备二区发射
MOV A,D2 ;用于第二位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
SHOW2: RRC A ;左移A,待发射的数据压入发射仓C
MOV HC595DS2,C ;数据发射,目标74HC595二区数据端!
SETB HC595SH ;上升沿,74HC595二区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,SHOW2 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB HC595ST2 ;发射完8位用上升沿命令74HC595二区做好存储工作
NOP ;喘口气
CLR HC595ST2 ;存储端回归
;报告长官,74HC595二区数据发射完毕!准备三区发射
MOV A,D3 ;用于第三位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
SHOW3: RRC A ;左移A,待发射的数据压入发射仓C
MOV HC595DS3,C ;数据发射,目标74HC595三区数据端!
SETB HC595SH ;上升沿,74HC595三区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,SHOW3 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB HC595ST3 ;发射完8位用上升沿命令74HC595三区做好存储工作
NOP ;喘口气
CLR HC595ST3 ;存储端回归
;报告长官,74HC595三区数据发射完毕!准备四区发射
MOV A,D4 ;用于第四位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
SHOW4: RRC A ;左移A,待发射的数据压入发射仓C
MOV HC595DS4,C ;数据发射,目标74HC595四区数据端!
SETB HC595SH ;上升沿,74HC595四区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,SHOW4 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB HC595ST4 ;发射完8位用上升沿命令74HC595四区做好存储工作
NOP ;喘口气
CLR HC595ST4 ;存储端回归
;报告长官,74HC595一到四区数据全部发射完毕!
;------------------------------------------------------
;For simulation
;------------------------------------------------------
MOV A, R2
MOV B, #8
DIV AB
ADD A, #D5
MOV R0, A
MOV R4, B
MOV A, #07FH
ROTATE1: RR A
DJNZ R4, ROTATE1
MOV @R0, A
MOV A,D5 ;用于第一位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
ROWS1: RRC A ;左移A,待发射的数据压入发射仓C
MOV RHC595DS1,C ;数据发射,目标74HC595一区数据端!
SETB HC595SH ;上升沿,74HC595一区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,ROWS1 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB RHC595ST1 ;发射完8位用上升沿命令74HC595一区做好存储工作
NOP ;喘口气
CLR RHC595ST1 ;存储端回归
;报告长官,74HC595一区数据发射完毕!准备二区发射
MOV A,D6 ;用于第二位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
ROWS2: RRC A ;左移A,待发射的数据压入发射仓C
MOV RHC595DS2,C ;数据发射,目标74HC595二区数据端!
SETB HC595SH ;上升沿,74HC595二区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,ROWS2 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB RHC595ST2 ;发射完8位用上升沿命令74HC595二区做好存储工作
NOP ;喘口气
CLR RHC595ST2 ;存储端回归
;报告长官,74HC595二区数据发射完毕!准备三区发射
MOV A,D7 ;用于第三位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
ROWS3: RRC A ;左移A,待发射的数据压入发射仓C
MOV RHC595DS3,C ;数据发射,目标74HC595三区数据端!
SETB HC595SH ;上升沿,74HC595三区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,ROWS3 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB RHC595ST3 ;发射完8位用上升沿命令74HC595三区做好存储工作
NOP ;喘口气
CLR RHC595ST3 ;存储端回归
;报告长官,74HC595三区数据发射完毕!准备四区发射
MOV A,D8 ;用于第四位显示的八位数据到A待机
MOV R1,#8 ;发射计数值为8!
ROWS4: RRC A ;左移A,待发射的数据压入发射仓C
MOV RHC595DS4,C ;数据发射,目标74HC595四区数据端!
SETB HC595SH ;上升沿,74HC595四区移位!准备接收下一位数据!
NOP ;喘口气
CLR HC595SH ;移位端回归
DJNZ R1,ROWS4 ;发射了8位了么?没有的话计数减1返回继续发射!
SETB RHC595ST4 ;发射完8位用上升沿命令74HC595四区做好存储工作
NOP ;喘口气
CLR RHC595ST4 ;存储端回归
;报告长官,74HC595一到四区数据全部发射完毕!
;----------------------------------------------------------------------------------------------
LCALL D500MS
INC R2
AJMP R132
JD1: LJMP DISPLAY1
R132: CJNE R2, #DISPUW, JD1
RET
;下班了
;***************************************************
;HALL INTERRUPTION AREA
;***************************************************
HALLDETECT:
MOV DPTR, #LABLE1
POP ACC
POP ACC
PUSH DPL
PUSH DPH
RETI
LABLE1: MOV DPTR, #MAIN
POP ACC
POP ACC
PUSH DPL
PUSH DPH
RETI
;***************************************************
;延时子程序
;***************************************************
D1MS: MOV R3,#02H ;1ms延时
D1MSL2: MOV R4,#0FFH
D1MSL1: DJNZ R4,D1MSL1
DJNZ R3,D1MSL2
RET
D500MS: MOV R6,#08H ;100ms延时
D500MSL4: MOV R5,#0AH
D500MSL3: MOV R3,#02H
D500MSL2: MOV R4,#0FFH
D500MSL1: DJNZ R4,D500MSL1
DJNZ R3,D500MSL2
DJNZ R5,D500MSL3
DJNZ R6,D500MSL4
RET
D750MS: MOV R6,#4BH ;750ms延时
D750MSL4: MOV R5,#0AH
D750MSL3: MOV R3,#02H
D750MSL2: MOV R4,#0FFH
D750MSL1: DJNZ R4,D750MSL1
DJNZ R3,D750MSL2
DJNZ R5,D750MSL3
DJNZ R6,D750MSL4
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -