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

📄 g723main.asm

📁 利用G.723协议在DSP实现音频信号的压缩与解压缩实验
💻 ASM
字号:
		    .title "g723.asm"
		    .include "g723_global.asm"
;McBsp0 内存映射寄存器
SPSA0		.set    038h          ;定义子地址寄存器映射位置
SPSD0		.set    039h          ;定义子块数据寄存器映射位置
DRR10		.set    021h          ;接收数据寄存器1映射位置
DRR20		.set	020h          ;接收数据寄存器2映射位置 
DXR10		.set    023h          ;发送数据寄存器1映射地址 
DXR20		.set	022h          ;发送数据寄存器2映射地址 
;McBsp Subaddressed Registers
SPCR1		.set	00h          ;定义SPCR10的映射子地址 
SPCR2		.set	01h          ;定义SPCR20的映射子地址 
RCR1		.set	02h          ;接收控制寄存器1映射子地址 
RCR2		.set	03h          ;接收控制寄存器2映射子地址  
XCR1		.set	04h          ;发送控制寄存器1映射子地址
XCR2		.set	05h          ;发送控制寄存器2映射子地址 
SRGR1		.set	06h          ;采样率发生器寄存器1映射子地址
SRGR2		.set	07h          ;采样率发生器寄存器2映射子地址
MCR1		.set	08h          ;多通道控制寄存器1映射子地址
MCR2		.set	09h          ;多通道控制寄存器2映射子地址
RCERA		.set	0ah          ;接收通道控制寄存器1映射子地址
RCERB		.set	0bh          ;接收通道控制寄存器2映射子地址
XCERA		.set	0ch          ;发送通道使能寄存器A映射子地址 
XCERB		.set	0dh          ;发送通道使能寄存器B映射子地址
PCR			.set	0eh          ;引脚控制寄存器映射子地址
SPSA	.set	SPSA0            ;由于同步缓冲口采用子地址寻址方式 
SPSD	.set	SPSD0
RDRR	.set	DRR10
RDXR	.set	DXR10
		;以下程序是写数据的子程序也就是宏
WR_SUB_REG	.macro val,addr			;写McBsp控制寄存器
			stm addr,SPSA           ;将ADDR的地址写入SPSA
			nop                     ;空操作
			stm val,SPSD            ;将配置值写入SPSD
			nop                     ;空操作  
			.endm
		;以下程序是读数据的子程序也就是宏	
RD_SUB_REG	.macro addr,acc			;读McBsp控制寄存器
			stm addr,SPSA           ;将ADDR的地址写入SPSA
			nop                     ;空操作
			ldm SPSD,acc            ;送入累加器保存 
			nop                     ;空操作 
			nop
			nop
		    .endm

WAITTRX   .macro					;等待串口中断宏
WAITR?
          RD_SUB_REG SPCR1,A
          and #1<<1, A            
          bc   WAITR?, AEQ
          .endm

PROGREG   .macro progword			;DSP与AD50的二次通讯(将其最后一位置为1便可)
   		  stm  #01h,RDXR
          WAITTRX
          stm  progword,RDXR
          WAITTRX
          .endm               

         ;以下程序是等待延时子程序
wait     .macro
  	     STM #0400h, AR0
		 RPT *AR0
		 NOP
		.endm 			
		.mmregs               
		.global _c_int00
		.global g723codec
    	.global DataAddr
	    .global retaddr
	    .bss  flag,1
DataAddr	.usect  "speech",0x0a000
    	.sect ".vectors"
        ;以下是中断向量表
RESET	b _c_int00          
		nop
		nop
		.space 19*4*16
BRINT0	b recv
		nop
		nop
BXINT0	b trans        
        nop
        nop	
		.space 9*4*16
		rete
		rete
		rete
		rete
		
         ;以下是主程序
		.text
_c_int00

		ld #0h,DP           ;设置数据页指针为第0页
		stm #0x900,SP      ;设置堆栈指针地址为2000H   
		ssbx INTM           ;关闭所有中断 
		st #7FFFh,SWWSR     ;设置等待寄存器全都设置为7等待
        st #0e8h,PMST       ;设置处理器工作方式状态寄存器 
        st #4007h,CLKMD     ;设置时钟方式寄存器,工作频率为20M(工作频率取决于(高四位+1*10M

⌨️ 快捷键说明

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