⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 code.asm

📁 基于89c51和74hc595的32位视觉暂留LED测试代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
               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 + -