📄 usb_proc.asm
字号:
include HT82K96E.inc
include usbrf.inc
include usbfifo.inc
START_VAR EQU 20H
extern STALL :byte
;usbproc .section AT 310H 'code'
usbproc .section AT 320H 'code'
;-------------------------------------------------------------------
Ram_init: ;clear RAM {20~BF}
mov a,start_var ;
mov mp0,a ;
mov a,160 ;
next_addr2: ; 将User RAM[20H~BFH]清为0
clr wdt ;
clr r0 ;
inc mp0 ;
sdz acc ;
jmp next_addr2 ;
set STALL ; 将所有Endpoint STALL住
ret
;-----------------------------------------------------------------------------------
start_timer:
mov a,10000000b ;
mov tmr0c,a ; 设TMR0为Internal mode
mov a,10000000b ;
mov tmr1c,a ; 设TMR1为Internal mode
mov a,88h ;
mov tmr0,a ; 设TMR0为每80uSec timeout一次
mov a,00000111b ;
mov intc,a ; 打开USB INT,TMR0 INT
set timer0_on ; 打开TMR0开始计时
;======================================================================
;StartTMR1:
;mov A, 0FFH-0DCH ;
;mov TMR1L, A ;
;mov A, 0FFH-005H ;
;mov TMR1H, A ;
;mov A, 98H ;
;mov TMR1C, A ;
;set INTC.3 ;
;======================================================================
ret
;------------------------------------------------------------------------------
config_USB:
mov a,01001000b ; 48H:6MHz,打开USB clock
;mov a,01000000b ; 40H:6MHz
mov CLK_ctrl_reg,a ; 设定6MHz/12MHz
mov a,200 ;
wait_liu:
sdz acc ;
jmp wait_liu ;
;mov a,01100000b ; 60H:设定Internal ADC reference voltage,选择USB mode
mov a,01000000b ; 40H:设定Internal ADC reference voltage
mov Int_reg,a ; 清除所有的pipe interrupt
ret
;------------------------------------------------------------------------------
public Ram_init
public config_USB
public start_timer
;public StartTMR1
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -