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

📄 io.asm

📁 用dsp编写的四个程序,关于数组,还有语音,录音功能的实现
💻 ASM
字号:

                              
		.title "io"     ;title伪指令。双引号括起来的源程序名。伪指令小写。
		.global _c_int00 ;global伪指令,将变量_c_int00说明为外部符号。
		.mmregs          ;将TMS320各寄存器名定义为全局符号,这样就可以直接引用寄存器(符号)。
                             ;mmregs 定义存储器映射寄存器的符号名称。

FG_ADDR     .set    1002H    ;set伪指令。将一个值分配给一个符号。1002H I/O口地址定义。
DATA		.set	60h  ;double ram data, 其地址设为0060H
		.sect ".vectors" ;sect定义初始化命名段。段名必须用双引号括起,建立包含代码和数据的自定义断。
                         ;".vectors"定义向量表,紧跟其后的是复位向量和中断向量。

reset:	B _c_int00       ; B 无条件跳转指令。将变量_c_int00说明为外部变量,程序入口地址1000。
		NOP              ;空指令。等待一个机器周期。
		NOP
		.space 31*4*16   ;space 伪指令。在当前段内保留一个指定数目的位数,并用0填充, 保留31*4个字单元。

DELAY	.macro sec_tenth ;macro 宏指令开始。DELAY宏名。sec_tenth形式参数。延时 sec_tenth/10 秒
		STM sec_tenth-1,AR5 ;STM存储指令。AR0~AR7 寄存器辅助。
loop1?	STM #09h,AR6       ; should use STM, instead of ST, or LD and so                     
loop0?	STM #19999,AR7      ;STM存储指令。AR0~AR7 辅助寄存器。
		BANZ $,*AR7-        
		BANZ loop0?,*AR6-   ;AR6-不为0时 转移。
		BANZ loop1?,*AR5-   
		.endm               ;Endm 宏指令结束。           

		.text            ;text 段是源程序正文。经汇编后,紧跟.text 后的是可执行程序代码。
_c_int00:                ;
		LD #0h,DP        ;LD装入指令。设置数据页指针,DP=0H,则数据存储器地址为0000H~007FH。
		STM #3000h,SP    ;STM存储指令。把累加器的低端存放到存储器映射寄存器中。SP设置堆栈指针
		RSBX INTM        ;RSBX清除指令。INTM中断方式位=0,允许可屏蔽中断。INTM中断方式位=1,禁止可屏蔽中断。
		STM #07FFFh,SWWSR ;SWWSR可编程软件等待状态寄存器。作用:高速内存与慢速外设的协调连接,提供一个方便的接口。
        SSBX XF           ;SSBX置位指令。XF外部标志输出引脚=1,主要用于程序向外设传输标志信息.
        ST #1007h,CLKMD	  ;ST存储指令。16bit长立即数。工作在20MHz
		RPT #0FFh         ;RPT循环指令。把循环次数0FFH装入循环计数器(RC)。
		NOP  
		STM #0ffffh,IFR   ;IFR中断标志寄存器。把IFR每位写1的用途,就是清除所有被挂起的中断。
		ORM #000h,IMR     ;IMR中断屏蔽寄存器。把IMR每位置0屏蔽该中断。
		RSBX SXM          ;RSBX清零指令。SXMS是状态寄存器ST1中第8位,当SXM=0,不扩展符号;当SXM=1,扩展符号。
		ST #8100H,DATA    ;DATA = #8100H, 
WRDENG: PORTW	DATA,FG_ADDR    ;PORTW输出指令(端口写)。64K的I/O存储空间它都在片外,通过PORTW对I/O空间寻址。
        DELAY	#10             ;给出sec_tenth形式参数            
        
        NOP
    	ST #4200H,DATA          ; ST存储指令。16bit长立即数。4200H=0100 0010 0000 0000b.
        ; DATA 的高8位的值对应发光管,从左到右。1-亮,0-灭
        PORTW	DATA,FG_ADDR    ; PORTW端口写.写到口地址1002H。
        DELAY	#10
        
        ST #2400H,DATA          ; 2400H=0010 0100 0000 0000b
        PORTW	DATA,FG_ADDR    ; 宏指令:简化汇编语言源程序的书写,将一些频繁出现的程序段定义为宏指令,
        DELAY	#10             ; 当程序中需要执行该程序段时,只需要一条宏调用语句,DELAY。
                                ; 宏指令:有效缩短源程序的长度,易读,减少错误。
        ST #1800H,DATA          ;1800H=0001 1000 0000 0000b.
        PORTW	DATA,FG_ADDR
       DELAY	#10
        
        ST #1800H,DATA           ;1800H=0001 1000 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #2400H,DATA           ;2400H=0010 0100 0000 0000b
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        
        ST #4200H,DATA           ; 4200H=0100 0010 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #8100H,DATA            ; 8100H=1000 0001 0000 0000b 
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        STM #00H,DATA              ;8个灯全灭1秒
        ;;;
        PORTW	DATA,FG_ADDR
        DELAY	#10
        NOP
    	ST #100H,DATA               ;0100H=0000 0001 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        
        ST #200H,DATA               ; 0200H=0000 0010 0000 0000b
        PORTW	DATA,FG_ADDR
        DELAY	#10
       
        ST #400H,DATA                ;0400H=0000 0100 0000 0000b.
        PORTW	DATA,FG_ADDR
       DELAY	#10
        
        ST #800H,DATA                 ;0800H=0000 1000 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #1000H,DATA                 ;1000H=0001 0000 0000 0000b.
        PORTW	DATA,FG_ADDR
       DELAY	#10
        RPT #10
        NOP
        
        ST #2000H,DATA                  ;2000h=0010 0000 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #4000H,DATA                   ;4000H=0100 0000 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        STM #8000H,DATA                   ;8000H=1000 0000 0000 0000b.
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
         
        ;;;
        ST #8000H,DATA 
        PORTW	DATA,FG_ADDR
        DELAY	#10
        
        ST #4000H,DATA
        PORTW	DATA,FG_ADDR
        DELAY	#10
       
        ST #2000H,DATA
        PORTW	DATA,FG_ADDR
       DELAY	#10
        
        ST #1000H,DATA
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #800H,DATA
        PORTW	DATA,FG_ADDR
       DELAY	#10
        RPT #10
        NOP
        
        ST #400H,DATA
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #200H,DATA
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        STM #100H,DATA
        PORTW	DATA,FG_ADDR
        DELAY	#10
        RPT #10
        NOP
        ST #8100H,DATA 
     
        B WRDENG                ;B无条件跳转指令。
aaa       nop
          b aaa
        
    	.end                     ;汇编语言结束
    	
    	
    	
    	
    	
    			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -