📄 main.asm
字号:
EXIT_AUDIO_INT_ISR:
MOV A,isr_play_bp ;restone bp
MOV BP,A
MOV A,isr_play_tblp ;restore TBLP
MOV TBLP,A
MOV A,isr_play_mp0 ;restore MP0
MOV MP0,A
MOV A,isr_play_mp1 ;restore MP1
MOV MP1,A
MOV A,isr_play_status ;restore STATUS
MOV STATUS,A
MOV A,isr_play_acc ;restore ACC
RETI
;***************************************************************
; RECORD_INT_ISR
; 1. 8Khz
;
;***************************************************************
RECORD_INT_ISR:
MOV isr_rec_acc,A ;save ACC
MOV A,STATUS
MOV isr_rec_status,A ;save status
MOV A,MP1
MOV isr_rec_mp1,A ;save mp1
MOV A,MP0
MOV isr_rec_mp0,A ;save mp0
MOV A,TBLP
MOV isr_rec_tblp,A ;save TBLP
MOV A,BP
MOV isr_rec_bp,A ;save bp
clr BP
RECORD_My_Function:
;-----------------------------------------------------------
; Here to add your another code !!
;cpl PB
EXIT_RECORD_INT_ISR:
MOV A,isr_rec_bp ;restone bp
MOV BP,A
MOV A,isr_rec_tblp ;restore TBLP
MOV TBLP,A
MOV A,isr_rec_mp0 ;restore MP0
MOV MP0,A
MOV A,isr_rec_mp1 ;restore MP1
MOV MP1,A
MOV A,isr_rec_status ;restore STATUS
MOV STATUS,A
MOV A,isr_rec_acc ;restore ACC
RETI
;***************************************************************
; Timer_0_ISR
; 1.Timer time = 21.2 ms
; 2.Do this procedure is 3.6ms
;***************************************************************
Timer_0_ISR:
clr TMR0C.4
MOV isr_tmr0_acc,A ;save ACC
MOV A,STATUS
MOV isr_tmr0_status,A ;save status
MOV A,MP1
MOV isr_tmr0_mp1,A ;save mp1
MOV A,MP0
MOV isr_tmr0_mp0,A ;save mp0
MOV A,TBLP
MOV isr_tmr0_tblp,A ;save TBLP
MOV A,BP
MOV isr_tmr0_bp,A ;save bp
clr BP
Timer_0_My_Function:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
clr wdt
Timer_0_ISR_END:
MOV A,isr_tmr0_bp ;restone bp
MOV BP,A
MOV A,isr_tmr0_tblp ;restore TBLP
MOV TBLP,A
MOV A,isr_tmr0_mp0 ;restore MP0
MOV MP0,A
MOV A,isr_tmr0_mp1 ;restore MP1
MOV MP1,A
MOV A,isr_tmr0_status ;restore STATUS
MOV STATUS,A
MOV A,isr_tmr0_acc ;restore ACC
SET TMR0C.4 ;start timer0
RETI
;***************************************************************
; Timer_1_ISR
; 1.Timer time = 21.2 ms
; 2.Do this procedure is 3.6ms
;***************************************************************
Timer_1_ISR:
CLR TMR1C.4
MOV isr_tmr1_acc,A ;save ACC
MOV A,STATUS
MOV isr_tmr1_status,A ;save status
MOV A,MP1
MOV isr_tmr1_mp1,A ;save mp1
MOV A,MP0
MOV isr_tmr1_mp0,A ;save mp0
MOV A,TBLP
MOV isr_tmr1_tblp,A ;save TBLP
MOV A,BP
MOV isr_tmr1_bp,A ;save bp
clr BP
clr wdt
MOV A,isr_tmr1_bp ;restone bp
MOV BP,A
MOV A,isr_tmr1_tblp ;restore TBLP
MOV TBLP,A
MOV A,isr_tmr1_mp0 ;restore MP0
MOV MP0,A
MOV A,isr_tmr1_mp1 ;restore MP1
MOV MP1,A
MOV A,isr_tmr1_status ;restore STATUS
MOV STATUS,A
MOV A,isr_tmr1_acc ;restore ACC
Timer_1_ISR_End:
SET TMR1C.4
RETI
;***************************************************************
;
;
;
;***************************************************************
Delay_20ms:
clr wdt
mov a,075H
mov Delay_1,a
mov a,0FFH
mov Delay_2,a
Delay_20ms_Wait:
clr wdt
SDZ Delay_2
JMP Delay_20ms_Wait
SDZ Delay_1
JMP Delay_20ms_Wait
RET
Delay_5ms:
clr wdt
mov a,03AH
mov Delay_1,a
mov a,0FFH
mov Delay_2,a
Delay_5ms_Wait:
clr wdt
SDZ Delay_2
JMP Delay_5ms_Wait
SDZ Delay_1
JMP Delay_5ms_Wait
RET
Delay PROC
clr wdt
MOV A,0FFH
MOV Delay_1,A
MOV Delay_2,A
Wait:
clr wdt
SDZ Delay_2
JMP Wait
SDZ Delay_1
JMP Wait
RET
Delay ENDP
;***************************************************************
; Key_Debounced Module
; Key_Defined : bits want to detect
; Key_Process : set the bit when proces
; Key_CheckIn : set the bit if detect a pressed key first
; Key_Counter : i th bit pressed
; If supportc key press continuously, do not set Key_Process (Ex: INC,DEC Volume)
; If supportc key press continuously, should set Key_Process (Ex: Mute,Play,Stop)
;***************************************************************
#define UseReportID 1
IF UseMediaKey
Key_Debounced:
clr wdt
mov a,VIOP
cpl acc
mov PortC_Data,a
mov a,Key_Defined
and a,PortC_Data
sz z
jmp Key_Debounced_ClearReg ;//no key pressed
Key_Debounced_Detect_In:
kmov Key_Temp,PortC_Data
clr Key_Counter
Key_Debounced_Detect:
clr C
RRC Key_Temp
sz C
jmp Key_Debounced_Detect_End
inc Key_Counter
mov a,8
;xor a,Key_Temp
xor a,Key_Counter
sz z
jmp Key_Debounced_Detect_End
jmp Key_Debounced_Detect
Key_Debounced_Detect_End:
mov a,Key_Counter
;call GetPipeBit
xor a,Key_CheckIn
snz z
jmp Key_Debounced_SetCheckIn
;check process
mov a,Key_Process
xor a,Key_CheckIn
sz z
jmp Key_Debounced_End
jmp Key_Debounced_Process
;jmp Key_Debounced_End if N/A
nop
nop
nop
Key_Debounced_Process:
clr wdt
mov a,Key_Counter
addm a,pcl
jmp Key_Debounced_PA0
jmp Key_Debounced_Process_Dec
jmp Key_Debounced_Process_Inc
jmp Key_Debounced_Process_Mute
jmp Key_Debounced_PA4
jmp Key_Debounced_PA5
jmp Key_Debounced_PA6
jmp Key_Debounced_PA7
Key_Debounced_SetCheckIn:
mov Key_CheckIn,a
clr Key_Process
kmov Key_IncCounter,Const_Counter
kmov Key_DecCounter,Const_Counter
jmp Key_Debounced_End
Key_Debounced_ClearReg:
clr acc
xor a,Key_CheckIn
sz z
jmp Key_Debounced_End
jmp Key_Debounced_ClearReg_2
; clr acc
; xor a,Key_Process
; snz z
; jmp Key_Debounced_ClearReg_2
; jmp Key_Debounced_End
Key_Debounced_ClearReg_2:
clr Key_CheckIn
clr Key_Process
Key_Debounced_ClearReg_1:
;CALL FIFO1_WR_CHECK
;SNZ bFlag_FIFO_Ready
JMP Key_Debounced_End
;----------------------------------
;----------------------------------
nop
Key_Debounced_My_Function:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
nop
jmp Key_Debounced_End
Key_Debounced_End:
clr wdt
ret
;=========================Process
Key_Debounced_Process_Mute:
clr wdt
;----------------------------------
;----------------------------------
nop
kmov Key_Process,Key_CheckIn
jmp Key_Debounced_End
Key_Debounced_Process_Dec:
clr wdt
sdz Key_DecCounter
jmp Key_Debounced_End
;----------------------------------
;----------------------------------
nop
kmov Key_DecCounter,Const_Counter
nop
jmp Key_Debounced_End
Key_Debounced_Process_Inc:
clr wdt
sdz Key_IncCounter
jmp Key_Debounced_End
;----------------------------------
;----------------------------------
nop
kmov Key_IncCounter,Const_Counter
nop
jmp Key_Debounced_End
;===============================================================
; User Add Some Key Debounced Code
;===============================================================
Key_Debounced_PA0:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
jmp Key_Debounced_End
Key_Debounced_PA4:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
jmp Key_Debounced_End
Key_Debounced_PA5:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
jmp Key_Debounced_End
Key_Debounced_PA6:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
jmp Key_Debounced_End
Key_Debounced_PA7:
;-----------------------------------------------------------
; Here to add your another code !!
;-----------------------------------------------------------
NOP
jmp Key_Debounced_End
ENDIF
wait_about_1s:
;;;*******************************************
;;;delay 1S 255*255*3*16*0.3333333=1.04S
;;;*******************************************
clr wdt
clr Delay_1
clr Delay_2
kmov Delay_3,16
wait_about_1s_loop:
clr wdt
sdz Delay_1
jmp wait_about_1s_loop
sdz Delay_2
jmp wait_about_1s_loop
sdz Delay_3
jmp wait_about_1s_loop
clr wdt
nop
ret
Public IRQ_counter
Public FIFO_TEMP
Public TX_FIFO_STACK
Public RX_FIFO_STACK
Public TX_FIFO_ADDR
Public TX_FIFO_ADDR1
Public RX_FIFO_ADDR
Public RX_FIFO_ADDR1
Public FIFO_COUNTER
Public ADC_FIFO_COUNTER
Public DAC_FIFO_COUNTER
Public TX_FIFO_ADDR_temp
Public RX_FIFO_ADDR_temp
Public RX_FIFO_Status
Public TX_key_code
Public channel_1
Public channel_2
Public bFlag_IRQ_Flag
Public bFlag_IRQ_Flag2
Public bFlag_TX_FIFO
Public bFlag_TX_FIFO_Select
Public bFlag_TX_FIFO_Select1
Public bFlag_RX_FIFO_Select
Public bFlag_RX_FIFO_Select1
Public bFlag_TX_Mode
Public bFlag_RX_Mode
Public bFlag_RX_SPI_ok
Public bFlag_8k_fast
Public bFlag_End_SPI_Operation
Public temp_num
Public table_data
Public COMMAND_L
Public COMMAND_H
Public RF_number
Public TX_ADDRESS_Select
Public RX_ADDRESS_Select
Public nRF_ADDR_value
Public Delay_1
Public Delay_2
Public Delay_3
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -