1808 lines
39 KiB
NASM
1808 lines
39 KiB
NASM
|
;*******************************************************************************
|
|||
|
;*
|
|||
|
;* (c) Copyright 2005, Holtek Semiconductor Inc.
|
|||
|
;*
|
|||
|
;******************************************************************************/
|
|||
|
;*******************************************************************************
|
|||
|
;MODULE: main.asm
|
|||
|
|
|||
|
;INITIAL: 09/14/2006
|
|||
|
|
|||
|
;AUTHOR: C351 Ansonku.
|
|||
|
|
|||
|
;NOTE: HT82A821R , HT82A822R Main Function
|
|||
|
|
|||
|
;VERSION: 1.2
|
|||
|
;Function:
|
|||
|
;key debounced N
|
|||
|
;oled N
|
|||
|
;volume adjust Y
|
|||
|
;2005/05/13 Update Key Debounce
|
|||
|
;2005/05/25 Modify Pop noise
|
|||
|
;2005/06/06 Modify Send_Hand_Shake
|
|||
|
;2005/06/10 <09>P<EFBFBD>_ token <20><>,<2C><><EFBFBD>]<5D>J<EFBFBD><4A>setup scmd,<2C>n<EFBFBD>bŪ<62><C5AA>8 bytes<65>M<EFBFBD><4D>scmd<6D>Plen0
|
|||
|
;2005/12/20 USB <20>y<EFBFBD>{<7B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> jmp <20>覡 implement
|
|||
|
;2005/12/20 <09>N suspend <20>P<EFBFBD>_<EFBFBD>ק<EFBFBD><D7A7><EFBFBD> main function <20><>
|
|||
|
;*******************************************************************************
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
;Include File
|
|||
|
;ht82a822.inc ht82a822r register address defined
|
|||
|
;const.inc user defined
|
|||
|
;macro.asm macro function
|
|||
|
;***************************************************************
|
|||
|
#include ht82a821r.inc
|
|||
|
#include const.inc
|
|||
|
#include macro.asm
|
|||
|
|
|||
|
#define WaitBias 0
|
|||
|
|
|||
|
;====================================================================
|
|||
|
;Variable Defined , DATA <20>q 40H <20>}<7D>l<EFBFBD><6C>
|
|||
|
;====================================================================
|
|||
|
DATA .SECTION AT 40H 'DATA'
|
|||
|
#include memory.inc
|
|||
|
;***************************************************************
|
|||
|
; USB ISR Var (<28><><EFBFBD>_<EFBFBD>ɳƥ<C9B3><C6A5><EFBFBD>)
|
|||
|
;***************************************************************
|
|||
|
isr_usb_acc DB ?
|
|||
|
isr_usb_status DB ?
|
|||
|
isr_usb_mp1 DB ?
|
|||
|
isr_usb_mp0 DB ?
|
|||
|
isr_usb_tblp DB ?
|
|||
|
;***************************************************************
|
|||
|
; Timer0 ISR Var (<28><><EFBFBD>_<EFBFBD>ɳƥ<C9B3><C6A5><EFBFBD>)
|
|||
|
;***************************************************************
|
|||
|
;;isr_tmr0_acc DB ?
|
|||
|
;;isr_tmr0_status DB ?
|
|||
|
;;isr_tmr0_mp1 DB ?
|
|||
|
;;isr_tmr0_mp0 DB ?
|
|||
|
;;isr_tmr0_tblp DB ?
|
|||
|
;***************************************************************
|
|||
|
; Timer1 ISR Var (<28><><EFBFBD>_<EFBFBD>ɳƥ<C9B3><C6A5><EFBFBD>)
|
|||
|
;***************************************************************
|
|||
|
;;isr_tmr1_acc DB ?
|
|||
|
;;isr_tmr1_status DB ?
|
|||
|
;;isr_tmr1_mp1 DB ?
|
|||
|
;;isr_tmr1_mp0 DB ?
|
|||
|
;;isr_tmr1_tblp DB ?
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; Delay <20>ܼ<EFBFBD>
|
|||
|
;***************************************************************
|
|||
|
Delay_1 DB ?
|
|||
|
Delay_2 DB ?
|
|||
|
Delay_3 DB ?
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
;USB FIFO Variable
|
|||
|
;USB_Interface : to save usb current interface number
|
|||
|
;USB_Interface_Alt : to save usb current alternate of interface number
|
|||
|
;USB_Configuration : to save USB configuration number
|
|||
|
;FIFO_ADDR : to save USB ADDRESS
|
|||
|
;Loop_Counter , Data_Count , Data_Start : control_read variable
|
|||
|
;***************************************************************
|
|||
|
;For FIFO Access
|
|||
|
FIFO_SIZE db ?
|
|||
|
FIFO_SendLen db ?
|
|||
|
FIFO_out1 label byte
|
|||
|
FIFO_Type db ?
|
|||
|
FIFO_out2 label byte
|
|||
|
FIFO_Request db ?
|
|||
|
FIFO_out3 label byte
|
|||
|
FIFO_wValueL db ?
|
|||
|
FIFO_out4 label byte
|
|||
|
FIFO_wValueH db ?
|
|||
|
FIFO_out5 label byte
|
|||
|
FIFO_wIndexL db ?
|
|||
|
FIFO_out6 label byte
|
|||
|
FIFO_wIndexH db ?
|
|||
|
FIFO_out7 label byte
|
|||
|
FIFO_wLengthL db ?
|
|||
|
FIFO_out8 label byte
|
|||
|
FIFO_wLengthH db ?
|
|||
|
|
|||
|
FIFO_TEMP db ?
|
|||
|
;**************************************************************
|
|||
|
;USB <20><><EFBFBD>A<EFBFBD>Ȧs
|
|||
|
;
|
|||
|
;
|
|||
|
;**************************************************************
|
|||
|
USB_Interface db ?
|
|||
|
USB_Interface_Alt db ?
|
|||
|
USB_Configuration db ?
|
|||
|
;//save usb address
|
|||
|
FIFO_ADDR db ?
|
|||
|
|
|||
|
Loop_Counter db ?
|
|||
|
Data_Count db ?
|
|||
|
Data_Start db ?
|
|||
|
|
|||
|
;voice control
|
|||
|
INC_Counter db ?
|
|||
|
DEC_Counter db ?
|
|||
|
|
|||
|
|
|||
|
;FIFO
|
|||
|
bFlag_SetConfiguration_Ready dbit
|
|||
|
bFlag_SetInterface_Ready dbit
|
|||
|
bFlag_Real_Cmd dbit
|
|||
|
bFlag_FIFO_Ready dbit
|
|||
|
bFlag_FIFO_LEN0 dbit
|
|||
|
bFlag_RD_HTable dbit
|
|||
|
bFlag_wait_control_out dbit
|
|||
|
bFlag_SET_ADDRESS dbit
|
|||
|
bFlag_SCMD dbit
|
|||
|
bFlag_Enum_Ready dbit
|
|||
|
;Audio
|
|||
|
PortC_data db ?
|
|||
|
bFlag_Audio_Mute dbit
|
|||
|
Volume1 db ?
|
|||
|
Volume2 db ?
|
|||
|
|
|||
|
;Mute_Save db ?
|
|||
|
VolumeH_Save db ?
|
|||
|
VolumeL_Save db ?
|
|||
|
|
|||
|
nCmdIndex1 db ?
|
|||
|
|
|||
|
|
|||
|
;**************************************************************
|
|||
|
;Key <20><><EFBFBD>A<EFBFBD>Ȧs
|
|||
|
;
|
|||
|
;
|
|||
|
;**************************************************************
|
|||
|
|
|||
|
;;Key_Process db ?
|
|||
|
;;Key_CheckIn db ?
|
|||
|
;;Key_Counter db ?
|
|||
|
;;Key_Temp db ?
|
|||
|
;;Key_IncCounter db ?
|
|||
|
;;Key_DecCounter db ?
|
|||
|
|
|||
|
;modify for Remote Wakeup
|
|||
|
bRmtWakeup dbit
|
|||
|
b_wakeup dbit
|
|||
|
;modify 2007-06-27
|
|||
|
b_forceresumeWakeup dbit
|
|||
|
;modify 2007-07-03
|
|||
|
b_forusbRst dbit
|
|||
|
bFlagTMR1 dbit
|
|||
|
|
|||
|
;;***********************************************
|
|||
|
|
|||
|
extern control_read_table:NEAR
|
|||
|
extern device_desc_table:NEAR
|
|||
|
extern config_desc_table:NEAR
|
|||
|
|
|||
|
extern end_config_desc_table:NEAR
|
|||
|
extern hid_report_desc_table:NEAR
|
|||
|
extern end_hid_report_desc_table:NEAR
|
|||
|
|
|||
|
extern USBStringLanguageDescription:NEAR
|
|||
|
extern USBStringDescription1:NEAR
|
|||
|
extern USBStringDescription2:NEAR
|
|||
|
|
|||
|
extern config_desc_length:NEAR
|
|||
|
extern report_desc_length:NEAR
|
|||
|
;function
|
|||
|
extern Control_Read:NEAR
|
|||
|
extern FIFO0_RD_CHECK:NEAR
|
|||
|
extern FIFO1_RD_CHECK:NEAR
|
|||
|
extern FIFO2_RD_CHECK:NEAR
|
|||
|
extern FIFO3_RD_CHECK:NEAR
|
|||
|
extern FIFO4_RD_CHECK:NEAR
|
|||
|
extern FIFO5_RD_CHECK:NEAR
|
|||
|
extern FIFO0_WR_CHECK:NEAR
|
|||
|
extern FIFO1_WR_CHECK:NEAR
|
|||
|
extern FIFO2_WR_CHECK:NEAR
|
|||
|
extern FIFO3_WR_CHECK:NEAR
|
|||
|
extern FIFO4_WR_CHECK:NEAR
|
|||
|
extern FIFO5_WR_CHECK:NEAR
|
|||
|
extern Read_FIFO0:NEAR
|
|||
|
extern Read_FIFO1:NEAR
|
|||
|
extern Read_FIFO2:NEAR
|
|||
|
extern Read_FIFO3:NEAR
|
|||
|
extern Read_FIFO4:NEAR
|
|||
|
extern Read_FIFO5:NEAR
|
|||
|
extern Write_FIFO0:NEAR
|
|||
|
extern Write_FIFO1:NEAR
|
|||
|
extern Write_FIFO2:NEAR
|
|||
|
extern Write_FIFO3:NEAR
|
|||
|
extern Write_FIFO4:NEAR
|
|||
|
extern Write_FIFO5:NEAR
|
|||
|
extern Send_Hand_Shake:NEAR
|
|||
|
extern get_descriptor_length:NEAR
|
|||
|
|
|||
|
extern SetAddress:NEAR
|
|||
|
extern SetConfiguration:NEAR
|
|||
|
extern SetInterface:NEAR
|
|||
|
extern GetInterface:NEAR
|
|||
|
extern GetDescriptor:NEAR
|
|||
|
extern SetIdle:NEAR
|
|||
|
extern GetDeviceDescriptor:NEAR
|
|||
|
extern GetConfigurationDescriptor:NEAR
|
|||
|
extern GetStringDescriptor:NEAR
|
|||
|
extern GetStatus:NEAR
|
|||
|
;modify for Remote Wakeup
|
|||
|
extern GetStatus_Interface:NEAR
|
|||
|
;----------------------------------------------
|
|||
|
extern SetFeature:NEAR
|
|||
|
extern ClearFeature:NEAR
|
|||
|
extern SetReport:NEAR
|
|||
|
extern Execute:NEAR
|
|||
|
extern SendStall0:NEAR
|
|||
|
extern Delay_3us:NEAR
|
|||
|
|
|||
|
extern SetFeature_Endpoint:NEAR
|
|||
|
extern ClearFeature_Endpoint:NEAR
|
|||
|
extern GetStatus_Endpoint:NEAR
|
|||
|
|
|||
|
extern Check_Real_Cmd:NEAR
|
|||
|
extern GetConfiguration:NEAR
|
|||
|
|
|||
|
|
|||
|
;audio
|
|||
|
extern SetCur:NEAR
|
|||
|
extern GetMin:NEAR
|
|||
|
extern GetMax:NEAR
|
|||
|
extern GetRes:NEAR
|
|||
|
extern GetCur:NEAR
|
|||
|
|
|||
|
extern GetPipeBit:NEAR
|
|||
|
;***************************************************************
|
|||
|
; MCU Interrupt Table
|
|||
|
;***************************************************************
|
|||
|
|
|||
|
|
|||
|
CODE .section AT 00H 'code'
|
|||
|
ORG 00H
|
|||
|
jmp Start
|
|||
|
ORG 04H
|
|||
|
jmp USB_ISR
|
|||
|
ORG 08H
|
|||
|
jmp Timer_0_ISR
|
|||
|
ORG 0CH
|
|||
|
jmp Timer_1_ISR
|
|||
|
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Start : ORG 20H <20>}<7D>e<EFBFBD><65> interrupt
|
|||
|
;-----------------------------------------------------------
|
|||
|
ORG 20H
|
|||
|
Start:
|
|||
|
|
|||
|
call System_Initial
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Main LOOP Function :
|
|||
|
;-----------------------------------------------------------
|
|||
|
Main:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Check Suspend Function :
|
|||
|
; <20>Ĥ@<40><><EFBFBD>ˬd<CBAC><64> suspend <20><><EFBFBD>n<EFBFBD>A delay 1 S <20><><EFBFBD>A<EFBFBD>ˬd<CBAC>@<40><> , <20>p<EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD> suspend <20>T<EFBFBD><54><EFBFBD>٦b<D9A6>~<7E>i<EFBFBD>J halt
|
|||
|
; <20><><EFBFBD>ˬd timer <20><><EFBFBD>ɬO<C9AC>_<EFBFBD><5F><EFBFBD>}<7D><> , <20>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>Ȯ<EFBFBD><C8AE><EFBFBD><EFBFBD><EFBFBD> , <20><> resume <20><><EFBFBD>A<EFBFBD>}<7D><>
|
|||
|
;-----------------------------------------------------------
|
|||
|
SNZ USC.@USC_SUSP ;check SUSPEND ?
|
|||
|
JMP Main_My_Function
|
|||
|
|
|||
|
call wait_about_1s
|
|||
|
SNZ USC.@USC_SUSP
|
|||
|
JMP Main_My_Function
|
|||
|
|
|||
|
ToSuspend_again:
|
|||
|
clr wdt
|
|||
|
;; clr TMR1C.4
|
|||
|
clr USB_LED_ON
|
|||
|
clr UCC.@UCC_USBCKEN
|
|||
|
clr b_forceresumeWakeup
|
|||
|
;clr b_forusbRst
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Resume Function :
|
|||
|
; <20>b<EFBFBD><62> function <20>n<EFBFBD><6E> halt <20><><EFBFBD>e<EFBFBD><65> timer <20><><EFBFBD>A<EFBFBD><41><EFBFBD>_ , <20>åB<C3A5>}<7D><> USBCKEN
|
|||
|
;-----------------------------------------------------------
|
|||
|
HALT
|
|||
|
;; set TMR1C.4
|
|||
|
set USB_LED_ON
|
|||
|
set UCC.@UCC_USBCKEN
|
|||
|
|
|||
|
;modify 2007-06-28
|
|||
|
set AWR.@AWR_WKEN
|
|||
|
|
|||
|
;sZ b_forusbRst
|
|||
|
;JMP Start
|
|||
|
|
|||
|
sz b_forceresumeWakeup
|
|||
|
jmp RemoteWakeup
|
|||
|
|
|||
|
snz b_wakeup
|
|||
|
jmp RemoteWakeup_loop
|
|||
|
;clr b_wakeup
|
|||
|
snz bRmtWakeup ; <20>ˬdUSB device<63>O<EFBFBD>_Enable RemoteWakeup<75><70><EFBFBD>O
|
|||
|
jmp ToSuspend_again ; <20>YbRmtWakeup=0,<2C>h<EFBFBD>A<EFBFBD>צ^<5E><>suspend
|
|||
|
clr bRmtWakeup
|
|||
|
|
|||
|
;modify for Remote Wakeup
|
|||
|
RemoteWakeup_loop:
|
|||
|
clr b_wakeup
|
|||
|
|
|||
|
|
|||
|
;sz b_forceresumeWakeup
|
|||
|
;jmp RemoteWakeup
|
|||
|
|
|||
|
;sz USC.@USC_SUSP ;
|
|||
|
;jmp ToSuspend_again ;
|
|||
|
;JMP Main
|
|||
|
|
|||
|
RemoteWakeup:
|
|||
|
;modify 2007-06-27
|
|||
|
clr b_forceresumeWakeup
|
|||
|
SET USC.@USC_RMWK ; USC.RMWK=1
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
CLR USC.@USC_RMWK ; USC.RMWK=0
|
|||
|
;clr AWR.@AWR_WKEN
|
|||
|
;sZ b_forusbRst
|
|||
|
;JMP Start
|
|||
|
|
|||
|
SZ USC.@USC_SUSP ;check SUSPEND ?
|
|||
|
JMP Main
|
|||
|
|
|||
|
;-----------------------------------------------------
|
|||
|
Main_My_Function:
|
|||
|
CLR WDT
|
|||
|
SNZ bFlag_SetConfiguration_Ready
|
|||
|
JMP main ;;USB Not OK
|
|||
|
|
|||
|
;----------------------------------------------------
|
|||
|
SZ bIniFMOK
|
|||
|
JMP L_MyFunction ;;IniFM OK
|
|||
|
|
|||
|
MOV A,cFreqDefL
|
|||
|
MOV mFreqL,A
|
|||
|
MOV A,cFreqDefH
|
|||
|
MOV mFreqH,A
|
|||
|
CALL QN8072Init ;;Init QN8072
|
|||
|
SET bIniFMOK
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
L_MyFunction:
|
|||
|
clr wdt
|
|||
|
NOP
|
|||
|
snz bFlagTMR1
|
|||
|
;; jmp Main_End
|
|||
|
;; IF UseMediaKey
|
|||
|
;; call Key_Debounced
|
|||
|
;; ENDIF
|
|||
|
call Run_Volume_Step
|
|||
|
|
|||
|
clr bFlagTMR1
|
|||
|
|
|||
|
Main_End:
|
|||
|
|
|||
|
JMP Main
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; System Initial
|
|||
|
; 1.ram_initial
|
|||
|
; 1.Timer Initial
|
|||
|
; 2.USB Config
|
|||
|
;***************************************************************
|
|||
|
System_Initial:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Debug
|
|||
|
;-----------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Modify Pop Noise
|
|||
|
; <20>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD>Ǧ<EFBFBD> code <20><> DA
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
mov a,WDTS
|
|||
|
mov FIFO_TEMP,a
|
|||
|
|
|||
|
mov a,01010111b
|
|||
|
mov WDTS,a
|
|||
|
|
|||
|
clr [02DH]
|
|||
|
|
|||
|
|
|||
|
mov a,80H
|
|||
|
mov [02EH],a
|
|||
|
nop
|
|||
|
nop
|
|||
|
set [02FH].3
|
|||
|
nop
|
|||
|
nop
|
|||
|
clr [02FH].3
|
|||
|
nop
|
|||
|
nop
|
|||
|
|
|||
|
mov a,FIFO_TEMP
|
|||
|
mov WDTS,a
|
|||
|
;-----------------------------------------------------------
|
|||
|
; <20><><EFBFBD>B<EFBFBD>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD>ݹq<DDB9>e<EFBFBD><65><EFBFBD>W<EFBFBD>ɮɶ<C9AE>
|
|||
|
; <20><><EFBFBD>ծ<EFBFBD><D5AE><EFBFBD><EFBFBD>ӧ<EFBFBD> WaitBias <20>]<5D><> 0 , <20>D<EFBFBD><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӧ<EFBFBD> WaitBais <20>]<5D><> 1
|
|||
|
; Wait Bais and ROUT LOUT Capacity rise about 1.98ms
|
|||
|
; delay time = 255*255*30*3(sdz,jmp) cycle * 0.3333us/cycle = 1.98 ms
|
|||
|
;-----------------------------------------------------------
|
|||
|
IF WaitBias
|
|||
|
clr pac
|
|||
|
|
|||
|
clr FIFO_OUT1
|
|||
|
clr FIFO_OUT2
|
|||
|
clr FIFO_OUT3
|
|||
|
mov a,9
|
|||
|
mov FIFO_OUT3,a
|
|||
|
clr pa
|
|||
|
|
|||
|
|
|||
|
|
|||
|
System_Initial_Loop:
|
|||
|
clr wdt
|
|||
|
sdz FIFO_OUT1
|
|||
|
jmp System_Initial_Loop
|
|||
|
sdz FIFO_OUT2
|
|||
|
jmp System_Initial_Loop
|
|||
|
sdz FIFO_OUT3
|
|||
|
jmp System_Initial_Loop
|
|||
|
nop
|
|||
|
set pa
|
|||
|
clr wdt
|
|||
|
ENDIF
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Codec Limit
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr [02DH]
|
|||
|
set [02EH]
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; ram_initial : clear the ram of bank 0
|
|||
|
;-----------------------------------------------------------
|
|||
|
ram_initial: ;clear RAM (040H--0FFH)
|
|||
|
MOV A,040H
|
|||
|
MOV MP0,A
|
|||
|
MOV A,192
|
|||
|
ram_initial_next_addr:
|
|||
|
clr wdt
|
|||
|
CLR R0
|
|||
|
INC MP0
|
|||
|
SDZ acc
|
|||
|
JMP ram_initial_next_addr
|
|||
|
|
|||
|
CLR bFlag_RD_HTable
|
|||
|
;-----------------------------------------------------------
|
|||
|
; timer_initial : do timer initial
|
|||
|
;-----------------------------------------------------------
|
|||
|
timer_initial:
|
|||
|
;; MOV A,80H ; <20>]<5D>w low <20><> high IJ<>o<EFBFBD>ó]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>ɼҦ<C9BC>
|
|||
|
;; MOV TMR0C,A ;
|
|||
|
;; MOV A,00H ;
|
|||
|
;; MOV TMR0L,A
|
|||
|
;; MOV A,000H
|
|||
|
;; MOV TMR0H,A
|
|||
|
|
|||
|
mov a,80H
|
|||
|
mov TMR1C,a
|
|||
|
mov a,00H
|
|||
|
mov TMR1L,a
|
|||
|
mov TMR1H,a
|
|||
|
|
|||
|
;-----------------------------------------------------------
|
|||
|
; config_io_port :
|
|||
|
;-----------------------------------------------------------
|
|||
|
;; clr PA
|
|||
|
;-----------------------------------------------------------
|
|||
|
; config_io_port :(USB Audio)
|
|||
|
;-----------------------------------------------------------
|
|||
|
SET P_LED
|
|||
|
CLR P_LEDC
|
|||
|
SET P_SDA
|
|||
|
CLR P_SDAC
|
|||
|
SET P_SCL
|
|||
|
CLR P_SCLC
|
|||
|
|
|||
|
;;Initial QN8072 Reg0~4
|
|||
|
MOV A,51H
|
|||
|
MOV mQNReg[0],A
|
|||
|
MOV A,18H
|
|||
|
MOV mQNReg[1],A
|
|||
|
MOV A,0B9H
|
|||
|
MOV mQNReg[2],A
|
|||
|
MOV A,50H
|
|||
|
MOV mQNReg[3],A
|
|||
|
MOV A,58H
|
|||
|
MOV mQNReg[4],A
|
|||
|
|
|||
|
|
|||
|
;; IF UseMediaKey
|
|||
|
;; kmov pac,Key_Defined
|
|||
|
;; ENDIF
|
|||
|
;; IFE UseMediaKey
|
|||
|
;; kmov pac,00000000b
|
|||
|
;; ENDIF
|
|||
|
|
|||
|
;; clr pb
|
|||
|
;; clr pbc ;change to USB Len On
|
|||
|
;;; clr pc ;for volume control
|
|||
|
;; set pcc
|
|||
|
;; clr pd
|
|||
|
;; clr pdc
|
|||
|
;-----------------------------------------------------------
|
|||
|
; config_usb_speaker_register :
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr USVC ;mute & 0db
|
|||
|
clr USF
|
|||
|
;-----------------------------------------------------------
|
|||
|
; reset variable :
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr bFlag_Audio_Mute
|
|||
|
clr VolumeH_Save
|
|||
|
mov a,Cur_Volume
|
|||
|
mov VolumeL_Save,a
|
|||
|
;-----------------------------------------------------------
|
|||
|
; config_usb : do usb config
|
|||
|
;-----------------------------------------------------------
|
|||
|
config_usb:
|
|||
|
CLR INTC0
|
|||
|
SET INTC0.@INTC0_EEI ;enable USB
|
|||
|
SET INTC0.@INTC0_EMI ;Global interrupt
|
|||
|
|
|||
|
set MISC.@MISC_ISOEN
|
|||
|
clr STALL
|
|||
|
clr UCC.@UCC_SUSP2
|
|||
|
|
|||
|
;SYSCLK
|
|||
|
;set UCC.6 //set to 6 MHz
|
|||
|
|
|||
|
set UCC.@UCC_USBCKEN
|
|||
|
nop
|
|||
|
set USC.@USC_V33C ;//pc <20>}<7D>l<EFBFBD>e command <20>L<EFBFBD><4C>
|
|||
|
clr wdt
|
|||
|
;modify for Remote Wakeup
|
|||
|
clr bRmtWakeup
|
|||
|
clr b_wakeup
|
|||
|
clr b_forusbRst
|
|||
|
;clr AWR.@AWR_WKEN
|
|||
|
RET
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; 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
|
|||
|
|
|||
|
Timer_0_My_Function:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
;; NOP
|
|||
|
;; clr wdt
|
|||
|
|
|||
|
Timer_0_ISR_END:
|
|||
|
;; 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
|
|||
|
;; clr wdt
|
|||
|
;IF UseMediaKey
|
|||
|
;call Key_Debounced
|
|||
|
;ENDIF
|
|||
|
;call Run_Volume_Step
|
|||
|
set bFlagTMR1
|
|||
|
|
|||
|
;; 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
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; USB_ISR : USB Interrupt Routine
|
|||
|
; 1.Back up every status register
|
|||
|
; 2.check which endpoint is interrupt
|
|||
|
;***************************************************************
|
|||
|
USB_ISR:
|
|||
|
;CLR INTC0.@INTC0_EEI ;disable USB interrupt
|
|||
|
;SET INTC0.@INTC0_EMI
|
|||
|
|
|||
|
MOV isr_usb_acc,A ;save ACC
|
|||
|
MOV A,STATUS
|
|||
|
MOV isr_usb_status,A ;save status
|
|||
|
MOV A,MP1
|
|||
|
MOV isr_usb_mp1,A ;save mp1
|
|||
|
MOV A,MP0
|
|||
|
MOV isr_usb_mp0,A ;save mp0
|
|||
|
MOV A,TBLP
|
|||
|
MOV isr_usb_tblp,A ;save TBLP
|
|||
|
|
|||
|
;modify 2007-07-03
|
|||
|
SZ USC.@USC_URST
|
|||
|
SET b_forusbRst
|
|||
|
CLR USC.@USC_URST
|
|||
|
|
|||
|
;modify 2007-06-27
|
|||
|
SZ USC.@USC_RESUME
|
|||
|
set b_forceresumeWakeup;;JMP RemoteWakeup
|
|||
|
|
|||
|
clr wdt
|
|||
|
;;Check Which FIFO is interrupt
|
|||
|
JMP Check_Access_FIFO
|
|||
|
|
|||
|
|
|||
|
|
|||
|
USB_ISR_END:
|
|||
|
MOV A,isr_usb_tblp ;restore TBLP
|
|||
|
MOV TBLP,A
|
|||
|
MOV A,isr_usb_mp0 ;restore MP0
|
|||
|
MOV MP0,A
|
|||
|
MOV A,isr_usb_mp1 ;restore MP1
|
|||
|
MOV MP1,A
|
|||
|
MOV A,isr_usb_status ;restore STATUS
|
|||
|
MOV STATUS,A
|
|||
|
MOV A,isr_usb_acc ;restore ACC
|
|||
|
|
|||
|
|
|||
|
;CLR INTC0.@INTC0_EMI
|
|||
|
;SET INTC0.@INTC0_EEI
|
|||
|
|
|||
|
|
|||
|
RETI
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; USB_EPX_ISR
|
|||
|
; <09><><EFBFBD>e<EFBFBD>ϥ<EFBFBD> USR@EP0IF EQU [01BH].0 <20>P<EFBFBD>O<EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
; <09><><EFBFBD>令 USB_STATUS_CONTROL.@EP0IF
|
|||
|
;***************************************************************
|
|||
|
Check_Access_FIFO:
|
|||
|
clr wdt
|
|||
|
SZ USR.@USR_EP0F
|
|||
|
JMP USB_EP0_ISR
|
|||
|
SZ USR.@USR_EP1F
|
|||
|
JMP USB_EP1_ISR
|
|||
|
SZ USR.@USR_EP2F
|
|||
|
JMP USB_EP2_ISR
|
|||
|
JMP USB_ISR_END
|
|||
|
|
|||
|
;-----------------------------------------------------
|
|||
|
;EPNPOINT 0
|
|||
|
;-----------------------------------------------------
|
|||
|
USB_EP0_ISR:
|
|||
|
;CLR USR.@USR_EP0F
|
|||
|
|
|||
|
;;case1
|
|||
|
SZ MISC.@MISC_SCMD ;check setup token
|
|||
|
JMP USB_EP0_SETUP_TOKEN
|
|||
|
|
|||
|
SZ MISC.@MISC_LEN0 ;check out ack token
|
|||
|
JMP USB_EP0_OUT_ACK_TOKEN
|
|||
|
|
|||
|
CALL FIFO0_RD_CHECK
|
|||
|
SZ bFlag_FIFO_Ready
|
|||
|
JMP USB_EP0_OUT_TOKEN
|
|||
|
;clr MISC.@MISC_REQ
|
|||
|
|
|||
|
CALL FIFO0_WR_CHECK
|
|||
|
SZ bFlag_FIFO_Ready
|
|||
|
JMP USB_EP0_IN_TOKEN ;else is in token
|
|||
|
;clr MISC.@MISC_REQ
|
|||
|
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
|
|||
|
JMP USB_EP0_ISR_END
|
|||
|
|
|||
|
|
|||
|
;;case2
|
|||
|
;; SZ MISC.@MISC_SCMD ;check setup token
|
|||
|
;; JMP USB_EP0_SETUP_TOKEN
|
|||
|
;;
|
|||
|
;; SZ MISC.@MISC_LEN0 ;check out ack token
|
|||
|
;; JMP USB_EP0_OUT_ACK_TOKEN
|
|||
|
;;
|
|||
|
;; CALL FIFO0_RD_CHECK
|
|||
|
;; SZ bFlag_FIFO_Ready
|
|||
|
;; JMP USB_EP0_OUT_TOKEN
|
|||
|
;; ;clr MISC.@MISC_REQ
|
|||
|
;;
|
|||
|
;; CALL FIFO0_WR_CHECK
|
|||
|
;; SZ bFlag_FIFO_Ready
|
|||
|
;; JMP USB_EP0_IN_TOKEN ;else is in token
|
|||
|
;; ;clr MISC.@MISC_REQ
|
|||
|
;;
|
|||
|
;;
|
|||
|
;; JMP USB_EP0_ISR_END
|
|||
|
|
|||
|
|
|||
|
;;case3
|
|||
|
;; call FIFO0_RD_CHECK
|
|||
|
;; sz bFlag_FIFO_Ready
|
|||
|
;; jmp Have_Data_Out
|
|||
|
;;
|
|||
|
;; call FIFO0_WR_CHECK
|
|||
|
;; sz bFlag_FIFO_Ready
|
|||
|
;; jmp USB_EP0_IN_TOKEN
|
|||
|
;;
|
|||
|
;; jmp USB_EP0_ISR_END
|
|||
|
;;
|
|||
|
;;Have_Data_Out:
|
|||
|
;; sz MISC.@MISC_SCMD
|
|||
|
;; jmp USB_EP0_SETUP_TOKEN
|
|||
|
;; sz MISC.@MISC_LEN0
|
|||
|
;; jmp USB_EP0_OUT_ACK_TOKEN
|
|||
|
;;
|
|||
|
;; jmp USB_EP0_OUT_TOKEN
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
USB_EP0_SETUP_TOKEN: ;PARSE SETUP TOKEN
|
|||
|
clr wdt
|
|||
|
JMP StageOne
|
|||
|
|
|||
|
USB_EP0_IN_TOKEN:
|
|||
|
clr wdt
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
CALL control_read
|
|||
|
JMP USB_EP0_ISR_END
|
|||
|
|
|||
|
USB_EP0_OUT_ACK_TOKEN:
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
clr wdt
|
|||
|
clr MISC.@MISC_LEN0
|
|||
|
JMP USB_EP0_ISR_END
|
|||
|
|
|||
|
;--------------------------------------------------------------
|
|||
|
; Parser nCmdIndex1
|
|||
|
;--------------------------------------------------------------
|
|||
|
USB_EP0_OUT_TOKEN:
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
clr wdt
|
|||
|
clr acc
|
|||
|
xor a,nCmdIndex1
|
|||
|
sz z
|
|||
|
jmp USB_EP0_ISR_END
|
|||
|
|
|||
|
USB_EP0_OUT_TOKEN_Loop:
|
|||
|
clr wdt
|
|||
|
CALL Check_Real_Cmd
|
|||
|
sz bFlag_Real_Cmd
|
|||
|
jmp USB_EP0_OUT_TOKEN_End
|
|||
|
|
|||
|
clr wdt
|
|||
|
CALL FIFO0_RD_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP USB_EP0_OUT_TOKEN_Loop
|
|||
|
|
|||
|
CALL READ_FIFO0
|
|||
|
NOP
|
|||
|
CALL Send_Hand_Shake
|
|||
|
|
|||
|
;decode command
|
|||
|
;//parse Cmd , 21 = SetReport Out Data
|
|||
|
mov a,21H
|
|||
|
xor a,nCmdIndex1
|
|||
|
sz z
|
|||
|
jmp ProcessOutData
|
|||
|
|
|||
|
;//parse Cmd , 18 = Mute Control
|
|||
|
mov a,18H
|
|||
|
xor a,nCmdIndex1
|
|||
|
sz z
|
|||
|
jmp Implement_Mute
|
|||
|
|
|||
|
;//parse Cmd , 28 = Volume Control
|
|||
|
mov a,28H
|
|||
|
xor a,nCmdIndex1
|
|||
|
sz z
|
|||
|
jmp Implement_Volume
|
|||
|
|
|||
|
;//unknow command
|
|||
|
jmp USB_EP0_OUT_TOKEN_End
|
|||
|
|
|||
|
USB_EP0_OUT_TOKEN_End:
|
|||
|
clr nCmdIndex1
|
|||
|
JMP USB_EP0_ISR_END
|
|||
|
|
|||
|
|
|||
|
Implement_Mute:
|
|||
|
clr wdt
|
|||
|
sz FIFO_out1.0
|
|||
|
clr USVC.7 ;mute
|
|||
|
snz FIFO_out1.0
|
|||
|
set USVC.7 ;unmute
|
|||
|
|
|||
|
sz FIFO_out1.0
|
|||
|
set bFlag_Audio_Mute ;mute
|
|||
|
snz FIFO_out1.0
|
|||
|
clr bFlag_Audio_Mute ;unmute
|
|||
|
|
|||
|
sz FIFO_out1.0
|
|||
|
set MUTE_LED_ON ;mute
|
|||
|
snz FIFO_out1.0
|
|||
|
clr MUTE_LED_ON ;unmute
|
|||
|
|
|||
|
|
|||
|
snz bFlag_Audio_Mute
|
|||
|
jmp Implement_Mute_1
|
|||
|
|
|||
|
mov a,Min_Volume
|
|||
|
mov USVC,a
|
|||
|
|
|||
|
clr USVC.7
|
|||
|
|
|||
|
|
|||
|
Implement_Mute_1:
|
|||
|
clr wdt
|
|||
|
;//kmov Mute_Save,FIFO_out1
|
|||
|
jmp USB_EP0_OUT_TOKEN_End
|
|||
|
|
|||
|
|
|||
|
Implement_Volume:
|
|||
|
clr wdt
|
|||
|
kmov VolumeH_Save,FIFO_out1
|
|||
|
kmov VolumeL_Save,FIFO_out2
|
|||
|
Implement_Volume_End:
|
|||
|
jmp USB_EP0_OUT_TOKEN_End
|
|||
|
|
|||
|
USB_EP0_ISR_END:
|
|||
|
;//CLR USR.@USR_EP0F
|
|||
|
JMP USB_ISR_END
|
|||
|
;-----------------------------------------------------
|
|||
|
;EPNPOINT 1 Interrupt
|
|||
|
;-----------------------------------------------------
|
|||
|
USB_EP1_ISR:
|
|||
|
CLR USR.@USR_EP1F
|
|||
|
SNZ bIniFMOK
|
|||
|
JMP USB_EP1_ISR_END ;;FM Not initial OK,exit
|
|||
|
|
|||
|
;check the data is in fifo ?
|
|||
|
CALL FIFO1_RD_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP USB_EP1_ISR_END
|
|||
|
CALL Read_FIFO1
|
|||
|
|
|||
|
|
|||
|
;;CALL FIFO1_WR_CHECK
|
|||
|
;;SNZ bFlag_FIFO_Ready
|
|||
|
;;JMP USB_EP1_ISR_END
|
|||
|
;;MOV A,00H
|
|||
|
;;MOV FIFO_OUT1,A
|
|||
|
;;MOV A,01H
|
|||
|
;;MOV FIFO_SendLen,A
|
|||
|
;;CALL WRITE_FIFO1
|
|||
|
|
|||
|
CALL QN8027
|
|||
|
|
|||
|
|
|||
|
|
|||
|
USB_EP1_ISR_END:
|
|||
|
JMP USB_ISR_END
|
|||
|
;-----------------------------------------------------
|
|||
|
;EPNPOINT 2 Interrupt
|
|||
|
;-----------------------------------------------------
|
|||
|
USB_EP2_ISR:
|
|||
|
CLR USR.@USR_EP2F
|
|||
|
;;SET ET0I ;enable timer0
|
|||
|
;;SET TMR0C.4 ;<3B>P<EFBFBD><50> <20><><EFBFBD>ɶ}<7D>l<EFBFBD>p<EFBFBD><70>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
clr MISC.@MISC_ISOEN ;<3B><><EFBFBD><EFBFBD> ISO <20><><EFBFBD>_
|
|||
|
|
|||
|
|
|||
|
USB_EP2_ISR_END:
|
|||
|
JMP USB_ISR_END
|
|||
|
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; Stage One .... Test bmRequestType
|
|||
|
; CALL FIFO_RD_CHECK will return bFlag_FIFO_Ready?(1=Ready,0=not ready)
|
|||
|
;***************************************************************
|
|||
|
StageOne:
|
|||
|
clr wdt
|
|||
|
CALL FIFO0_RD_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP StageOne_End ; the EP0 FIFO RD is not ready <20>S<EFBFBD><53>data<74>i<EFBFBD><69>
|
|||
|
CALL Read_FIFO0 ; Read EP0 Command
|
|||
|
clr MISC.@MISC_SCMD
|
|||
|
clr MISC.@MISC_LEN0
|
|||
|
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
|
|||
|
clr wdt
|
|||
|
nop
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,00H
|
|||
|
SZ Z ;FIFO_TYPE=00H
|
|||
|
JMP Request_Type00
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,01H
|
|||
|
SZ Z ;FIFO_TYPE=01H
|
|||
|
JMP Request_Type01
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,02H
|
|||
|
SZ Z ;FIFO_TYPE=02H
|
|||
|
JMP Request_Type02
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,80H
|
|||
|
SZ Z ;FIFO_TYPE=80H
|
|||
|
JMP Request_Type80
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,81H
|
|||
|
SZ Z ;FIFO_TYPE=81H
|
|||
|
JMP Request_Type81
|
|||
|
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,82H
|
|||
|
SZ Z ;FIFO_TYPE=82H
|
|||
|
JMP Request_Type82
|
|||
|
|
|||
|
;===============================================================
|
|||
|
;HID & Audio
|
|||
|
;===============================================================
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,21H
|
|||
|
SZ Z
|
|||
|
JMP Request_Type21
|
|||
|
|
|||
|
;Volume Control
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_TYPE
|
|||
|
XOR A,0A1H
|
|||
|
SZ Z
|
|||
|
JMP Request_TypeA1
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
|
|||
|
|
|||
|
StageOne_End:
|
|||
|
;modify 2007-06-20
|
|||
|
CLR USR.@USR_EP0F ;Fix OHCI Volume
|
|||
|
RET
|
|||
|
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; USB Stage2
|
|||
|
;
|
|||
|
;***************************************************************
|
|||
|
;Device to Host with device as recipient
|
|||
|
;===============================================================
|
|||
|
;Request_Type00
|
|||
|
;bRequest Function
|
|||
|
; 1 Clear Feature
|
|||
|
; 3 Set Feature
|
|||
|
; 5 Set Address
|
|||
|
; 7 not support
|
|||
|
; 9 Set Configuration
|
|||
|
;===============================================================
|
|||
|
;===============================================================
|
|||
|
Request_TYPE00:
|
|||
|
;Set the device address to a non-zero value
|
|||
|
;Set address
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_address
|
|||
|
SZ Z
|
|||
|
JMP SetAddress
|
|||
|
|
|||
|
;Set Configuration
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_configuration
|
|||
|
SNZ Z
|
|||
|
JMP Request_TYPE00_NEXT
|
|||
|
|
|||
|
SET ET1I
|
|||
|
SET TMR1C.4
|
|||
|
|
|||
|
JMP SetConfiguration
|
|||
|
|
|||
|
;Clear Feature
|
|||
|
;The HT82A822R return ACK without ERROR
|
|||
|
Request_TYPE00_NEXT:
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,clear_feature
|
|||
|
SZ Z
|
|||
|
JMP ClearFeature
|
|||
|
|
|||
|
;Set Feature
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_feature
|
|||
|
SZ Z
|
|||
|
JMP SetFeature
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
;===============================================================
|
|||
|
Request_Type01:
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_interface
|
|||
|
SZ Z
|
|||
|
JMP SetInterface
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
;===============================================================
|
|||
|
Request_Type02:
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,clear_feature
|
|||
|
SZ Z
|
|||
|
JMP ClearFeature_Endpoint
|
|||
|
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_feature
|
|||
|
SZ Z
|
|||
|
JMP SetFeature_Endpoint
|
|||
|
|
|||
|
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;===============================================================
|
|||
|
Request_TYPE80:
|
|||
|
;Get Status
|
|||
|
;Get Descriptor 80 06
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_descriptor
|
|||
|
SZ Z
|
|||
|
JMP GetDescriptor
|
|||
|
|
|||
|
;Get Configuration 80 08
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_configuration
|
|||
|
SZ Z
|
|||
|
JMP GetConfiguration
|
|||
|
|
|||
|
;Get Status(DEVICE) 80 00
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_status
|
|||
|
SZ Z
|
|||
|
JMP GetStatus
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
|
|||
|
;===============================================================
|
|||
|
Request_TYPE81:
|
|||
|
;get status
|
|||
|
;get interface -> not support
|
|||
|
;HID class defines one more request for bmRequestType=81
|
|||
|
;get HID descriptor
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_descriptor
|
|||
|
SZ Z
|
|||
|
JMP GetDescriptor
|
|||
|
|
|||
|
;Get Interface
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_interface
|
|||
|
SZ Z
|
|||
|
JMP GetInterface
|
|||
|
|
|||
|
;Get Status(INTERFACE) 81 00
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_status
|
|||
|
SZ Z
|
|||
|
JMP GetStatus_Interface ;modify for Remote Wakeup
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
;===============================================================
|
|||
|
Request_TYPE82:
|
|||
|
;get status
|
|||
|
;Get Status(INTERFACE) 82 00
|
|||
|
clr wdt
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,get_status
|
|||
|
SZ Z
|
|||
|
JMP GetStatus_Endpoint
|
|||
|
|
|||
|
JMP SendStall0
|
|||
|
|
|||
|
;===============================================================
|
|||
|
;===============================================================
|
|||
|
;Now parse HID class Descriptor Types
|
|||
|
;===============================================================
|
|||
|
;host to device with endpoint as recipient
|
|||
|
Request_TYPE21:
|
|||
|
clr wdt
|
|||
|
;set report
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,set_report
|
|||
|
SZ Z
|
|||
|
JMP SetReport
|
|||
|
|
|||
|
;------------------------------------------------------
|
|||
|
;audio class-specific request code
|
|||
|
;------------------------------------------------------
|
|||
|
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,SET_CUR
|
|||
|
SZ Z
|
|||
|
JMP SetCur
|
|||
|
|
|||
|
Request_TYPE21_End:
|
|||
|
JMP SendStall0
|
|||
|
|
|||
|
Request_TypeA1:
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,GET_MIN
|
|||
|
SZ Z
|
|||
|
JMP GetMin
|
|||
|
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,GET_MAX
|
|||
|
SZ Z
|
|||
|
JMP GetMax
|
|||
|
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,GET_RES
|
|||
|
SZ Z
|
|||
|
JMP GetRes
|
|||
|
|
|||
|
MOV A,FIFO_REQUEST
|
|||
|
XOR A,GET_CUR
|
|||
|
SZ Z
|
|||
|
JMP GetCur
|
|||
|
|
|||
|
|
|||
|
Request_TYPEA1_End:
|
|||
|
JMP SendStall0
|
|||
|
;===============================================================
|
|||
|
ProcessOutData:
|
|||
|
sz bFlag_Real_Cmd
|
|||
|
jmp ProcessOutData_End
|
|||
|
|
|||
|
;; clr wdt
|
|||
|
;; CALL FIFO0_RD_CHECK
|
|||
|
;; SNZ bFlag_FIFO_Ready
|
|||
|
;; JMP ProcessOutData ; the EP0 FIFO RD is not ready <20>S<EFBFBD><53>data<74>i<EFBFBD><69>
|
|||
|
|
|||
|
;; CALL Read_FIFO0
|
|||
|
CALL QN8027
|
|||
|
;; nop
|
|||
|
;; call FIFO1_WR_CHECK
|
|||
|
;; snz bFlag_FIFO_Ready
|
|||
|
;; jmp ProcessOutData_End
|
|||
|
|
|||
|
;; call Write_FIFO1
|
|||
|
|
|||
|
|
|||
|
ProcessOutData_End:
|
|||
|
clr nCmdIndex1
|
|||
|
jmp USB_EP0_ISR_END
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; Run_Volume_Step Module
|
|||
|
; Volume1:Target
|
|||
|
; Volume2:Now
|
|||
|
;***************************************************************
|
|||
|
Run_Volume_Step:
|
|||
|
clr wdt
|
|||
|
;check mute?
|
|||
|
sz bFlag_Audio_Mute
|
|||
|
jmp Run_Volume_Step_End
|
|||
|
|
|||
|
|
|||
|
mov a,VolumeL_Save
|
|||
|
mov Volume1,a
|
|||
|
|
|||
|
;check Volume1 = 080H ?
|
|||
|
mov a,80H
|
|||
|
xor a,Volume1
|
|||
|
sz z
|
|||
|
jmp Run_Volume_Step_Process_Min
|
|||
|
jmp Run_Volume_Step_1
|
|||
|
|
|||
|
Run_Volume_Step_Process_Min:
|
|||
|
mov a,Min_Volume
|
|||
|
mov Volume1,a
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Run_Volume_Step_1:
|
|||
|
|
|||
|
clr Volume1.7
|
|||
|
|
|||
|
mov a,01111111b
|
|||
|
and a,USVC
|
|||
|
mov Volume2,a ;Volume2=now Volume1=target
|
|||
|
|
|||
|
|
|||
|
mov a,Volume1
|
|||
|
xor a,Volume2
|
|||
|
sz z
|
|||
|
jmp Run_Volume_Step_End ;target=now
|
|||
|
|
|||
|
clr wdt
|
|||
|
mov a,Volume1
|
|||
|
sub a,Volume2 ;target-now
|
|||
|
sz C
|
|||
|
jmp Run_Volume_1 ;>0
|
|||
|
jmp Run_Volume_2 ;<0
|
|||
|
|
|||
|
Run_Volume_1:
|
|||
|
snz Volume1.6
|
|||
|
jmp Run_Volume_Step_Inc
|
|||
|
snz Volume2.6
|
|||
|
jmp Run_Volume_Step_Dec
|
|||
|
jmp Run_Volume_Step_Inc
|
|||
|
|
|||
|
Run_Volume_2:
|
|||
|
snz Volume2.6
|
|||
|
jmp Run_Volume_Step_Dec
|
|||
|
snz Volume1.6
|
|||
|
jmp Run_Volume_Step_Inc
|
|||
|
jmp Run_Volume_Step_Dec
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Run_Volume_Step_Inc:
|
|||
|
INC Volume2
|
|||
|
jmp Run_Volume_Step_2
|
|||
|
Run_Volume_Step_Dec:
|
|||
|
DEC Volume2
|
|||
|
Run_Volume_Step_2:
|
|||
|
sz USVC.7
|
|||
|
set Volume2.7
|
|||
|
snz USVC.7
|
|||
|
clr Volume2.7
|
|||
|
kmov USVC,Volume2
|
|||
|
clr wdt
|
|||
|
Run_Volume_Step_End:
|
|||
|
ret
|
|||
|
|
|||
|
;***************************************************************
|
|||
|
; Key_Debounced Module
|
|||
|
; Key_Defined : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bit
|
|||
|
; Key_Process : <20>B<EFBFBD>z<EFBFBD>L<EFBFBD><4C> <20><> set <20><> bit
|
|||
|
; Key_CheckIn : <20>Ĥ@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݭn set <20><> bit
|
|||
|
; Key_Counter : <20>x<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD> bit <20><> 1
|
|||
|
; <09>p<EFBFBD>G<EFBFBD>ݭn<DDAD>s<EFBFBD><73><EFBFBD>ʧ@<40>h<EFBFBD>Ф<EFBFBD> set Key_Process (<28>p INC,DEC Volume)
|
|||
|
; <09>p<EFBFBD>G<EFBFBD><47><EFBFBD>ݭn<DDAD>s<EFBFBD><73><EFBFBD>ʧ@<40><> set Key_Process (<28>p Mute,Play,Stop)
|
|||
|
;***************************************************************
|
|||
|
IF UseMediaKey
|
|||
|
Key_Debounced:
|
|||
|
clr wdt
|
|||
|
mov a,VIOP
|
|||
|
cpl acc
|
|||
|
mov PortC_Data,a
|
|||
|
|
|||
|
mov a,Key_Defined
|
|||
|
andm a,PortC_Data
|
|||
|
sz z
|
|||
|
jmp Key_Debounced_ClearReg ;//<2F>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><51><EFBFBD>U
|
|||
|
|
|||
|
|
|||
|
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,080H
|
|||
|
xor a,Key_Temp
|
|||
|
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
|
|||
|
|
|||
|
;<3B>Y<EFBFBD><59><EFBFBD>ݭn<DDAD>B<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> jmp Key_Debounced_End
|
|||
|
nop
|
|||
|
nop
|
|||
|
nop
|
|||
|
Key_Debounced_Process:
|
|||
|
clr wdt
|
|||
|
mov a,Key_Counter
|
|||
|
addm a,pcl
|
|||
|
jmp Key_Debounced_Process_WindowsMediaPlayer
|
|||
|
jmp Key_Debounced_Process_Mute
|
|||
|
jmp Key_Debounced_Process_Dec
|
|||
|
jmp Key_Debounced_Process_Inc
|
|||
|
jmp Key_Debounced_Process_PlayPause
|
|||
|
jmp Key_Debounced_Process_Stop
|
|||
|
jmp Key_Debounced_Process_NextTrack
|
|||
|
jmp Key_Debounced_Process_PreviousTrack
|
|||
|
|
|||
|
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
|
|||
|
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,00H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,00H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
;//write fifo
|
|||
|
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
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,08H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,08H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
jmp Key_Debounced_End
|
|||
|
Key_Debounced_Process_Dec:
|
|||
|
clr wdt
|
|||
|
sdz Key_DecCounter
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_DecCounter,Const_Counter
|
|||
|
nop
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
Key_Debounced_Process_Inc:
|
|||
|
clr wdt
|
|||
|
sdz Key_IncCounter
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
else
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_IncCounter,Const_Counter
|
|||
|
nop
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
;===============================================================
|
|||
|
; User Add Some Key Debounced Code
|
|||
|
;===============================================================
|
|||
|
Key_Debounced_Process_WindowsMediaPlayer:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,04H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,04H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
Key_Debounced_Process_PlayPause:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,10H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,10H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
Key_Debounced_Process_Stop:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,20H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,20H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
Key_Debounced_Process_NextTrack:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,40H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,40H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
|
|||
|
jmp Key_Debounced_End
|
|||
|
|
|||
|
Key_Debounced_Process_PreviousTrack:
|
|||
|
;-----------------------------------------------------------
|
|||
|
; Here to add your another code !!
|
|||
|
;-----------------------------------------------------------
|
|||
|
clr wdt
|
|||
|
CALL FIFO1_WR_CHECK
|
|||
|
SNZ bFlag_FIFO_Ready
|
|||
|
JMP Key_Debounced_End
|
|||
|
IF UseReportID
|
|||
|
MOV A,01H ;REPORT ID
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,80H
|
|||
|
MOV FIFO_OUT2,A
|
|||
|
MOV A,02H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ELSE
|
|||
|
MOV A,80H
|
|||
|
MOV FIFO_OUT1,A
|
|||
|
MOV A,01H
|
|||
|
MOV FIFO_SendLen,A
|
|||
|
ENDIF
|
|||
|
CALL WRITE_FIFO1
|
|||
|
nop
|
|||
|
kmov Key_Process,Key_CheckIn
|
|||
|
|
|||
|
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 FIFO_Size
|
|||
|
Public FIFO_SendLen
|
|||
|
|
|||
|
Public FIFO_Type
|
|||
|
Public FIFO_Request
|
|||
|
Public FIFO_wValueL
|
|||
|
Public FIFO_wValueH
|
|||
|
Public FIFO_wIndexL
|
|||
|
Public FIFO_wIndexH
|
|||
|
Public FIFO_wLengthL
|
|||
|
Public FIFO_wLengthH
|
|||
|
|
|||
|
Public FIFO_Out1
|
|||
|
Public FIFO_Out2
|
|||
|
Public FIFO_Out3
|
|||
|
Public FIFO_Out4
|
|||
|
Public FIFO_Out5
|
|||
|
Public FIFO_Out6
|
|||
|
Public FIFO_Out7
|
|||
|
Public FIFO_Out8
|
|||
|
|
|||
|
Public USB_Interface
|
|||
|
Public USB_Interface_Alt
|
|||
|
Public USB_Configuration
|
|||
|
|
|||
|
Public FIFO_ADDR
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Public nCmdIndex1
|
|||
|
|
|||
|
|
|||
|
Public Loop_Counter
|
|||
|
Public Data_Count
|
|||
|
Public Data_Start
|
|||
|
Public FIFO_TEMP
|
|||
|
Public bFlag_Real_Cmd
|
|||
|
Public bFlag_FIFO_Ready
|
|||
|
Public bFlag_FIFO_LEN0
|
|||
|
Public bFlag_RD_HTable
|
|||
|
Public bFlag_wait_control_out
|
|||
|
Public bFlag_SET_ADDRESS
|
|||
|
Public bFlag_SCMD
|
|||
|
Public bFlag_Enum_Ready
|
|||
|
Public bFlag_SetConfiguration_Ready
|
|||
|
Public bFlag_SetInterface_Ready
|
|||
|
|
|||
|
|
|||
|
Public USB_ISR_END
|
|||
|
Public USB_EP0_ISR_END
|
|||
|
Public StageOne
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Public VolumeH_Save
|
|||
|
Public VolumeL_Save
|
|||
|
Public bFlag_Audio_Mute
|
|||
|
;modify for Remote Wakeup
|
|||
|
public bRmtWakeup
|
|||
|
public b_wakeup
|
|||
|
|
|||
|
;;-----------------------------------------------
|
|||
|
#include QN8027Driver.asm
|
|||
|
#include QN8072Sub.asm
|
|||
|
|
|||
|
END
|