📄 et44_usb_macro.inc
字号:
// ====================================================================================
// Macro program (USB Library v1.2)
//
// ====================================================================================
;1 USB REGISTER ACCESS DELAY TIMEING
N_NOP MACRO
CALL N_NOP_DELAY
ENDM
;2 USB INITIAL SUB (USB ENABLE/BANK 1/IAP0 AUTO+1/FLAG SETTING/USB INT ENABLE/SPPED SELECT/PLUG IN)
_ADD_USB_INITIAL_SUB MACRO
CALL USB_INITIAL
ENDM
_ADD_USB_INITIAL_WORK_SUB MACRO
ENDM
;3 USB BUS RESET INT SUB (DEFAULT THE DEVICE WORK)
_ADD_USB_BUS_RESET_SUB MACRO
BC BULK_STATE,CONFIG
ENDM
;4 USB IDLE INT SUB (PREPARE GO TO USB SUSPEND)
_ADD_USB_IDLE_INT_SUB MACRO
ENDM
;5 USB HUB DOWNSTREAM PORT WAKE-UP INT FROM SUSPEND
_ADD_USB_WAKEUP_INT_SUB MACRO
ENDM
;6 USB HOST RESUME INT
_ADD_USB_RESUME_INT_SUB MACRO
ENDM
;7 USB SOF INT (FOR COUNT TIMEING :1ms)
_ADD_USB_SOF_INT_SUB MACRO
ENDM
;8 USB EP1 INT (EP1 DATA MANAGEMENT)
_ADD_USB_EP1_SUB MACRO
CALL ADD_USB_EP1_SUB
ENDM
;8.1 USB EP1 WORK MACRO (EP1 OUT/IN DATA MANAGEMENT IN MAIN LOOP)
_ADD_USB_EP1_WORK_SUB MACRO
CALL ADD_USB_EP1_WORK_SUB
ENDM
;24
_ADD_USB_DEVICE_CONFIG_OK MACRO
BS BULK_STATE,CONFIG
ENDM
;25
_ADD_USB_SET_REPORT_SUB MACRO
// VENDER COMMAND OUT DATA
BC FC_STATUS,DATA_OUT
MOV A,EP0RXDAR
MOV TEMP1,A
MOV A,EP0RXDAR
MOV BULK_OUT_BUFH,A
MOV A,EP0RXDAR
MOV BULK_OUT_BUFM,A
MOV A,EP0RXDAR
MOV BULK_OUT_BUFL,A
BS EP2CSR,RXTXEN
N_NOP
BS BULK_STATE,IMAGE_RESTART
ENDM
;28
_ADD_USB_STRING_INDEX_HM MACRO
MOV A,#High(String_index_HManufacture_table<<1)
MOV TBHPTR,A
MOV A,#Low(String_index_HManufacture_table<<1)
MOV TBLPTR,A
JMP F_TABLE_READ
ENDM
;29
_ADD_USB_STRING_INDEX_HP MACRO
MOV A,#High(String_index_HProduct_table<<1)
MOV TBHPTR,A
MOV A,#Low(String_index_HProduct_table<<1)
MOV TBLPTR,A
JMP F_TABLE_READ
ENDM
;38
_ADD_USB_HID_DESCRIPTION_SUB MACRO
if _USB_HID == _ENABLE
MOV A,#High(Descriptor_type_21_index00_table<<1)
MOV TBHPTR,A
MOV A,#Low(Descriptor_type_21_index00_table<<1)
MOV TBLPTR,A
//table length
JMP F_TABLE_READ
endif
ENDM
_ADD_USB_HID_DESCRIPTION_SUB1 MACRO
if _USB_CD_bNumInterface == 2
MOV A,#High(Descriptor_type_21_index01_table<<1)
MOV TBHPTR,A
MOV A,#Low(Descriptor_type_21_index01_table<<1)
MOV TBLPTR,A
//table length
JMP F_TABLE_READ
endif
ENDM
;39
_ADD_USB_HID_REPORT_SUB1 MACRO
if _USB_HID == _ENABLE
MOV A,#High(Descriptor_type_22_index00_table<<1)
MOV TBHPTR,A
MOV A,#Low(Descriptor_type_22_index00_table<<1)
MOV TBLPTR,A
//table length
MOV A,#_USB_HID_wDescriptorLength0
MOV TBLL,A
JMP F_TABLE_READ_1
endif
ENDM
;40
_ADD_USB_HID_REPORT_SUB2 MACRO
if _USB_CD_bNumInterface == 2
MOV A,#High(Descriptor_type_22_index01_table<<1)
MOV TBHPTR,A
MOV A,#Low(Descriptor_type_22_index01_table<<1)
MOV TBLPTR,A
//table length
MOV A,#_USB_HID_wDescriptorLength1
MOV TBLL,A
JMP F_TABLE_READ_1
endif
ENDM
;*********************************************************
ADD_USB_EP1_SUB:
;BTG PORTA,CLK
JBS BULK_STATE,IMAGE_END,IMAGE_END_CHK
BS BULK_STATE,BEGIN_PUT_EP1_DATA
RET
IMAGE_END_CHK:
BC BULK_STATE,IMAGE_END
RET
ADD_USB_EP1_WORK_SUB:
;BTG PORTA,CLK
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
EP1_WAIT:
;BTG PORTA,CLK
JBS IAC1,SESTALL,EP1_WAIT
JBS IAC1,RXTXEN,EP1_WAIT
;BTG PORTA,CLK
mov a,#0x40
mov temp1,a
MOV A,#EP1CTR
MOV IAP1,A
;BTG PORTA,CLK
MOV A,TEMP1
MOV IAC1,A
MOV A,#EP1DAR
;BTG PORTA,CLK
MOV IAP1,A
NOP
NOP
;NOP
;NOP
EP1_LOOP:
;BTG PORTA,CLK
MOV A,IAC0
MOV IAC1,A
DJZ TEMP1,EP1_LOOP_END
JMP EP1_LOOP
EP1_LOOP_END:
;BTG PORTA,CLK
MOV A,#EP1CSR
MOV IAP1,A
NOP
;BTG PORTA,CLK
BS IAC1,RXTXEN
N_NOP
EP1_RET:
BC BULK_STATE,BEGIN_PUT_EP1_DATA
;BTG PORTA,CLK
RET
// **********************************************
// Macro Sub N_NOP
// **********************************************
N_NOP_DELAY:
if _USB_LOW_SPEED == _DISABLE
NOP
NOP
NOP
RET
else
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -