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

📄 3-6.asm

📁 DSP嵌入式系统开发典型案例 (1)3-1.asm对应第三章AD测试程序代码; (2)3-2.asm对应第三章AD测试程序中断向量代码; (3)3-3.cmd对应第三章AD测试程序配
💻 ASM
字号:
             	.mmregs   
SWCR	  	.set   002BH 				;定义SWCR寄存器
OUTDATA1  	.set   0000H				;定义DA输出数值1
OUTDATA2  	.set   07FFH				;定义DA输出数值2
K_IPTR   	.set   000111000B<<07    	;定义中断入口地址高9bit
K_TEMP  	.set   1111111B				;定义中断入口地址低7bit
		    	.data					;数据段开始
RES_SPACE:								;程序标号
        	.space	07E0h				;将前127个字节预留
		.word   	8000h				
		.word   	0000H				
        	.sect   	".DISPLAY"
		.label  	DISPLAY_SRC
		.word		08AAH				;定义BOOT启动方式,并行8bit
		.word		7fffH				;SWWSR的值
		.word		0F000H				;BSCR的值
		.word		0000h				;xpc 的值
		.word   	0200h       		;pc 的值
		.word		01e0h				;程序长度
		.word		0000h				;第一段的xpc值 
		.word		0100h				;第一段的pc值
     	.copy   	"vectors.asm"		;拷贝中断向量表程序
	
start:							;以下斜体部分为写入Flash的程序,这里不做说明
     	stm   	#3000h,sp        	;如果写入的内容改变,可以将用户程序替代斜体
     	STM   	#80H,AR2			;部分程序就可以了
     	STM   	#81H,AR3                 
     	ST    	#outdata1,*ar2
     	ST    	#outdata2,*ar3  
begin:
		portw	*ar2,0bfffh      
  	    rpt     	#7fffh
	    nop
  	    portw		*ar3,0bfffh 
  	   rpt     	#7fffh
	   nop       
  	   b	  begin       				;程序结束
	
	.space	2000h					;以下程序实现将斜体部分程序内容写入Flash中
  	.label	DISPLAY_END	 
    
  .text
MAIN_START: 
    STM     #3000h,SP
    STM     #0FFA0H,PMST    
	STM     #07FFFH,SWWSR
	STM     #0FFFFH,SWCR
	STM     #0H,34H
	STM     #0H,35H
	STM     #1H,34H
	STM     #0H,35H
	STM     #0EH,34H
	STM     #3F4FH,35H
	SSBX    INTM            		;关闭所有中断
	STM      #8000h,AR6
	STM     #8000H,AR3      		;写入的地址
	STM     DISPLAY_SRC,AR5			;写入的程序头
    STM     #0BH,AR4				;一共写入12页
WRI_RPT:				
	STM     #63,AR1					;一页写入64个字节,在Flash中为128个字节

WRI_LOP:
    LD      *AR5,-8,A 				;将128个半字节依次写入Flash中
    NOP
    NOP    
    AND     #0FEFFH,A				;将D8数据总线置0,用于Flash的写时钟
    NOP
    NOP    
	STL     A,*AR6				
    NOP
    NOP    
    LD      *AR5,-8,A
    NOP
    NOP    
    OR      #0100H,A				;将D8数据总线置1
    NOP
    NOP    
	STL     A,*AR6+					;地址加1,准备写入下一个数据
    NOP
    NOP    
	LD      *AR5,A 
    NOP
    NOP    
    AND     #0FEFFH,A
    NOP
    NOP    
	STL     A,*AR6
    NOP
    NOP    
	LD      *AR5+,A    
    NOP
    NOP    
    OR      #0100H,A
    NOP
    NOP    
	STL     A,*AR6+
    NOP
    NOP    
    BANZ    WRI_LOP,*AR1-  
    CALL    DELAYY 
	BANZ    WRI_RPT,*AR4-
	STM     #RES_SPACE,AR1	
	STM     #0FF80H,AR5				;将原中断向量清零
	STM     #127,AR3
WRI_LOOP:
	LD    *AR1,-8,A  
    NOP
    NOP    
    AND     #0FEFFH,A
    NOP
    NOP    
	STL     A,*AR5
    NOP
    NOP    
    LD      *AR1+,-8,A
    NOP
    NOP    
    OR      #0100H,A
    NOP
    NOP    
	STL    A,*AR5+		
	NOP
	BANZ    WRI_LOOP,*AR3-
LOAD_LOOP:
	 B       LOAD_LOOP

DELAYY:								;延时子程序
    PSHM    AR2               			;等待Flash将一页数据写入的时间,
	STM     #0020H,AR2
DELAYY_LOOP:
    RPT     #0fff0h
	NOP
	BANZ    DELAYY_LOOP,*AR2-
	POPM    AR2 
    RET
	.END								;程序结束

⌨️ 快捷键说明

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