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

📄 main.asm

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 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.
//======================================================================

//======================================================================
//	工程名称:	ex19_asm_MIC
//	功能描述:	《实验仪实验指导书》基础应用实验
//              一路输入的录音
//				通过音频通道输入,同时通过DAC1、DAC2输出
//				采样率为8KHz
//  IDE环境:   SUNPLUS u'nSPTM  IDE 2.0.0(or later)
//	涉及的库:	CMacro1016.lib
//	组成文件:	main.asm
//	硬件连接:	DAC输出选择跳线的"DAC1"与"音频"连接,"DAC2"与"音频"连接
//	维护记录:	2005-09-12	v1.0
//
//======================================================================

//======================================================================
//	文件名称:	main.asm
//	功能描述:	通过音频通道输入,同时通过DAC1、DAC2输出
//				采样率为8KHz
//	维护记录:	2005-09-12	v1.0
//======================================================================

.DEFINE P_TimerA_Data		0x700A
.DEFINE P_TimerA_Ctrl		0x700B

.DEFINE P_ADC				0x7014
.DEFINE P_ADC_Ctrl			0x7015
.DEFINE P_DAC2				0x7016
.DEFINE P_DAC1				0x7017
.DEFINE P_DAC_Ctrl			0x702A

.DEFINE P_INT_Ctrl			0x7010
.DEFINE P_INT_Clear			0x7011
.DEFINE P_Watchdog_Clear	0x7012

.DEFINE	C_Fosc_2			0x0000
.DEFINE	C_B1				0x0030
.DEFINE	C_TIMERA_8KHZ		(0xffff-0x600)

.RAM

.CODE

//==========================================================================
//	汇编格式:	_main
//	C格式:		int main(void);
//	实现功能:	通过音频通道输入,同时通过DAC1、DAC2输出
//				采样率为8KHz
//	入口参数:	无
//	出口参数:	无
//	破坏寄存器:r1,r2
//==========================================================================

.PUBLIC	_main
_main:
	int off
	
	r1 = C_Fosc_2 | C_B1
	[P_TimerA_Ctrl] = r1
	r1 = C_TIMERA_8KHZ				//设置定时器计数初值
	[P_TimerA_Data] = r1
	
	r1 = 0x0005						//使能自动增益AGC、MIC、ADC
	[P_ADC_Ctrl] = r1
	r1 = 0x00a8						//通过定时器A的溢出锁存数据,ADC为自动方式
	[P_DAC_Ctrl] = r1
	r1 = 0x1000
	[P_INT_Ctrl] = r1               //允许IRQ1中断
	
	int irq                         //开IRQ总中断,关FIQ中断
	
?Loop:
	r1 = 0x0001
	[P_Watchdog_Clear] = r1         //清看门狗
	jmp ?Loop
	
.TEXT
.PUBLIC _IRQ1
_IRQ1:
	push r1,r5 to [sp]
	
	r1 = [P_ADC]                    //取MIC输入并转换后数据
	[P_DAC1] = r1                   //把输入数据送到DAC1和DAC2输出播放
	[P_DAC2] = r1
	r1 = 0x0001
	[P_Watchdog_Clear] = r1         //清看门狗
	
	r1 = 0x1000
	[P_INT_Clear] = r1              //清IRQ1中断标志
	pop r1,r5 from [sp]
	reti

⌨️ 快捷键说明

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