⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10-4.asm

📁 《DSP嵌入式系统开发典型案例》此书的源代码
💻 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 + -