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

📄 led.asm

📁 使用HT1632 驱动点阵式LED显示屏显示小绿人
💻 ASM
字号:
;;;=================================================================
;;FUNCTION: DTYNAMIC 24X16 DOT-MATRIX LED DISPLAY ROGRAM
;;					Edit by maggie	06-08 
;;MASTER MCU:HT48R10A,SLAVER MCU:HT1632
;;==================================================================
;; Mask option:
;;		WDT			: DIABLE
;;      CLRWDT		: ONE CLEAR INSTRUCTION
;;      WDTCLOCLSOURCE          : T1(SYSTEM CLOCK/4)
;;		WAKE-UP PA0-7		: PA0,PA1,PA4 WAKE-UP,PA2,PA3,PA5-7 NON-WAKE-UP
;;		PULL-HIGH PA-PC		: PULL-HIGH
;;		OUTPUT TYPE PB/PC	: NON-PULL-HIGH
;;		INPUT TYPE PD/PE    :NON-PULL-HIGH2
;;		LVR			: DISABLE
;;		OSC			: CRAYSTAL
;;		SYSVOLT			: 5.00V
;;		SYSFREQ			: 4000.000KHz
;;==================================================================
#INCLUDE	HT48R10A-1.INC
;;==================================================================
;;==================================================================
MY_DATA 	.SECTION	'DATA'  

DEL1			DB  ?						;
DEL2			DB  ?
DEL3 			DB  ?
BAK_STA			DB	?
BAK_ACC			DB	?
R_SEG			DB	?					;ADDRESS TEMP REGISTOR
R_ADDR			DB	?					;ADDRESS REGISTOR
COUNT			DB	?					;R_ADDR
CIR_COUNT		DB	?
DISPMAN_CNT		DB	?
LED_SPEED		DB	?
TEMP_PARITY		DB	?
TAB_ADR		    DB	?
TMR_BUF			DB	?
TEMP_ADDR		DB	?					;R_ADDR TEMP REGISTOR
DEBOUNCE_CNT	DB	?						; A COUNTER OF KEY DEBOUNCE
FG_KEY			DBIT
HAVE_KEY		DBIT						 ;1: SOME KEY WAS PRESSED
FG_INI			DBIT
TEMP			DB	2 DUP(?)
COM_BUF			DB	2 dup(?)
OUT_BUF			DB	2 dup(?)
DELAY_CNT		DB	2 DUP(?)


	
CS 				EQU		PA.0
CSC			    EQU		PAC.0
WR				EQU		PA.1
WRC				EQU		PAC.1
DT				EQU		PA.2
DTC				EQU		PAC.2
KEY				EQU		PA.4
KEY_C			EQU		PAC.4

LED_SPEED1		EQU		70;100				
LED_COUNT		EQU		139;240				
PATTERN			EQU		14				
;;===================================================================


;;===================================================================
XMOV		MACRO	MEMO1,MEMO2
	MOV		A,MEMO2
	MOV 	MEMO1,A
	ENDM

;======================
EJMP      MACRO   MEM2,MEM1
                MOV     A,MEM1
                XOR     A,MEM2
                SNZ     Z
ENDM
;=======================
;=============
D_400US		MACRO   
	LOCAL		LABEL
	MOV		a,200H
	MOV		DELAY1,a
LABEL:
	SDZ		DELAY1
	JMP		LABEL
ENDM
;;===================================================================
MY_CODE		.SECTION	AT 0	'CODE'  

   	 		ORG		00H  

 			JMP		START

			ORG		004H
		    RETI

			ORG		008H
			JMP		ISR_TMR

START:
			CLR		WDT

			XMOV	PAC,010H				;SET PA4 IS INPUT IO			
			XMOV	PA,010H
		;	CALL    INTT_1632

			CLR		TAB_ADR
			CLR		TMR_BUF
			CLR		TMR
			CLR		FG_INI
			CLR		FG_KEY
			CLR		HAVE_KEY
		;	XMOV	TMRC,091H
		;	XMOV	INTC,05H
		;	XMOV	TMR,080H     ;236                     ;256-20
			XMOV	TEMP_ADDR,060H
			XMOV	LED_SPEED,LED_SPEED1
			XMOV	TAB_ADR,OFFSET TAB_LED
			XMOV	DEBOUNCE_CNT,10
		;	CALL	INI_1632_RAM

			CLR		DELAY_CNT[1]
			CLR		DELAY_CNT[2]

			XMOV	TMRC,097H
			XMOV	INTC,05H
			XMOV	TMR,00H     ;236                     ;256-20

			CALL    INTT_1632
			CALL	INI_1632_RAM
			INC		DELAY_CNT[1]
			
			SNZ		DELAY_CNT[2].4
			JMP		$-1
			CALL	DELAY
			CLR		DELAY_CNT[1]
			CLR		DELAY_CNT[2]

			SET		FG_INI
			CALL	INI_1632_RAM

			MOV		A,08					;BLINK OFF
			CALL	COMMAND_1632

			INC		DELAY_CNT[1]
			SNZ		DELAY_CNT[2].3
			JMP		$-1

		;	XMOV	TEMP_ADDR,040H
		;	XMOV	LED_SPEED,LED_SPEED1
		;	XMOV	TAB_ADR,OFFSET TAB_LED


		    XMOV	TMRC,091H
			XMOV	INTC,05H
			XMOV	TMR,080H     ;236                     ;256-20


MAIN_LOOP:	

			SZ		FG_KEY
			JMP		HAVEKEY_LED
			
			MOV		A,TEMP_ADDR
			SUB		A,4
			MOV		TEMP_ADDR,A
			JMP		SCAN_LED
;;=========================================================================
;;=======================================================================
SCAN_LED	PROC 			   				;DISPLAY DATA IN BUFFER 1 TIMES

		XMOV	R_SEG,TEMP_ADDR		
		CLR		COUNT
		XMOV	TBLP,TAB_ADR

SCAN:
		CALL	GET_TAB
		INC		TBLP
		INC		R_SEG
		INC		COUNT
		MOV		A,080H
		XOR		A,R_SEG
		SZ		ACC
		JMP		$+2
		JMP		$+5

		MOV	    A,02CH
        SUB		A,COUNT
		SZ		ACC
		JMP		SCAN
		CALL	DELAY
		MOV		A,PATTERN
		ADDM	A,TAB_ADR					;NEXT PICTURE
		MOV		A,LED_COUNT
		SUB		A,TAB_ADR
		SZ		C
		JMP		SCAN_LED
		XMOV	TAB_ADR,OFFSET TAB_LED
		MOV		A,0D4H
		XOR		A,TEMP_ADDR
		SZ		ACC
		JMP		MAIN_LOOP
		XMOV	TEMP_ADDR,060H
		JMP		MAIN_LOOP

SCAN_LED	ENDP
;====================================================================
HAVEKEY_LED:
		XMOV	R_SEG,TEMP_ADDR				  				;DISPLAY DATA IN BUFFER 1 TIMES	
		CLR		COUNT
		XMOV	TBLP,TAB_ADR

KEY_LED:
		CALL	GET_TAB
		INC		TBLP
		INC		R_SEG
		INC		COUNT
		MOV	    A,02CH
        SUB		A,COUNT
		SZ		ACC
		JMP		KEY_LED
		CALL	DELAY

		MOV		A,PATTERN
		ADDM	A,TAB_ADR
		MOV		A,LED_COUNT
		SUB		A,TAB_ADR
		SZ		C
		JMP		MAIN_LOOP
		XMOV	TAB_ADR,OFFSET TAB_LED
		JMP		MAIN_LOOP


;=====================================================================
GET_TAB PROC							
		XMOV	R_ADDR,R_SEG
		TABRDL  ACC	
		MOV		COM_BUF[1],A				
		XMOV	COM_BUF[2],TBLH			
		
		MOV		A,0FH
		AND		A,COM_BUF[1]

		SZ		R_ADDR.7
		JMP		$+2

		CALL	WRITE_1632					;WRITE COM_BUF[1] LOW 4 BITS
		
		INC		R_ADDR
		INC		R_SEG
		INC		COUNT
		SWAPA	COM_BUF[1]					;WRITE COM_BUF[1] HIGH 4 BITS

		SZ		R_ADDR.7
		JMP		$+2

		CALL	WRITE_1632
		
		MOV		A,03FH
		XOR		A,COM_BUF[2]				;IF  CON_BUF[2] IS 03FH,GET NEXT TABLE DATA
		SZ		ACC
		JMP		GETTAB_HIGH

		INC		TBLP
		TABRDL  ACC
		MOV		COM_BUF[2],A
GETTAB_HIGH:
		INC		R_ADDR
		INC		R_SEG
		INC		COUNT

		MOV		A,0FH
		AND		A,COM_BUF[2]

		SZ		R_ADDR.7
		JMP		$+2
		CALL	WRITE_1632
		
		INC		R_ADDR
		INC		R_SEG
		INC		COUNT
		SWAPA	COM_BUF[2]

		SZ		R_ADDR.7
		JMP		$+2

		CALL	WRITE_1632
		RET

GET_TAB	ENDP
;====================================================================
;                      Delay about DEL1*1mS       
;=====================================================================
DELAY  	PROC
	    XMOV	DEL1,LED_SPEED		;SET DEL1 COUNTER	
DEL_1:  
		MOV     A,03;01                   	
        MOV     DEL2,A					;SET DEL2 COUNTER 
DEL_2:	
		MOV		A,110;10;
		MOV		DEL3,A					;SET DEL3 COUNTER
DEL_3:  
		SDZ     DEL3                  	;DEL3 DOWN COUNT
        JMP     DEL_3                      
        SDZ     DEL2                  	;DEL2 DOWN COUNT
        JMP     DEL_2                   
		SDZ		DEL1					;DEL1 DOWN COUNT
		JMP		DEL_1
        RET
DELAY   ENDP
;;=====================================================================
#INCLUDE       ISR.ASM
#INCLUDE       1632driver.ASM
;#INCLUDE       MUSIC.ASM
;;=====================================================================
;;=====================================================================

		ORG		LASTPAGE
TAB_LED:

		DC	03082H,030C7H,0287FH,01C7AH,03F0H
		DC	0190H,0230H,04E0H,02C40H,03800H,0000H,0000H,0000H,0000H						;"5`"

		DC	02002H,02087H,0207FH,01C7AH,03F0H
		DC	0190H,0210H,0420H,02440H,01800H,0000H,0000H,0000H,0000H						;4`"

		DC	0002H,02087H,02C7FH,0327AH,01D0H
		DC	0190H,01620H,014C0H,0C00H,0000H,0000H,0000H,0000H,0000H					    ;"4"

		DC	0002H,0007H,03F3FH,0054H,03FFAH,0072H
		DC	03D0H,0720H,08C0H,0800H,03000H,0000H,0000H,0000H								;"2"
		
		DC	0002H,03F07H,004CH,03FBFH,0052H,03FFAH,0073H
		DC	07D0H,0820H,03000H,0000H,0000H,0000H,0000H						     		;"2`"

		DC	0000,0002H,03F3FH,005CH,3FFFH,0072H
		DC  3FFAH,0073H,07F0H,08E0H,03800H,03000H,0000H,0000H								;"3"

		DC	0002H,0007H,023FH,01FAH,02FF0H
		DC	0B80H,03E00H,0000H,0000H,0000H,0000H,0000H,0000H,0000H						;"1"

		DC	0002H,01047H,0145FH,01BFAH,07F0H,02FF0H
		DC	03F60H,0048H,03F00H,0070H,03F00H,0040H,0000H,0000H							;"5``"

		DC	01082H,01047H,01C7FH,01FFAH,07f0H,02ff0H
		DC	03F60H,004AH,03FC0H,0074H,03F00H,0048H,03000H,0000H							;"5"

		DC	01082H,01047H,087FH,047AH,03F0H,0190H
		DC	0220H,04C0H,0800H,03000H,0000H,0000H,0000H,0000H							    ;"6"

		END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -