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

📄 432_line_in_main_16m20060117.dt

📁 在台湾义统公司ET44M210开发实验板环境下
💻 DT
字号:

INCLUDE	"ET44M210_REG.H"


	ORG		0X0000
	JMP		START
	
	org 0x400
	
;********************************************************	
INCLUDE	"DEFINE_REG.H"
INCLUDE "ET83X432_CODEC.INC"
INCLUDE	"K9F2808U0C.INC"
;********************************************************



START:
	
		CALL    IO_INITIAL

	
KEY_SCAN:	
		
		;JBC		VOL_PORT,VOL_INC,$
		;JBC		VOL_PORT,VOL_DEC,$
		;JBC		KEY_PORT,PREV,$
		;JBC		KEY_PORT,MODE,$
		JBS		KEY_PORT,PLAY_STOP,$+3
		CALL	CHECK_PLAY_STOP_KEY
		JBS		KEY_PORT,MODE,$+3
		CALL	CHECK_MODE_KEY
		JMP		KEY_SCAN
;***********************************************************************************
		
CHECK_PLAY_STOP_KEY:
		CALL	CHECK_KEY_IN
		MOV		A,MEMORY_KEY_VALUE
		SUB		A,#00						;MEMORY_KEY_VALUE==0 INDICATES KEY IN
		JBC		STATUS,Z,PLAY_STOP_KEY_OFF
WAIT_PLAY_STOP_KEY_RELEASE:					;KEY IN WAIT IT RELEASE
		JBC		KEY_PORT,PLAY_STOP,$
		JMP		MUSIC_PLAY
PLAY_STOP_KEY_OFF:	
RET											;NO KEY IN,RETURN SCAN NEXT KEY
;***********************************************************************************
CHECK_MODE_KEY:
		CALL	CHECK_KEY_IN
		MOV		A,MEMORY_KEY_VALUE
		SUB		A,#0						;MEMORY_KEY_VALUE==0 INDICATES KEY IN
		JBS		STATUS,Z,MODE_KEY_OFF
WAIT_MODE_KEY_RELEASE_FOR_START:						;KEY IN WAIT IT RELEASE
		JBC		KEY_PORT,MODE,$
		JMP		LINE_IN
MODE_KEY_OFF:		
RET											;NO KEY IN,RETURN SCAN NEXT KEY
;***********************************************************************************
;***********************************************************************************		

CHECK_KEY_IN:
		MOV		A,KEY_PORT
		MOV		MEMORY_KEY_VALUE,A
		CALL	DELAY_30mS
		MOV		A,MEMORY_KEY_VALUE
		SUB		A,KEY_PORT
		JBS		STATUS,Z,KEY_IN				;PRESS A KEY
		
NO_KEY_IN:
		MOV		A,#1						;NO PRESS KEY
		MOV		MEMORY_KEY_VALUE,A
RET											;

KEY_IN:
		CLR		MEMORY_KEY_VALUE			;PRESS KEY
RET		
;***********************************************************************************

LINE_IN:
		
		
ERASE_256_BLOCK:
		CALL	ZERO_ADDRESS
		
		MOV		A,#0X00
		MOV		BLOCK_ADDRESS_LOW,A
		
		MOV		A,#0X00
		MOV		BLOCK_ADDRESS_HIGH,A
		
		MOV		A,#00//10				;00 erase 256 block
		MOV		MAX_BLOCK_NUM,A
		CLR		BLOCK_COUNT
		
		CALL	ERASE_MAX_NUM_BLOCK
		
		;CALL	ZERO_ADDRESS
		;CALL	READ_FIRST_HALF_PAGE_TO_BANK

		CALL    LINE_IN_SET_AND_START
		
		CALL	ZERO_ADDRESS
NEXT_512BYTES:
		CALL	READ_512_BYTES_FROM_FIFO
		
		
		CALL	PROGRAM_ONE_PAGE_FROM_BANK
		
		CALL	INC_PAGE_ADDRESS
		
		
SCAN_MODE_KEY_STOP_LINE_IN:
		JBS		KEY_PORT,MODE,NEXT_512BYTES
		CALL	CHECK_KEY_IN
		MOV		A,MEMORY_KEY_VALUE
		SUB		A,#0						;MEMORY_KEY_VALUE==0 INDICATES KEY IN
		JBS		STATUS,Z,WAIT_MODE_KEY_RELEASE_FOR_STOP
		JMP		NEXT_512BYTES
WAIT_MODE_KEY_RELEASE_FOR_STOP:
		JBC		KEY_PORT,MODE,$
		CALL	DELAY_60MS
		JMP		LINE_IN_STOP
	
;***********************************************************************************

;***********************************************************************************
LINE_IN_STOP:
		CALL	StopCodecEncode
		
		CALL	ZERO_ADDRESS
		CALL	READ_FIRST_HALF_PAGE_TO_BANK
		JMP		KEY_SCAN
		
RET
;***********************************************************************************
MUSIC_PLAY:
        CALL    PLAY_SET_AND_START
        
        CALL	ZERO_ADDRESS
PLAY_NEXT_512BYTES:
		CALL	READ_FIRST_HALF_PAGE_TO_BANK
		
		CALL	INC_PAGE_ADDRESS
		
		CALL	WRITE_512_BYTES_TO_FIFO
		
SCAN_PLAY_KEY_STOP_PLAY:
		JBS		KEY_PORT,PLAY_STOP,PLAY_NEXT_512BYTES
		CALL	CHECK_KEY_IN
		MOV		A,MEMORY_KEY_VALUE
		SUB		A,#0						;MEMORY_KEY_VALUE==0 INDICATES KEY IN
		JBS		STATUS,Z,WAIT_PLAY_KEY_RELEASE_FOR_PAUSE
		JMP		PLAY_NEXT_512BYTES
WAIT_PLAY_KEY_RELEASE_FOR_PAUSE:
		JBC		KEY_PORT,PLAY_STOP,$
		CALL	DELAY_60MS
		JMP		PLAY_STOP
	
;***********************************************************************************

;***********************************************************************************
PLAY_PAUSE:
		CALL	StopCodecDecode

        JMP		KEY_SCAN
        




INC_PAGE_ADDRESS:
		INC		ROW_ADDRESS_LOW
		JBS		STATUS,C,INCREMENT_ROW_ADDRESS_HIGH
		JMP		INC_PAGE_ADDRESS_END
INCREMENT_ROW_ADDRESS_HIGH:
		INC		ROW_ADDRESS_HIGH
		
INC_PAGE_ADDRESS_END:
RET		
;*****************************************************************************************
READ_512_BYTES_FROM_FIFO:

	MOV		A,#1
	MOV		BANK_COUNT,A
BANK_INITIAL:
	INC		BANK_COUNT
	MOV		A,BANK_COUNT
	MOV		RAMBS1,A

	MOV		A,#0X80
	MOV		IAP1,A
NEXT_REG:
	JBS		PORTC,4,$
	CLR		FIFO_BYTE_COUNT
READ_32BYTES_NEXT_REG:	
	CALL	READ_FIFO				;READ_FIFO TO BANK
	
	INC		IAP1
	INC		FIFO_BYTE_COUNT
	MOV		A,FIFO_BYTE_COUNT
	SUB		A,#32
	JBS		STATUS,Z,READ_32BYTES_NEXT_REG
	
	MOV		A,IAP1
	;SUB		A,#0X90
	;JBS		STATUS,Z,CHECK_528BYTES_END
;CONTINUE:
;	MOV		A,IAP1
	SUB		A,#00
	JBS		STATUS,Z,BANK_CHANG
	JMP		NEXT_REG
	
BANK_CHANG:
	MOV		A,BANK_COUNT
	SUB		A,#5//6
	
	JBS		STATUS,Z,WR_BANK_END
	JMP		BANK_INITIAL

;CHECK_528BYTES_END:
;	MOV		A,BANK_COUNT
;	SUB		A,#6
	
;	JBS		STATUS,Z,WR_BANK_END
;	JMP		CONTINUE
		
WR_BANK_END:

RET		
;*****************************************************************************************
;*****************************************************************************************
WRITE_512_BYTES_TO_FIFO:

	MOV		A,#1
	MOV		BANK_COUNT,A
WRITE_FIFO_BANK_INITIAL:
	INC		BANK_COUNT
	MOV		A,BANK_COUNT
	MOV		RAMBS1,A

	MOV		A,#0X80
	MOV		IAP1,A
WRITE_FIFO_NEXT_REGISTER:
	JBS		PORTC,4,$				;WRITE_FIFO FROM BANK
	CLR		FIFO_BYTE_COUNT
WRITE_32BYTES_NEXT_REGISTER:
	MOV		A,IAC1
	MOV		CodecData,A
	CALL	CodecWriteFiFo
	INC		IAP1
	INC		FIFO_BYTE_COUNT
	MOV		A,FIFO_BYTE_COUNT
	SUB		A,#32
	JBS		STATUS,Z,WRITE_32BYTES_NEXT_REGISTER
	
	MOV		A,IAP1
	SUB		A,#00
	JBS		STATUS,Z,WRITE_FIFO_BANK_CHANG
	JMP		WRITE_FIFO_NEXT_REGISTER
	
WRITE_FIFO_BANK_CHANG:
	MOV		A,BANK_COUNT
	SUB		A,#5//6
	
	JBS		STATUS,Z,WRITE_FIFO_BANK_END
	JMP		WRITE_FIFO_BANK_INITIAL
		
WRITE_FIFO_BANK_END:

RET		
;*****************************************************************************************
READ_FIFO:
	CALL	CodecReadFiFo
	MOV		A,CodecData
	MOV		IAC1,A
RET		
;*****************************************************************************************
WRITE_FIFO:
	JBS		PORTC,4,$
	MOV		A,IAC1
	MOV		CodecData,A
	CALL	CodecWriteFiFo
RET		
;*****************************************************************************************
IO_INITIAL:
        BANK    0				;76543210
        
;SET CONTROL OF I/O        
;************************************************
		MOV		A,#0b11110000	;SET I/O PORT
		MOV	    IOCA,A
		                        
        MOV     A,#0b00100000   ;SET I/O PORT			FLASH READY/BUSY INPUT
		MOV	    IOCB,A
                                
        MOV     A,#0b00010000   ;SET I/O PORT
		MOV	    IOCC,A
                                
        MOV     A,#0b00000000   ;SET I/O PORT
		MOV	    IOCD,A
                                
        MOV     A,#0b00000000   ;SET I/O PORT
		MOV	    IOCE,A
                               
        MOV     A,#0b00001011   ;SET I/O PORT
		MOV	    IOCF,A
		
		
		
;************************************************
;PULL HIGH CONTROL SET
;************************************************
		MOV		A,#0b11110000	;SET I/O PORT
		MOV	    PUCA,A
		
		MOV		A,#0b00100000	;SET I/O PORT
		MOV	    PUCB,A
		
		MOV		A,#0b00010000	;SET I/O PORT
		MOV	    PUCC,A
		
		MOV		A,#0b00001011	;SET I/O PORT
		MOV	    PUCF,A
		
		
;SET IO VALUE
;************************************************                               
        MOV     A,#0X00		   ;SET OUT_VALUE
		MOV 	PORTA,A	

                                
        MOV     A,#0X80   		;SET OUT_VALUE
		MOV 	PORTB,A	

        MOV     A,#0X00   		;SET OUT_VALUE
		MOV 	PORTC,A	

		CLR 	PORTD

        MOV     A,#0X00   		;SET OUT_VALUE
		MOV 	PORTE,A

        MOV     A,#0X00 		;SET OUT_VALUE
  		MOV 	PORTF,A
;************************************************ 		
								
RET
		
;************************************************

DATA_PORT_OUT_INITIAL:
        BANK    0				;76543210
        
;SET CONTROL OF I/O        
;************************************************

        MOV     A,#0b00000000   ;SET I/O PORT
		MOV	    IOCD,A
RET
;************************************************ 			
		
				
DATA_PORT_IN_INITIAL:
        BANK    0				;76543210
        
;SET CONTROL OF I/O        
;************************************************

        MOV     A,#0b11111111   ;SET I/O PORT
		MOV	    IOCD,A
;************************************************ 		
								
RET
;************************************************ 


DELAY_3S:
		CALL	DELAY_1S
		CALL	DELAY_1S
		CALL	DELAY_1S
		RET
		
DELAY_1S:
		CALL DELAY_500MS
		CALL DELAY_500MS
		RET
