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

📄 test16.asm

📁 试验仪自检程序
💻 ASM
字号:
//======================================================
//  The information contained herein is the exclusive property of
//  Sunnnorth Technology Co. And shall not be distributed, reproduced,
//  or disclosed in whole in part without prior written permission.
//                (C) COPYRIGHT 2003  SUNNORTH TECHNOLOGY CO.
//                                ALL RIGHTS RESERVED
//  The entire notice above must be reproduced on all authorized copies.
//========================================================

//============================================================
//  工程名称:test16.spj
//  功能描述: 采用自动方式即定时器A溢出执行ADC转换,通过A/D将MIC_IN输入的语音信
//        号转换为数字信号,再将AD值通过DA通道转换为模拟电压,从AUD1和AUD2播放。
//  文件来源:《实验仪实验指导书》 "实验十九  一路输入的录音"  第65页
//  IDE环境:   SUNPLUS u'nSPTM  IDE 1.8.4
//
//  涉及的库:
//  组成文件:
//    	      test16.asm         
//============================================================

//============================================================
// 文件名称:test16.asm    
// 实现功能: 采用自动方式即定时器A溢出执行ADC转换,通过A/D将MIC_IN输入的语音信
//        号转换为数字信号,再通过D/A 的两个通道AUD1和AUD2播放。
//============================================================

		.define		TIMER_DATA_FOR_8KHZ 	0xfa00;
		.define		P_TimerA_Ctrl			0x700b;
		.define		P_TimerA_Data			0x700a; 
		.define		P_ADC					0x7014; 
		.define		P_ADC_Ctrl				0x7015; 
		.define		P_DAC1					0x7017;
		.define		P_DAC2					0x7016;
		.define		P_DAC_Ctrl				0x702A; 
		.define		P_INT_Ctrl				0x7010;
		.define		P_INT_Clear				0x7011;
		.define		P_Watchdog_Clear       0x7012; 

//AD初始化子程序
		.code
_InitAD_DA: 
		INT OFF;	
		r1 = 0x0030; 						//时钟频率为CLKA的Fosc/2
		[P_TimerA_Ctrl] = r1;		 
		r1 = TIMER_DATA_FOR_8KHZ;		   //采样率为8kHz
		[P_TimerA_Data] = r1;		 		
//		r1 = 0x003d;						//设置AGC 
		r1 = 0x0039;						//设置AGC 
		[P_ADC_Ctrl] = r1;				 	  
//采用自动方式、且通过MIC_IN通道输入,	
		r1 = 0x00A8;							  
//通过定时器A的溢出锁存数据,ADC为自动方式
		[P_DAC_Ctrl] = r1;			
		r1 = 0x1000;				 
		[P_INT_Ctrl] = r1;					//开中断IRQ1_TM
		INT IRQ;
		retf;


		.PUBLIC _main;	
//============================================================= 
// 函数名称:  _main
// 功能描述:  采用自动方式即定时器A溢出执行ADC转换,通过A/D将MIC_IN输入的语音信
//        号转换为数字信号,再通过D/A 的两个通道AUD1和AUD2播放。
// 语法格式:  _main
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_main: 
		call _InitAD_DA;					//调用AD初始化子程序 
loop:
		nop; 
		nop; 
		nop; 
		nop; 
		r1=0x0001                    	     //清看门狗
        [P_Watchdog_Clear] = r1

		jmp loop; 

.text
		.PUBLIC _IRQ1 ;
//============================================================= 
// 函数名称:  _IRQ1
// 功能描述:  通过D/A 的两个通道AUD1和AUD2播放。
// 语法格式:  _IRQ1
//入口参数:     无
// 出口参数:    无
// 注意事项:    仅为用户模型
//=================================================================
_IRQ1:        
		push r1 to [SP];                		//r1压栈保护
		r1 = [P_ADC];                  		//读出P_ADC的值
		[P_DAC1] = r1;             			//将ADC采样的数据送给P_DAC1播放
		[P_DAC2] = r1;            			//将ADC采样的数据送给P_DAC2播放
		r1 = 0x1000;
		[P_INT_Clear] = r1;           		//清除P_INT_Clear单元的值
		pop r1 from [SP]; 
		reti;

⌨️ 快捷键说明

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