📄 main.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 + -