DELAY_500mS:
						CALL	DELAY_30mS  //1
						CALL	DELAY_30mS  //2
						CALL	DELAY_30mS  //3
						CALL	DELAY_30mS  //4
						CALL	DELAY_30mS  //5
						CALL	DELAY_30mS  //6
						CALL	DELAY_30mS  //7
						CALL	DELAY_30mS  //8
						CALL	DELAY_30mS  //9
						CALL	DELAY_30mS  //10
						CALL	DELAY_30mS  //11
						CALL	DELAY_30mS  //12
						CALL	DELAY_30mS  //13
						CALL	DELAY_30mS  //14
						CALL	DELAY_30mS  //15
						CALL	DELAY_30mS  //16
						CALL	DELAY_20MS
						
						RET
		
DELAY_480mS:
						CALL	DELAY_30mS  //1
						CALL	DELAY_30mS  //2
						CALL	DELAY_30mS  //3
						CALL	DELAY_30mS  //4
						CALL	DELAY_30mS  //5
						CALL	DELAY_30mS  //6
						CALL	DELAY_30mS  //7
						CALL	DELAY_30mS  //8
						CALL	DELAY_30mS  //9
						CALL	DELAY_30mS  //10
						CALL	DELAY_30mS  //11
						CALL	DELAY_30mS  //12
						CALL	DELAY_30mS  //13
						CALL	DELAY_30mS  //14
						CALL	DELAY_30mS  //15
						CALL	DELAY_30mS  //16
						
						RET
						
DELAY_240mS:						
						CALL	DELAY_30mS  //9
						CALL	DELAY_30mS  //10
						CALL	DELAY_30mS  //11
						CALL	DELAY_30mS  //12
DELAY_120mS:						
						CALL	DELAY_30mS  //13
						CALL	DELAY_30mS  //14
DELAY_60mS:						
						CALL	DELAY_30mS  //15
						CALL	DELAY_30mS  //16
						RET

                
DELAY_30mS:
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        Call    DELAY_3ms
                        RET
                        
DELAY_20MS:		
		CALL	DELAY_6MS
        CALL	DELAY_6MS
        CALL	DELAY_6MS 
        CALL	DELAY_2MS                 
DELAY_12mS:                        
        Call    DELAY_3ms
        Call    DELAY_3ms
                        
DELAY_6mS:                       
                        Call    DELAY_3ms
                        Call    DELAY_3ms

                        Ret



DELAY_3ms:
                        CALL    DELAY_1ms
DELAY_2ms:
                        CALL    DELAY_1ms
                        CALL    DELAY_1ms
                        RET     
DELAY_1ms:
                        CALL    DELAY_500us
                        CALL    DELAY_500us
                        RET

DELAY_700us:
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        RET
                      
DELAY_500us:
                        CALL    DELAY_100us
DELAY_400us:
                        CALL    DELAY_100us

DELAY_300us:
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        CALL    DELAY_100us
                        RET

DELAY_100us:
                        CALL    DELAY_50us
                        CALL    DELAY_50us
                        RET
DELAY_50us:
			CALL	DELAY_25us
			CALL	DELAY_25us
			RET
DELAY_25us:			
			CALL	DELAY_10us
			CALL	DELAY_10us
			CALL	DELAY_5us
			RET
DELAY_30us:
            CALL    DELAY_10us
			CALL	DELAY_10us
			CALL	DELAY_10us
			RET
DELAY_20us:
            CALL    DELAY_10us
			CALL	DELAY_10us
RET
DELAY_14us:
			CALL	DELAY_5us
			CALL	DELAY_5us
			CALL	DELAY_1us
			CALL	DELAY_1us
			CALL	DELAY_1us
			CALL	DELAY_1us
			RET								
DELAY_10us:
			CALL	DELAY_5us
			CALL	DELAY_5us
			RET	

DELAY_5US:
		CALL DELAY_1US
		CALL DELAY_1US
		CALL DELAY_1US
		CALL DELAY_1US
		CALL DELAY_1US
		
		RET
		
DELAY_1US:				//1,2
		MOV	A,18		;3
		MOV RPTC ,A		;4
		
		RPT				;5
		NOP				;5+18=23
		RET				;24
/*		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		
		RET */
		
		
;================================================
;Subsrute end
;================================================	





;================================================
ORG		0X3FFF
			DW		0X4012

⌨️ 快捷键说明

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