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

📄 main.asm

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 ASM
字号:
//======================================================================================
//
//        The information contained herein is the exclusive property of
//      Sunplus Technology Co. And shall not be distributed, reproduced,
//      or disclosed in whole in part without prior written permission.
//
//            (C) COPYRIGHT 2001   SUNPLUS TECHNOLOGY CO.
//                           ALL RIGHTS RESERVED
//
//    The entire notice above must be reproduced on all authorized copies.
//
//========================================================================================
//  工程名称: Fir2.spj
//  功能描述:  FIR低通滤波(系数中出现负值)
//				
//  文件来源: 《SPCE061单片机原理及应用技术》第八章 凌阳单片机应用及开发技术,第348页
//  IDE环境:  	SUNPLUS u'nSPTM  IDE 1.8.0(or later)
//
//  涉及的库:	CMacro.lib
//
//  组成文件:	
//    	 		main.asm/hardware.asm
//	            hardware.inc/hardware.h   	
//  日期:       2002-6-12
//===========================================================================================
.DEFINE 	P_INT_Ctrl_New 		0x7010
.DEFINE 	P_ADC_MUX_Ctrl 		0x702b
.DEFINE 	P_ADC_MUX_Data 		0x702c
.DEFINE		P_WatchDog_Clear	0x7012
.INCLUDE 	hardware.inc
.PUBLIC _main
.CODE
_main:
	int off;				//关中断,以便进行初始化
							//系统时钟设定
	r1 = 0x00f0;			//Fosc=49.152MHz,CPUCLOCK=Fosc
	[P_SystemClock] = r1;
	//TimerA设定
	r1 = 0x0030;			//clckA选择Fosc/2;屏蔽ClockB
	[P_TimerA_Ctrl] = r1;
	r1 = 0xfd00;
	[P_TimerA_Data] = r1;	//32kHz中断频率
	//DA设定
	r1 = 0;				
	[P_DAC_Ctrl] = r1;		//直接将DAR锁存到DAC;
							//通过读P_ADC触发ADC转换
	//AD设定
	r1 = 0x1;
	[P_ADC_Ctrl] = r1;		//允许数模转换
	r1 = 0x1;
	[P_ADC_MUX_Ctrl] = r1;	//选择Line_IN1输入
	
	r1 = 0x2000;
	[P_INT_Ctrl_New] = r1;

	r1 = x0;				
	r2 = h0;
	fiq on;					//开中断
loop:
	nop;
	r1=0x0001;
	[P_WatchDog_Clear]=r1;
	jmp loop;
	
	
.TEXT
.PUBLIC _FIQ
_FIQ:
	r3 = [P_ADC_MUX_Data];	//取AD采样数据
	r3 = r3 lsr 1;
	[r1] = r3;				//更新
	mr = [r1]*[r2],ss,16	//FIR滤波运算
	r3 += 0xffff;			//
	r4 += 0x3,Carry			//数据平移为正数
	r4 = r4 lsr 4;
	r3 = r3 ror 4;					
	r4 = r4 lsr 4;
	r3 = r3 ror 1;			//取计算结果最高有效的16位
	[P_DAC1] = r3;			//刷新DA转换
	r1 = 0x2000;
	[P_INT_Clear] = r1;		//清中断
	
	r1 = x0;				//数据指针复位
	r2 = h0;				//系数指针复位
	reti;
	
.CODE
	h0:		.DW 	-1;
	h1:		.DW	 	-2;
	h2:		.DW 	-3;
	h3:		.DW 	-1;
	h4:		.DW 	2;
	h5:		.DW 	6;
	h6:		.DW 	10;
	h7:		.DW 	12;
	h8:		.DW 	12;
	h9:		.DW 	10;
	h10:	.DW 	6;
	h11:	.DW 	2;
	h12:	.DW 	-1;
	h13:	.DW 	-3;
	h14:	.DW 	-2;
	h15:	.DW 	-1;
.ISRAM
	x0: 	.DW 	1;
	x1: 	.DW 	1;
	x2: 	.DW 	1;
	x3: 	.DW 	1;
	x4: 	.DW 	1;
	x5: 	.DW 	1;
	x6: 	.DW 	1;
	x7: 	.DW 	1;
	x8: 	.DW 	1;
	x9: 	.DW 	1;
	x10: 	.DW 	1;
	x11: 	.DW 	1;
	x12: 	.DW 	1;
	x13: 	.DW 	1;
	x14: 	.DW 	1;
	x15: 	.DW 	1;

⌨️ 快捷键说明

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