📄 10-4.asm
字号:
.def usb_transfer
.ref fft
.ref rpt, ad_start
.ref reg
ce0ctl .equ 01800008h ; 设置EMIF控制寄存器地址
gblctl .equ 01800000h ; 设置EMIF全局寄存器地址
pcr0 .equ 018c0024h ; 设置pcr0寄存器地址
ep2_addr .equ 80004000h ; 设置外设ep2_addr的地址
ep6_addr .equ 80006000h ; 设置外设ep6_addr的地址
pcr1 .equ 01900024h ; 设置pcr1寄存器地址
.text
usb_transfer:
MVKL pcr0,a0 ; 设置pcr0寄存器
MVKH pcr0,a0
MVKL 3828h,a1 ; 3828 用于选择USB控制器的FIFI 2
STW a1,*a0 ; 将USB控制器的pktend引脚打开
NOP 3
MVKL gblctl,b0 ; 设置gblctl寄存器
MVKH gblctl,b0
MVKL 3380h,b1
MVKH 3380h,b1
STW b1,*b0
NOP 4
MVKL ce0ctl,b0 ; 设置ce0ctl寄存器
MVKH ce0ctl,b0
MVKL 0ff2fh,b1
MVKLh 0ffffh,b1
STW b1,*b0
NOP 3
MVKL reg,a4
MVKH reg,a4
LDW *a4,a5
NOP 4
MVKL ep2_addr,b3 ; 初始化数据接收的各种寄存器
MVKH ep2_addr,b3
MVKL ep6_addr,b4
MVKH ep6_addr,b4
MVKL fft,a4
MVKH fft,a4
MVKL 1f40h,b6
MVKH 1f40h,b6
MVKL 1h,b5
MVKH 1h,b5
MVKL 0fdfdh,a7 ; 设置寄存器为 0xfdfd
MVKH 0fdfdh,a7
MVKL 3e7fh,b7
MVKH 3e7fh,b7
ADD a4,b7,b7
XOR a2,a2,a2
command1:
LDW *b3,a2 ; 读USB控制器的命令字
NOP 4
SHL a2,16,a2
SHRU a2,16,a2
CMPEQ 0ah,a2,a1
CMPEQ 05h,a2,b2
[b2] B ad_start
NOP 5
[!a1] B command1
NOP 5
MVKL pcr1,a10
MVKH pcr1,a10
MVKL 3a0ah,b10 ; 设置dx1引脚为低电平
STW b10,*a10
NOP 4
NOP 8
NOP 8
MVKL 3a2ah,b10 ; 设置dx1引脚为高电平
STW b10,*a10
NOP 4
NOP 8
NOP 8
MVKL 3a0ah,b10 ; 设置dx1引脚为低电平
STW b10,*a10
NOP 4
NOP 8
NOP 8
MVKL 3a2ah,b10 ; 设置dx1引脚为高电平
STW b10,*a10
NOP 4
NOP 8
NOP 8
MVKL 3a0ah,b10 ; 设置dx1引脚为低电平
STW b10,*a10
NOP 4
usbwrite_start:
ZERO a2
MVKL 100h,b2
MVKH 100h,b2 ; 设置一次传输的数据为512字节
CMPEQ b5,1,a1
[a1] STW b5,*b4 ; 传输字节数
NOP 4
usbwrite:
CMPGTU a4,b7,a1
[a1] MV a7,a8 ; 传输0xfd关键字
[!a1] LDH *a4++,a8 ; 开始依次传输数据
NOP 4
STW a8,*b4
NOP 4
SUB b2,1,b2 ; 待写的数据个数减1
[b2] B usbwrite ; 循环写512个数据
NOP 5
ADD b5,1,b5 ; 增加数据包地址
B command1
NOP 5
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -