DSP代码分析报告--中南大学

合集下载

DSP系统抗干扰技术的分析

DSP系统抗干扰技术的分析
靠 近 些 . 获 得 良好 的 抗 干 扰 效 果 . 易 产 生 干 扰 的 能 对
1 硬 件 抗 干 扰 技 术
11 供 电 系统 的 抗 干扰 技 术 .
选 择性 能好 、 干扰 能力强 的供 电系统 。 量减 抗 尽
少从 电源 引入 的干扰 采用 交 流稳压 电源 . 证供 电 保
定性 。电源采用 隔离 变压器 接入 电网 . 以减少其 分 可 布 电容 的影 响 , 提高 抗共 模 干扰 的能 力 . 防止 电 网的 干扰 侵入 D P系统 。采用低 通 滤波 器 .改 善 电源 波 S 形。 可防止 高次谐 波通过 电源 串人 系统 。如 图 1 一 是
种 效 果 较 好 的 交 流 电 源 滤 波 器 .V T S为 瞬 态 电 压 抑 制


区外 . 常常 安置在 未 使用 的 中断 向量 区 、 据表 格 还 数 区的最后 和程序 的断裂点后 f 断裂点是 指 B, A C, B C
代 计 算 机

要完成 什么样 的操作 , 而操作 数是 操作码 的对 象 。单
字 节指 令只有 操作码 , 隐含 操作 数; 双字 节指令 , 第一 个 字 节是 操 作码 . 二个 字节 是 操 作数 : 第 三字 节指 令
图 1 交 流电源滤 波 电路
第 一个字 节是操作 码 , 后二个 字节是操 作数 。C U在 P
中 的一 个 十 分 重 要 的 课 题
1 印刷 电 路 板 的抗 干 扰 技 术 . 3
印刷 电路 板大小 要合理 . 小 , 过 则散热 不好 , 易 且 受 临近线条 干扰 : 过大 , 则加 长导线 增加 阻抗 、 降低 抗 干扰 能力 、 提高 成本 ; 应将 相互 有 关 的器件 尽量 放得

《DSP原理及应用》课程实验报告

《DSP原理及应用》课程实验报告

[《DSP原理及应用》课程实验报告](软、硬件实验)实验名称:[《DSP原理及应用》实验]专业班级:[ ]学生姓名:[ ]学号:[ ]指导教师:[ ]完成时间:[ ]目录第一部分.基于DSP系统的实验 (1)实验3.1:指示灯实验 (1)实验3.2:DSP的定时器 (3)实验3.5 单路,多路模数转换(AD) (5)第二部分.DSP算法实验 (13)实验5.1:有限冲击响应滤波器(FIR)算法实验 (13)实验5.2:无限冲激响应滤波器(IIR)算法 (17)实验5.3:快速傅立叶变换(FFT)算法 (20)第一部分.基于DSP系统的实验实验3.1:指示灯实验一.实验目的1.了解ICETEK–F2812-A评估板在TMS320F2812DSP外部扩展存储空间上的扩展。

2.了解ICETEK–F2812-A评估板上指示灯扩展原理。

1.学习在C语言中使用扩展的控制寄存器的方法。

二.实验设备计算机,ICETEK-F2812-A实验箱(或ICETEK仿真器+ICETEK–F2812-A系统板+相关连线及电源)。

三.实验原理1.TMS320F2812DSP的存储器扩展接口存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。

-ICETEK–F2812-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯、DIP开关和D/A设备。

具体扩展地址如下:C0002-C0003h:D/A转换控制寄存器C0001h:板上DIP开关控制寄存器C0000h:板上指示灯控制寄存器详细说明见第一部分表1.7。

-与ICETEK–F2812-A评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:108000-108004h:读-键盘扫描值,写-液晶控制寄存器108002-108002h:液晶辅助控制寄存器2.指示灯扩展原理3.实验程序流程图开始初始化DSP时钟正向顺序送控制字并延时四.实验步骤1.实验准备连接实验设备:请参看本书第三部分、第一章、二。

中南大学实验一__正弦信号发生器

中南大学实验一__正弦信号发生器

中南大学DSP(实验一)实验报告实验题目:DDS 系统学生姓名:邱培学生学号:1404120610班级:电信1204指导老师:盛利元2015.1.7实验一正弦信号发生器一、实验仪器:PC机一台,JQ-SOPC-2C35实验箱一台及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)。

二、实验目的:1、初步了解JQ-NIOS-2C35实验箱的基本结构;2、学习和熟悉基于DSP Builder开发数字信号处理实验的流程。

三、实验原理:正弦波是一种基本信号,任何复杂信号都可由许多频率、幅度各不相同的正弦波复合而成。

已知正弦波存在如下的关系:αsinπαsin(=+2)由以上公式可知,正弦波存在周期性,本实验就是根据正弦波的这一特性进行正弦波发生。

在Altera DSP Builder库中,有一名为Increment Decrement的模块,根据参数设置的不同,Increment Decrement会不断从0计数到设定值,然后清0,接着又从0开始计数。

图3-1显示的是Increment Decrement 的参数设置界面,以图中参数为例,number of bits设置为6,即从0开始计数到2^6,然后清0,接着又从0开始计数。

在LUT(Look Up Table)查找表模块中事先存入一个周期的正弦波的抽样值,利用Increment Decrement 模块不断计数,根据计数值找到查找表的地址取出里面的值进行输出,因为Increment Decrement模块的输出具有周期性,则从LUT的输出也具有了周期性,这样,就产生了正弦波。

四、实验步骤:(1)打开MATLAB。

(2)从MATLAB界面打开点simulink,从跳出的Simulink Library Browser界面新建一个model 文件。

图1-1 正弦发生器模型(model文件)(3)在Altera DSP Builder中的Arithmetic库,找到Increment Decrement模块加入到新建的model中;双击该模块并设置参数,Bus Type:Signed Integer、number of bits:6,确认退出。

dsp 研究报告

dsp 研究报告

dsp 研究报告DSP(数字信号处理)研究报告一、引言数字信号处理(DSP)是一种将连续信号转换为离散信号并利用数值计算机技术对其进行处理的领域。

随着计算机和通信技术的迅速发展,DSP在各个领域的应用也变得越来越广泛。

本报告将介绍DSP的基本原理、应用领域以及未来的发展趋势。

二、基本原理DSP的基本原理是对离散信号进行数字化处理。

主要包括信号采样、量化、编码和数值计算等环节。

通过这些处理步骤,可以实现对信号的滤波、变换、压缩和识别等操作。

其中,采样是将连续信号转换为离散信号的过程,量化是测量离散信号幅度的过程,编码是将量化结果转化为二进制数的过程,数值计算是在计算机上对二进制数进行运算和处理的过程。

三、应用领域1. 通信领域:DSP广泛应用于通信系统中的调制解调、编码解码、信道均衡、差错控制等方面。

通过DSP技术,可以实现高效率和高质量的信号传输,提高通信系统的性能。

2. 音频领域:DSP在音频处理方面的应用也非常广泛。

例如,音频信号的降噪、混响、均衡等处理,以及音频压缩、编码、解码等技术都离不开DSP的支持。

3. 映像领域:DSP在映像处理中可以实现图像增强、去噪、边缘检测、图像压缩、图像识别等功能。

这些技术在医学影像、监控系统、数字摄像等方面有重要应用。

4. 传感器信号处理:传感器信号是一些外界环境的模拟信号,通过DSP技术可以对其进行预处理、滤波、增强和识别等操作,获得有用的信息。

5. 音视频编解码:DSP技术在音视频编解码方面有着重要作用。

通过DSP算法,可以将高位率的音视频信号压缩为低位率的信号,实现高效的传输和存储。

四、未来发展趋势随着计算机和通信技术的不断发展,DSP技术也在不断完善和演进。

未来的发展趋势主要包括以下几个方面:1. 高性能和低功耗:随着芯片制造工艺的进步,DSP芯片将实现更高的性能和更低的功耗。

这将推动DSP技术在各个领域的应用向更广泛、更深入的方向发展。

2. 多核并行计算:为了满足大规模信号处理的需求,DSP芯片将趋向于多核并行计算的方向。

中南大学汇编实验报告

中南大学汇编实验报告

计算机汇编语言实验报告学院:信息科学与工程学院专业班级:指导老师:学号:姓名:目录汇编语言实验一 (4)一、实验目的 (4)二、实验要求 (4)三、实验编程 (4)四、DEBUG 命令: (5)五、运行界面 (6)六、心得体会 (8)汇编语言实验二 (9)一、实验目的 (9)二、二进制到十六进制转换程序 (9)1、思路方法 (9)2、程序代码 (10)3、程序截图 (11)三、起泡排序算法的程序实现 (11)1、方法思路 (11)2、程序代码 (11)3、程序截图 (14)汇编语言实验三 (15)一、实验目的 (15)二、实验要求 (15)三、实验内容求(Fibonacci递归数) (15)四、程序代码 (15)五、实验心得 (18)汇编语言实验四 (19)一、实验目的 (19)二、实验要求 (19)三、实验内容(分类统计字符个数) (19)四、程序代码 (19)五、实验心得 (23)汇编语言实验一一、实验目的学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,熟悉DEBUG调试程序和DOS功能表的查看,为后续实验打下坚实基础。

二、实验要求通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG2、DEBUG命令: A,D,E,F,H,R,T,U。

3、ASCII码及用16进制数表示二进制码的方法。

4、8086寄存器: AX,BX,CX,DX,F,IP。

三、实验编程'Hello World'程序:DATAS SEGMENTSTRING DB 13,10,'Hello World!',13,10,'$'DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXLEA DX,STRINGMOV AH,9INT 21HMOV AH,4CHINT 21HCODES ENDSEND START四、DEBUG 命令:1、打DEBUG 进入DEBUG,显示提示苻'_ '。

dsp 研究报告

dsp 研究报告

dsp 研究报告
DSP(Digital Signal Processing,数字信号处理)是指利用数
字技术对信号进行处理和分析的过程。

随着计算机技术的发展,DSP技术逐渐成为信号处理领域的重要工具。

本研究报告旨
在介绍DSP的基本原理、应用领域以及未来发展趋势。

首先,DSP的基本原理是将模拟信号通过采样、量化和编码
转换成数字信号,然后通过数字滤波、变换、调制等处理方法对信号进行处理。

与模拟信号相比,数字信号具有较强的抗干扰能力和稳定性,能够更好地满足实际应用的需求。

其次,DSP在许多领域都有广泛的应用。

在通信领域,DSP
可以用于音频、视频传输和压缩,提高传输速度和质量。

在图像处理领域,DSP可以用于图像增强、模式识别和人脸识别
等方面。

在音频处理方面,DSP可以用于音频效果处理、音
频合成等方面。

此外,DSP还广泛应用于雷达、声纳、医学
图像处理等领域。

然而,随着科技的不断发展,DSP技术也在不断更新和演进。

未来,DSP的应用将更加广泛,包括物联网、人工智能、虚
拟现实等方面。

同时,DSP系统的实时性、低功耗和高效率
等方面也将得到进一步提升。

总之,DSP技术作为数字信号处理的重要工具,已经在多个
领域得到应用。

通过对信号的处理,可以提高信号的质量、速度和准确性。

未来,DSP的发展将更加注重应用的广泛性和
效率的提升,为我们的生活带来更多的便捷和可能性。

中南大学通信数字信号处理(DSP)课程设计报告

中南大学通信数字信号处理(DSP)课程设计报告

中南大学数字信号处理课程设计报告专业班级: 通信工程XX指导老师:李宏姓名:学号:完成日期:2014年10月18日前言现代信号处理是将信号表示并处理的理论和技术,而数字信号处理与模拟信号处理是信号处理的子集。

在本次课程设计中主要以数字信号处理来解决问题。

数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波,因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。

而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。

数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(DSP)和专用集成电路(ASIC)等。

数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。

数字信号处理的核心算法是离散傅立叶变换(DFT),是DFT使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。

而使数字信号处理从理论走向实用的是快速傅立叶变换(FFT),FFT的出现大大减少了DFT的运算量,使实时的数字信号处理成为可能、极大促进了该学科的发展。

MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户接口、连接其它编程语言的程序等。

一、课程设计目的:1.全面复习课程所学理论知识,巩固所学知识重点和难点,将理论与实践很好地结合起来。

2. 掌握信号分析与处理的基本方法与实现3.提高综合运用所学知识独立分析和解决问题的能力; 4.熟练使用一种高级语言进行编程实现。

二、课程设计题目:(一):1) 生成信号发生器:能产生频率(或基频)为10Hz 的周期性正弦波、三角波和方波信号。

绘出它们的时域波形2) 为避免频谱混叠,试确定各信号的采样频率。

中南大学dsp2812实验报告

中南大学dsp2812实验报告
第一步
把输入序列作位倒序是为了在整个运算最后的输出中得到的序列是自然顺序。首先,把原始输入的2N=1024个点的实数序列a(n)当成N=512点的复数序列d(n)。偶数地址是d(n)的实部,奇数地址是d(n)的虚部。然后,复数序列经过位倒序,存储在DATA数据处理缓冲器中。
在用VC55X进行位倒序组合时,使用位倒序寻址方式,AR0存放的整数N是FFT点数的一半,一个辅助寄存器指向一个数据存放的单元。当使用位倒序寻址把AR0加到辅助寄存器时,地址以位倒序的方式产生,进位是从左到右。
// Global variables used in this example:
Uint16 LoopCount;
Uint16 ConversionCount;
Uint16 Voltage1[1024];
Uint16 Voltage2[1024];
Uint16 Voltage3[1024];
main()
dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];
dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];
dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];
#include "DSP281x_Examples.h" // DSP281x Examples Include File
// Prototype statements for functions found within this file.

中南大学数字信号处理实验报告解读

中南大学数字信号处理实验报告解读

课程名称:数字信号处理姓名:Vaga 成绩:班级:电子信息学号:日期:2014年5月13日地点:综合实验楼指导老师:目录实验一信号、系统及系统响应1.实验目的 (3)2.实验原理与方法 (3)3.实验内容 (4)实验步骤 (4)程序框图 (6)4.实验结论 (7)实验代码 (7)实验截图 (11)实验二用FFT作谱分析1.实验目的 (14)2.实验原理 (14)3.实验步骤 (16)4.上机实验内容 (17)5.实验结果 (17)实验代码 (18)实验截图 (19)1.实验目的(1)熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。

(2)熟悉是与离散系统的时域特性。

(3)利用卷积方法观察并分析系统的时域特性。

(4)掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。

2. 实验原理与方法(1)采样是连续信号数字处理的第一个关键环节。

对一个信号X a(t)进行理想采样过程如下:其中为的理想采样,p(t)为周期冲激脉冲,即的傅里叶变换为将p(t)代入并进行傅里叶变换其中就是采样后得到的序列X(n),即X(n)的傅里叶变换为由上两式得(2)在数字计算机上观察分析各种序列的频域特性,通常对在[0,2π]上进行M点采样来观察分析。

对长度为N的有限长序列X(n),有其中一个时域离散线性非事变系统的输入/输出关系为上述积分也可以在频域实现:3. 实验内容实验步骤:(1)信号产生子程序,用于产生试验中要用到的下列信号序列:a.采样信号序列:对下面连续信号:进行采样,可得到采样序列:其中A为幅度因子,a为衰减因子,是模拟角频率,T为采样间隔,这些参数在实验过程中由键盘输入,产生不同的和。

b.单位脉冲序列:c.矩形序列:(2)系统单位脉冲相应序列产生子程序。

本实验要用到两种FIR系统。

a.b.(3)有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积。

DSP报告

DSP报告

DSP报告基于CCS和ICETEK5509实验箱----FFT算法的C语言实现与验证学院:计算机学院班级:通信0801姓名:·····学号:3080601022同组成员:···指导老师:···一、课程设计目的1、熟悉FFT的基本原理及A/D转换的基本原理2、针对理论课、实验课中无时间和不方便提及内容和需强调重点进行补充与完善;3、以原理算法的实现与验证体会DSP技术的系统性,并加深基本原理的体会。

二、课程设计要求1.设计一个以ICETEK5509为硬件主体,FFT为核心算法的频谱分析系统方案;2.用C语言编写系统软件的核心部分,熟悉CCS调试环境的使用方法,在CCS IDE中仿真实现方案功能;3.在实验箱上由硬件实现频谱分析。

三、课程设计内容1、FFT算法C语言实现与验证1)参考教材P371的14.3节完成CCS环境中的FFT工程的建立;2)设计检测信号,验证FFT算法的正确性及FFT的部分性质;3)运用FFT完成IFFT计算;2、单路,多路模数转换(AD)1)回顾CCS的基本操作流程,尤其是开发环境的使用;2)参考实验指导和示例工程掌握5509芯片A/D的C语言基本控制流程;3)仔细阅读工程的源程序,做好注释,为后期开发做好系统采集前端设计的准备;3、系统集成,实现硬件频谱分析1)整合前两个工程,实现连续信号的频谱分析工程的构建;2)参考A/D转换示例和DSP系统功能自检示例完成硬件连接,并测试开发系统运行效果;3)基于现有系统,对于实时频谱分析给出进一步开发设计和系统改良方案。

四、课程设计原理1.(软仿真)先利用sin函数验证FFT的正确性2.(硬仿真)将信号模拟信号经过AD采样后,转为离散的数字信号,将这些信号存储进缓冲区,然后读出缓冲区数据,经过变址运算后做蝶形运算,得到的数据进行IFFT运算,将运算后的图与开始的输入信号做对比。

DSP实验报告(完美版)

DSP实验报告(完美版)

DSP实验报告班级:11050641学号:姓名:指导教师:实验一、二 DSP芯片的开发工具及应用实验1.实验目的(1)熟悉CCS集成开发环境,掌握工程的生成方法;(2)熟悉SEED-DTK DAD实验环境;(3)掌握CCS集成开发环境的调试方法。

2.实验设备DSP实验箱,计算机,CCS软件。

3.实验内容及步骤(1)CCS软件的安装;(2)了解SEED-DTK5416实验环境;(3)打开CCS集成开发环境,进入CCS的操作环境;(4)新建一个工程文件○1在c:\ti\myprojects中建立文件夹volume1(如果CCS安装在其他d:\ti ,则在d:\ti\myprojects中);○2将c:\ti\tutorial\target\volume1拷贝到c:\ti\myprojects\ volume1;○3从在CCS 中的Project 菜单,选择 New;○4在Project Name域中,键入volume1;○5在Location区域中,浏览步骤1所建立的工作文件夹;○6在Project Type 域中,选择Executable(.out);○7在Target域中,选择CCS配置的目标,并单击完成。

(5)向工程中添加文件○1从Project/Add Files to Project,选择 volume.c,单击Open(或右击Project View图标,选择Add Files to Project );○2选择Project/Add Files to Project,在Files of type对话框中,选择Asm Source Files (*.a*, *.s*)。

选择vectors.asm 和 load.asm, 单击Open;○3选择 Project/Add Files to Project,在Files of type 对话框中选择 Linker Command File (*.cmd),选择volume.cmd,单击Open。

DSP代码分析报告--中南大学

DSP代码分析报告--中南大学

DSP原理及应用代码分析报告院系:专业班级:学生姓名:学号:指导老师:应用DSP2407开发板实现LED的定时器控制一.基本原理概述DSP的IO口没有单片机的IO口的驱动能力强,不能直接接LED。

所以在核心板中采用的是三极管驱动电路,如图所示:定时器是片内减一计数器,用于周期性地产生CPU中断。

片内定时器是可编程的,TMS320C54x系列芯片有3个存储器映像寄存器,DSP2407开发板与之相比大同小异。

定时器由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成,分辨率是器件的时钟输出CLKOUT频率。

其逻辑框图如下:定时器的定时周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。

在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。

当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。

同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。

PSC在CLKOUT作用下,作减1计数。

当PSC减到0时,产生一个借位信号,令TIM作减l计数。

TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT,从而控制LED灯的亮与灭。

二.(C语言)主要程序分析/*Main.c,LED与定时器程序*/#include "global.c"void SystemInit();void Timer1Init();void KickDog();int numled=200;main(){SystemInit(); /*系统初始化*/MCRA=MCRA & 0xC0FF; //IOPB0-6设为IO口模式PBDATDIR=0xFFC2; //所有LED=0PBDATDIR=PBDATDIR |0x003D; //所有LED=1Timer1Init(); /*定时器初始化*/asm(" CLRC INTM ");while(1);}void SystemInit(){asm(" SETC INTM "); /* 关闭总中断*/asm(" CLRC SXM "); /* 禁止符号位扩展*/asm(" CLRC CNF "); /* B0块映射为on-chip DARAM*/asm(" CLRC OVM "); /* 累加器结果正常溢出*/SCSR1=0x83FE; /* 系统时钟CLKOUT=20*2=40M *//* 打开ADC,EVA,EVB,CAN和SCI的时钟,系统CLKOUT=40M */ WDCR=0x006F; /* 禁止看门狗,看门狗时钟64分频*/KickDog(); /* 初始化看门狗*/IFR=0xFFFF; /* 清除中断标志*/IMR=0x0002; /* 打开中断2*/}void Timer1Init(){EVAIMRA=0x0080; //定时器1周期中断使能EVAIFRA=0xFFFF; //清除中断标志GPTCONA=0x0000;T1PR=2500; //定时器1初值,定时0.4us*2500=1msT1CNT=0;T1CON=0x144E; //增模式, TPS系数40M/16=2.5M,T1使能}void c_int2() /*定时器1中断服务程序*/{if(PIVR!=0x27){ asm(" CLRC INTM ");return;}T1CNT=0;numled--;if(numled==0){numled=200;if((PBDATDIR& 0x0001)==0x0001)PBDATDIR=PBDATDIR & 0xFFFE; //IOPB0=0;LED灭elsePBDATDIR=PBDATDIR |0x0101; //IOPB0=1;LED亮}EVAIFRA=0x80;asm(" CLRC INTM ");}void KickDog() /*踢除看门狗*/{WDKEY=0x5555;WDKEY=0xAAAA;}三.算法分析从主程序main函数可以看出,程序主要时按照顺序结构编写的,主要包括DSP系统初始化、定时器初始化和中断服务子程序。

DSP综合实验程序分析

DSP综合实验程序分析

#include "DSP281x_Device.h" // DSP281x Headerfile Include File#include "DSP281x_Examples.h" // DSP281x Examples Include Filevoid Delay(unsigned int nTime);void SetLEDArray1(int nNumber); // 修改显示内容void RefreshLEDArray1(); // 刷新显示interrupt void cpu_timer0_isr(void); // CPU Timer0的中断服务程序interrupt void XINT2_isr(void); //利用ICETEK-CTR键盘产生外中断的中断服务程序void EndICETEKCTR();#define XINT2CR (*((unsigned int *)0x7071))#define XNMICR (*((unsigned int *)0x7077))#define T46uS 0x0d40#define SCANCODE_0 0x70 // 键盘的扫描码,由DSP的扩展地址0x108001给出,当有键盘输入时,#define SCANCODE_1 0x69 // 读此端口得到扫描码,当无键盘被按下时,读此端口的结果为0#define SCANCODE_2 0x72#define SCANCODE_3 0x7A#define SCANCODE_4 0x6B#define SCANCODE_5 0x73#define SCANCODE_6 0x74#define SCANCODE_7 0x6C#define SCANCODE_8 0x75#define SCANCODE_9 0x7D#define SCANCODE_Del 0x49#define SCANCODE_Enter 0x5A#define SCANCODE_Plus 0x79#define SCANCODE_Minus 0x7B#define SCANCODE_Mult 0x7C#define SCANCODE_Divid 0x4A#define SCANCODE_Num 0x77#define CTRGR *(int *)0x108000 // 全局控制寄存器#define CTRLCDCMDR *(int *)0x108001#define CTRKEY *(int *)0x108001 // 键盘数据回读寄存器#define CTRLCDCR *(int *)0x108002#define CTRCLKEY *(int *)0x108002 //清除键盘#define CTRLCDLCR *(int *)0x108003#define CTRLCDRCR *(int *)0x108004#define CTRLA *(int *)0x108005 //发光二极管控制#define CTRLR *(int *)0x108007 //辅助控制Uint16 var1 = 0;Uint16 var2 = 0;Uint16 var3 = 0;Uint16 test_count = 0;Uint16 Test_flag = 0;Uint16 Test_var = 0;Uint16 Test_status[32];#define nStatusNSGreenEWRed 160 //用数字来区分每一个状态南北绿灯,东西红灯#define nStatusNSFlashEWRed 184 //南北绿灯闪烁,东西红灯#define nStatusNSYellowEWRed 200 //南北黄灯,东西红灯#define nStatusNSRedEWYellow 216 //南北红灯,东西黄灯#define nStatusNSRedEWGreen 376 //南北红灯,东西绿灯#define nStatusNSRedEWFlash 400 //南北红灯,东西绿灯闪烁#define nStatusNSRedEWYellow1 416 //南北红灯,东西黄灯#define nStatusNSYellowEWRed1 432 //南北黄灯,东西红灯#define nTotalTime 448 //正常顺序一个循环#define nStatusHold 160 //突发情况#define statusNSGreenEWRed 0 //一共7个状态#define statusNSFlashEWRed 1#define statusNSYellowEWRed 2#define statusNSRedEWYellow 3#define statusNSRedEWGreen 4#define statusNSRedEWFlash 5#define statusHold 6int a=0;unsigned int uWork,nTimeCount,nTimeMS; //计数时使用的变量unsigned int uLightStatusEW,uLightStatusSN; //东西、南北红黄绿二极管的亮灭情况unsigned int bHold; //用来表明是否处于突发情况unsigned char ledbuf[8],ledx[8]; //二极管点阵显示用到unsigned char led[40]={0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00,0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76,0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71,0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07,0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E};void main(void){int nWork1,nWork2,nWork3,nWork4,k;int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus;unsigned int nScanCode;nTimeCount=0; bHold=0; //给各变量赋初值uLightStatusEW=uLightStatusSN=0;nNowStatus=0; nOldStatus=1; nOldTimeCount=0;//InitSysCtrl();//初始化cpuInitPll(0x0); //SYSCLKOUT=30 MHz /2=15MHzDINT;//关中断InitPieCtrl();//初始化pie寄存器IER = 0x0000;//禁止所有的中断IFR = 0x0000;InitPieVectTable();//初始化pie中断向量表EALLOW; // This is needed to write to EALLOW protected registersPieV ectTable.TINT0 = &cpu_timer0_isr;//指定中断服务子程序PieV ectTable.XINT2 = &XINT2_isr;EDIS; // This is needed to disable write to EALLOW protected registers //EALLOW; // This is needed to write to EALLOW protected registers //PieVectTable.XINT2 = &XINT2_isr;//EDIS; // This is needed to disable write to EALLOW protected registersCpuTimer0.RegsAddr = &CpuTimer0Regs;// Initialize timer period to maximum:CpuTimer0Regs.PRD.all = 0xffff; //CPU Timer0的周期寄存器值为0xffff //CpuTimer0Regs.PRDH.all = 0xffff;// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):CpuTimer0Regs.TPR.all = 0xff09; //16位定时器分频为9CpuTimer0Regs.TIM.all = 0xffff;//CpuTimer0Regs.TIMH.all = 0xffff;CpuTimer0Regs.TPRH.all = 0;// Make sure timer is stopped:CpuTimer0Regs.TCR.bit.TSS = 1; //启动CPU Timer0CpuTimer0Regs.TCR.bit.SOFT = 1;CpuTimer0Regs.TCR.bit.FREE = 1;// Reload all counter register with period value:CpuTimer0Regs.TCR.bit.TRB = 1;CpuTimer0Regs.TCR.bit.TIE = 1;// Reset interrupt counters:CpuTimer0.InterruptCount = 0;// Enable CPU INT1 which is connected to CPU-Timer 0:IER |= M_INT1;// Enable TINT0 in the PIE: Group 1 interrupt 7PieCtrlRegs.PIEIER1.bit.INTx5 = 1; //XINT2中断使能PieCtrlRegs.PIEIER1.bit.INTx7 = 1; //TINT0中断使能XINT2CR =0x1;/*打开管脚xint2外中断*///XNMICR=0x1;/*打开nmi中断*/// Enable global Interrupts and higher priority real-time debug events:EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGMCTRGR=0; // 初始化ICETEK-CTR 具体说明见实验箱硬件编程CTRGR=0x80;CTRGR=0;CTRLR=0; // 关闭东西方向的交通灯CTRLR=0x40; // 关闭南北方向的交通灯CTRLR=0x0c1; // 开启发光二极管显示阵列for ( k=0;k<8;k++ ){ledbuf[k]=0x0ff; // 显示为空白值为“1”时灭;值为“0”时点亮ledx[k]=(k<<4); // 生成显示列控制字}k=CTRLCDCR; // 清除键盘缓冲区StartCpuTimer0();//启动定时器0// 根据计时器计数切换状态// 根据状态设置计数和交通灯状态while ( 1 ){if ( bHold && nNowStatus==statusHold ) //突发情况{if ( nTimeCount>=nStatusHold ){nNowStatus=nSaveStatus;nTimeCount=nSaveTimeCount;bHold=0;}}//根据计数值来确定状态else if ( nTimeCount<nStatusNSGreenEWRed ) nNowStatus=statusNSGreenEWRed;else if ( nTimeCount<nStatusNSFlashEWRed ) nNowStatus=statusNSFlashEWRed;else if ( nTimeCount<nStatusNSYellowEWRed ) nNowStatus=statusNSYellowEWRed;else if ( nTimeCount<nStatusNSRedEWYellow ) nNowStatus=statusNSRedEWYellow;else if ( nTimeCount<nStatusNSRedEWGreen ) nNowStatus=statusNSRedEWGreen;else if ( nTimeCount<nStatusNSRedEWFlash ) nNowStatus=statusNSRedEWFlash;else if ( nTimeCount<nStatusNSRedEWYellow1 ) nNowStatus=statusNSRedEWYellow;else if ( nTimeCount<nStatusNSYellowEWRed1 ) nNowStatus=statusNSYellowEWRed;if ( nNowStatus==nOldStatus ) //若状态还未跳变{switch ( nNowStatus ){case statusNSFlashEWRed:nWork1=nTimeCount-nStatusNSGreenEWRed;nWork2=nStatusNSYellowEWRed-nStatusNSFlashEWRed;nWork3=nWork2/3;nWork4=nWork3/2;if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 ) //if和条件语句用来uLightStatusSN=( (nWork1%nWork3)<=nWork4 )?(0x49):(0x40); //实现绿灯的闪烁break;case statusNSRedEWFlash:nWork1=nTimeCount-nStatusNSRedEWGreen;nWork2=nStatusNSRedEWYellow1-nStatusNSRedEWFlash;nWork3=nWork2/3;nWork4=nWork3/2;if ( nWork1>=0 && nWork2>0 && nWork3>0 && nWork4>0 ) //分析同前uLightStatusEW=( (nWork1%nWork3)<=nWork4 )?(0x09):(0x00);break;case statusNSGreenEWRed:nWork1=nStatusNSGreenEWRed/20; //=8if ( nWork1>0 ){nWork2=20-nTimeCount/nWork1; //nWork1最大20,最小0if ( bHold ) //出现突发状态{if ( nWork2>10 ) //若多于10s,则将时间改为10s{nTimeCount=nWork1*10;nWork2=10;}}if ( nOldTimeCount!=nWork2 ){nOldTimeCount=nWork2;SetLEDArray1(nWork2);}}break;case statusNSRedEWGreen:nWork1=(nStatusNSRedEWGreen-nStatusNSRedEWYellow)/20;if ( nWork1>0 ){nWork2=20-(nTimeCount-nStatusNSRedEWYellow)/nWork1;if ( bHold ){if ( nWork2>10 ){nTimeCount=nStatusNSRedEWYellow+nWork1*10;nWork2=10;}}if ( nOldTimeCount!=nWork2 ){nOldTimeCount=nWork2;SetLEDArray1(nWork2);}}break;case statusHold:nWork1=nStatusHold/20;if ( nWork1>0 ){nWork2=20-nTimeCount/nWork1;if ( nOldTimeCount!=nWork2 ){nOldTimeCount=nWork2;SetLEDArray1(nWork2);}}break;}}else{if ( bHold ){nSaveStatus=nNowStatus;nSaveTimeCount=nTimeCount;nNowStatus=statusHold;nTimeCount=0;if ( nSaveStatus==statusNSFlashEWRed || nSaveStatus==statusNSYellowEWRed ){//若突发情况,其状态为闪烁或黄灯,则直接将下一状态保存nSaveStatus=statusNSRedEWGreen;nSaveTimeCount=nStatusNSRedEWYellow;}else if ( nSaveStatus==statusNSRedEWFlash || nSaveStatus==statusNSRedEWYellow ){nSaveStatus=statusNSGreenEWRed;nSaveTimeCount=0;}}nOldStatus=nNowStatus;switch ( nNowStatus ){case statusNSGreenEWRed:uLightStatusEW=0x24; uLightStatusSN=0x49; //东西红灯,南北绿灯SetLEDArray1(20);break;case statusNSFlashEWRed:uLightStatusEW=0x24; uLightStatusSN=0x49; //东西红灯,南北绿灯SetLEDArray1(0);break;case statusNSYellowEWRed:uLightStatusEW=0x24; uLightStatusSN=0x52; //东西红灯,南北黄灯SetLEDArray1(20);break;case statusNSRedEWYellow:uLightStatusEW=0x12; uLightStatusSN=0x64;SetLEDArray1(20);break;case statusNSRedEWGreen:uLightStatusEW=0x09; uLightStatusSN=0x64;SetLEDArray1(20);break;case statusNSRedEWFlash:uLightStatusEW=0x09; uLightStatusSN=0x64;SetLEDArray1(0);break;case statusHold:uLightStatusEW=0x24; uLightStatusSN=0x64;SetLEDArray1(20);break;}}CTRLR=uLightStatusEW; CTRLR=uLightStatusSN; // 设置交通灯状态RefreshLEDArray1(); // 刷新发光二极管显示nScanCode=CTRKEY; // 读键盘扫描码nScanCode&=0x0ff;if ( nScanCode==SCANCODE_Enter ) break; //若按ENTER,则退出程序}EndICETEKCTR();exit(0);}interrupt void cpu_timer0_isr(void){ //CpuTimer0.InterruptCount++;// Acknowledge this interrupt to receive more interrupts from group 1PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;CpuTimer0Regs.TCR.bit.TIF = 1;CpuTimer0Regs.TCR.bit.TRB = 1;nTimeMS++;if ( nTimeMS>=5 ) //来5次中断,才改变一次计数值{nTimeMS=0;nTimeCount++;nTimeCount%=nTotalTime;}}interrupt void XINT2_isr(void){//StopCpuTimer0();PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;bHold=1;//StartCpuTimer0();}void Delay(unsigned int nDelay){int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<64;jj++ ){kk++;}}}// 设置发光二极管显示内容void SetLEDArray1(int nNumber){int i,k,kk,kkk;kkk=nNumber;k=kkk/10*4; kk=kkk%10*4;for ( i=0;i<4;i++ ){ledbuf[7-i]=~led[k+i];ledbuf[3-i]=~led[kk+i];}}// 将缓存中点阵送发光二极管显示void RefreshLEDArray1(){int i;for ( i=0;i<8;i++ ){CTRGR=ledx[i];CTRLA=ledbuf[i];}}void EndICETEKCTR(){int k;CTRLR=0; // 关闭东西方向的交通灯CTRLR=0x40; // 关闭南北方向的交通灯CTRLR=0x0c0; // 关闭发光二极管显示阵列k=CTRLCDCR; // 清除键盘缓冲区}。

中南大学算法设计与分析实验报告

中南大学算法设计与分析实验报告

算法设计与分析基础——实验报告姓名:学号:0909122824班级:信安1202实验一分治—最近点对一.问题ProblemHave you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded.In the field of Cyberground, the position of each toy is fixed, and the ring is carefully designed so it can only encircle one toy at a time. On the other hand, to make the game look more attractive, the ring is designed to have the largest radius. Given a configuration of the field, you are supposed to find the radius of such a ring.Assume that all the toys are points on a plane. A point is encircled by the ring if the distance between the point and the center of the ring is strictly less than the radius of the ring. If two toys are placed at the same point, the radius of the ring is considered to be 0.InputThe input consists of several test cases. For each case, the first line contains an integer N (2 <= N <= 100,000), the total number of toys in the field. Then N lines follow, each contains a pair of (x, y) which are the coordinates of a toy. The input is terminated by N = 0.OutputFor each test case, print in one line the radius of the ring required by the Cyberground manager, accurate up to 2 decimal places.二.分析思路题目是给n个点的坐标,求距离最近的一对点之间距离的一半。

中南大学数字信号处理实验报告1——7详

中南大学数字信号处理实验报告1——7详

数字信号处理实验报告实验五实验题目:快速傅里叶变换姓名:学号:班级:指导老师:实验五快速傅里叶变换一、实验仪器:PC机一台、JQ-SOPC开发系统实验箱及辅助软件(DSP Builder、Matlab/Simulink、Quartus II、Modelsim)二、实验目的:1、了解快速傅里叶变换的基本结构组成。

2、学习使用DSP Builder设计FFT。

三、实验原理:(1)FFT的原理:快速傅里叶变换(FFT)是离散傅里叶变换(DFT)的一种高效运算方法,它大大简化了DFT 的运算过程,使运算时间缩短几个数量级。

FFT 算法可以分为按时间抽取(DIT)和按频率抽取(DIF)两类,输入也可分为实数和复数两种情况。

八点时间抽取基-2FFT算法信号流图如图1示:图1 8点基-2 DIT-FFT信号流图四、实验步骤:(1)将桌面的my_fft_8.mdl拷贝到“D:\Program Files\MATLAB71\work”(MATLAB安装目录下的work文件夹)处,并双击打开。

图5-1 快速傅里叶变换系统图图5-2 快速傅里叶变换子系统1图图5-3 快速傅里叶变换子系统2图图5-3 快速傅里叶变换子系统3图(2)点击工具栏即可开始系统级simulink仿真,以验证该模型的正确性。

在仿真进行过程中分别将三个输入控制开关打到000、001、010、011、100以选择五组输入数据进行FFT运算。

当开关打到000时选择第一组数据{2.0,2.0,4.0,7.0,3.0,5.0,5.0,8.0},其运算结果应为36、-2.41+3.84i、-4+8i、0.4219+1.844i、-8、0.4102-1.84i、-4-8i、-2.422-3.844i。

当开关打到001时选择第二组数据{1.1,5.0,10.5,15.3,20.2,25.7,30.6,40.1},其运算结果应该为148.5、-16.1+52.35i、-19.8+24.7i、-22.02+12.25i、-23.7、-22.1-12.15i、-19.8-24.7i、-16.9-52.45i。

中南大学数字信号处理课程设计报告2

中南大学数字信号处理课程设计报告2

中南大学数字信号处理课程设计报告专业班级:指导老师:姓名:学号:目录一、课程设计要求二、设计过程(1)设计题目(2)设计源代码(3)设计结果(4)结果分析三、设计总结与心得体会四、课程设计指导书一、课程设计要求1、课程设计指导书①《数字信号处理(第二版)》,丁玉美等,西安电子科技大学出版社;②《MATLAB 及在电子信息课程中的应用》,陈怀琛等,电子工业出版社。

2、课程设计内容:⑴语音信号去噪处理主要要求:1)在windows系统下的录音机录制一段1s左右的语音信号作为原声信号,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数;2)画出语音信号的时域波形,对采样后的语音进行fft变换,得到信号的频谱特性;对语音信号分别加入正弦噪声和白噪声,画出加噪信号的时域波形和频谱图;3)根据对加噪语音信号谱分析结果,确定滤除噪声滤波器的技术指标,设计合适的数字滤波器,并画出滤波器的频域响应;4)用所设计的滤波器对加噪的信号进行滤波,在同一个窗口画出滤波前后信号的时域图和频谱图,对滤波前后的信号进行对比,分析信号变化;5)利用sound(x)回放语音信号,验证设计效果。

⑵语音信号的延时和混响主要要求:1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样;2)语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图;3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较;4)设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,全通结构的混响器,并画出滤波器的频域响应;5)用自己设计的滤波器对采集的语音信号进行滤波;6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;7)回放语音信号。

⑶数字滤波器的设计及实现主要要求:1)调用信号产生函数mstg产生三路抑制载波调幅信号相加构成的复合信号st,观察st的时域波形和幅频特性曲线;2)由要求将st中的三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率,要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB;3)编程调用MATLAB滤波器设计函数分别设计这三个数字滤波器,并绘图显示其幅频特性曲线;4)调用滤波函数filter,用所设计的三个滤波器分别对复合信号st进行滤波,分离出st中的三路不同载波频率的调幅信号,并绘图显示滤波后信号的时域波形和频谱,观察分离效果。

中南大学数字信号处理实验报告(详

中南大学数字信号处理实验报告(详

课程名称:数字信号处理姓名:贺维佳成绩:班级:电子信息1201 学号:0909120925 日期:2014年5月13日地点:综合实验楼指导老师:张昊目录实验一信号、系统及系统响应1.实验目的 (3)2.实验原理与方法 (3)3.实验内容 (4)实验步骤 (4)程序框图 (6)4.实验结论 (7)实验代码 (7)实验截图 (11)实验二用FFT作谱分析1.实验目的 (14)2.实验原理 (14)3.实验步骤 (16)4.上机实验内容 (17)5.实验结果 (17)实验代码 (18)实验截图 (19)1.实验目的(1)熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解。

(2)熟悉是与离散系统的时域特性。

(3)利用卷积方法观察并分析系统的时域特性。

(4)掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。

2. 实验原理与方法(1)采样是连续信号数字处理的第一个关键环节。

对一个信号X a(t)进行理想采样过程如下:其中为的理想采样,p(t)为周期冲激脉冲,即的傅里叶变换为将p(t)代入并进行傅里叶变换其中就是采样后得到的序列X(n),即X(n)的傅里叶变换为由上两式得(2)在数字计算机上观察分析各种序列的频域特性,通常对在[0,2π]上进行M点采样来观察分析。

对长度为N的有限长序列X(n),有其中一个时域离散线性非事变系统的输入/输出关系为上述积分也可以在频域实现:3. 实验内容实验步骤:(1)信号产生子程序,用于产生试验中要用到的下列信号序列:a.采样信号序列:对下面连续信号:进行采样,可得到采样序列:其中A为幅度因子,a为衰减因子,是模拟角频率,T为采样间隔,这些参数在实验过程中由键盘输入,产生不同的和。

b.单位脉冲序列:c.矩形序列:(2)系统单位脉冲相应序列产生子程序。

本实验要用到两种FIR系统。

a.b.(3)有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积。

dsp实验报告(CMD文件和Gel文件的编写)

dsp实验报告(CMD文件和Gel文件的编写)

CMD文件和Gel文件的编写一、实验目的1. 掌握Gel文件的编写,2. 熟悉Code Composer Studio的使用二、实验设备1. 集成开发环境CCS2. 实验代码ccs_gel.s54、ccs_gel.cmd和ccs_gel.gel三、实验内容1. 建立项目并添加相应文件,连接编译(步骤同实验二一样),双击打开CMD文件,对照教材理解CMD文件的编写结构,改变其中的内容,增加自定义段,保存并重新编译,比对前后两次编译得到的Map文件的异同。

2.了解GEL文件的功能。

Gel文件不是DSP开发必须的文件,而是给CCS使用的文件,它帮助设置CCS的仿真环境,而且可以完成一些常用的调试操enuitem "C54x Experiment";hotmenu C5402_Textout(){GEL_TextOut(“Hello,GEL is a solid tool !\n”);}hotmenu C5402_DSK_Test() /*此功能实现需要用到DSK板,可暂不添加,如做测试,需将此中文注释去掉*/{*(int *)0x0@io = 0xff07; /* turn on LED */}测试其功能。

4. 查询help了解所有Gel的函数功能,并修改文件实现一个其它的Gel函数。

四、实验结果和提示1. 当设备被选用后,与其关联的gel文件将被使用,其中的StartUp函数将被调用。

可修改其中的内容,如PMST寄存器的数值,并测试。

2. 如果当前CCS中装载了gel文件,那么就会出现相应的菜单项,如图3-1所示。

图3-1 GEL菜单3. 添加代码后,重新装载Gel文件将出现新的子菜单,如图3-2所示,并测试新菜单的功能。

图3-2 新的子菜单五、实验心得通过以前两次的实验我已经能比较熟练的应用CCS这个软件,本次实验做的是Gel文件的编写,Gel文件不是DSP开发必须的文件,而是给CCS 使用的文件,它帮助设置CCS的仿真环境,而且可以完成一些常用的调试操,本次实验让我受益匪浅。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP原理及应用代码分析报告院系:专业班级:学生姓名:学号:指导老师:应用DSP2407开发板实现LED的定时器控制一.基本原理概述DSP的IO口没有单片机的IO口的驱动能力强,不能直接接LED。

所以在核心板中采用的是三极管驱动电路,如图所示:定时器是片内减一计数器,用于周期性地产生CPU中断。

片内定时器是可编程的,TMS320C54x系列芯片有3个存储器映像寄存器,DSP2407开发板与之相比大同小异。

定时器由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成,分辨率是器件的时钟输出CLKOUT频率。

其逻辑框图如下:定时器的定时周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。

在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。

当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。

同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。

PSC在CLKOUT作用下,作减1计数。

当PSC减到0时,产生一个借位信号,令TIM作减l计数。

TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT,从而控制LED灯的亮与灭。

二.(C语言)主要程序分析/*Main.c,LED与定时器程序*/#include "global.c"void SystemInit();void Timer1Init();void KickDog();int numled=200;main(){SystemInit(); /*系统初始化*/MCRA=MCRA & 0xC0FF; //IOPB0-6设为IO口模式PBDATDIR=0xFFC2; //所有LED=0PBDATDIR=PBDATDIR |0x003D; //所有LED=1Timer1Init(); /*定时器初始化*/asm(" CLRC INTM ");while(1);}void SystemInit(){asm(" SETC INTM "); /* 关闭总中断*/asm(" CLRC SXM "); /* 禁止符号位扩展*/asm(" CLRC CNF "); /* B0块映射为on-chip DARAM*/asm(" CLRC OVM "); /* 累加器结果正常溢出*/SCSR1=0x83FE; /* 系统时钟CLKOUT=20*2=40M *//* 打开ADC,EVA,EVB,CAN和SCI的时钟,系统CLKOUT=40M */ WDCR=0x006F; /* 禁止看门狗,看门狗时钟64分频*/KickDog(); /* 初始化看门狗*/IFR=0xFFFF; /* 清除中断标志*/IMR=0x0002; /* 打开中断2*/}void Timer1Init(){EVAIMRA=0x0080; //定时器1周期中断使能EVAIFRA=0xFFFF; //清除中断标志GPTCONA=0x0000;T1PR=2500; //定时器1初值,定时0.4us*2500=1msT1CNT=0;T1CON=0x144E; //增模式, TPS系数40M/16=2.5M,T1使能}void c_int2() /*定时器1中断服务程序*/{if(PIVR!=0x27){ asm(" CLRC INTM ");return;}T1CNT=0;numled--;if(numled==0){numled=200;if((PBDATDIR& 0x0001)==0x0001)PBDATDIR=PBDATDIR & 0xFFFE; //IOPB0=0;LED灭elsePBDATDIR=PBDATDIR |0x0101; //IOPB0=1;LED亮}EVAIFRA=0x80;asm(" CLRC INTM ");}void KickDog() /*踢除看门狗*/{WDKEY=0x5555;WDKEY=0xAAAA;}三.算法分析从主程序main函数可以看出,程序主要时按照顺序结构编写的,主要包括DSP系统初始化、定时器初始化和中断服务子程序。

其算法流程图如下:图1. 主程序流程图图2. DSP系统初始化图3. 定时器初始化图4. 中断服务子程序四.头文件和变量声明分析.include "lf2407a.h".include "F2407REGS.H".global _c_int0,_c_int1,_c_int2.global _IMR,_IFR.global _SCSR1,_SCSR2,_XINT1CR,_XINT2CR.global _WDCNTR,_WDKEY,_WDCR.global_MCRA,_MCRB,_MCRC,_PADATDIR,_PBDATDIR,_PCDATDIR,_PEDATDIR,_PFDATDIR.global_ADCTRL1,_ADCTRL2,_MAXCONV,_CHSELSEQ1,_CHSELSEQ2,_CHSELSEQ3,_CHSELSEQ4 .global _AUTO_SEQ_SR,_RESULT0,_RESULT1,_RESULT2,_RESULT8,_RESULT9.global _CANMDER,_CANTCR,_CANRCR,_CANMCR,_CANBCR2,_CANBCR1,_CANESR,_CANGSR .global _CANCEC,_CANIFR,_CANIMR,_CANLAM0H,_CANLAM0L.global _CANID0L,_CANID0H,_CANCTRL0,_CANBX0A,_CANBX0B,_CANBX0C,_CANBX0D.global _CANID1L,_CANID1H,_CANCTRL1,_CANBX1A,_CANBX1B,_CANBX1C,_CANBX1D.global _CANID2L,_CANID2H,_CANCTRL2,_CANBX2A,_CANBX2B,_CANBX2C,_CANBX2D.global _CANID3L,_CANID3H,_CANCTRL3,_CANBX3A,_CANBX3B,_CANBX3C,_CANBX3D.global _CANID4L,_CANID4H,_CANCTRL4,_CANBX4A,_CANBX4B,_CANBX4C,_CANBX4D.global _CANID5L,_CANID5H,_CANCTRL5,_CANBX5A,_CANBX5B,_CANBX5C,_CANBX5D.global _GPTCONA,_T1CNT,_T1PR,_T1CON,_T2CNT,_T2PR,_T2CON.global _EVAIMRA,_EVAIMRB,_EVAIFRA,_EVAIFRB,_PIVR.global_GPTCONB,_T3CNT,_T3CMPR,_T3PR,_T3CON,_COMCONA,_ACTRA,_DBTCONA,_CMPR1,_E VBIMRA,_EVBIFRA.global _WSGR.sect ".data";建立中断向量表.sect ".vectors"RSVECT B _c_int0INT1 B PHANTOMINT2 B _c_int2INT3 B PHANTOMINT4 B PHANTOMINT5 B PHANTOMINT6 B PHANTOM;中断子向量入口定义.textPHANTOM:KICK_DOGRET.end子函数"lf2407a.h"用于CPU内核定义,各部分初始化如下:;/**********************************************/_IMR .set 00004H ;中断屏蔽寄存器_IFR .set 00006H ;中断标志寄存器;/**********************************************/;/* 系统控制/状态寄存器*/;/**********************************************/_SCSR1 .set 07018H ;系统控制/状态寄存器1_SCSR2 .set 07019H ;系统控制/状态寄存器2_PIVR .set 0701EH ;外部中断向量寄存器;/**********************************************/;/* 外部中断控制寄存器*/;/**********************************************/_XINT1CR .set 07070H ;外部中断1控制寄存器_XINT2CR .set 07071H ;外部中断2控制寄存器;/**********************************************/;/*数字I/O接口*/;/**********************************************/_MCRA .set 07090H ;PA口的控制寄存器_MCRB .set 07092H ;PB口的控制寄存器_MCRC .set 07094H ;PE口和PF口的控制寄存器_PADATDIR .set 07098H ;PA口的方向数据寄存器_PBDATDIR .set 0709AH ;PB口的方向数据寄存器_PCDATDIR .set 0709CH ;PC口的方向数据寄存器_PEDATDIR .set 07095H ;PE口的方向数据寄存器_PFDATDIR .set 07096h ;I/O port F Data & Direction reg. ;/**********************************************/;/*看门狗定时器*/;/**********************************************/_WDCNTR .set 07023H ;WD计数器_WDKEY .set 07025H ;WD键值_WDCR .set 07029H ;WD控制寄存器;/**********************************************/;/* SCI 通讯初始化*/;/**********************************************/_SCICCR .set 07050H ;SCI通信控制寄存器_SCICTL1 .set 07051H ;SCI控制寄存器1_SCIHBAUD .set 07052H ;SCI波特率寄存器(高位)_SCILBAUD .set 07053H ;SCI波特率寄存器(低位)_SCICTL2 .set 07054H ;SCI控制寄存器2_SCIRXST .set 07055H ;SCI接收状态寄存器_SCIRXEMU .set 07056H ;SCI仿真数据缓冲寄存器_SCIRXBUF .set 07057H ;SCI接收数据缓冲寄存器_SCITXBUF .set 07059H ;SCI发送数据缓冲寄存器_SCIPRI .set 0705FH ;SCI中断优先级控制寄存器;/**********************************************/;/*ADC 初始化*/;/**********************************************/_ADCTRL1 .set 070A0H ;ADC控制寄存器1_ADCTRL2 .set 070A1H ;ADC控制寄存器2_MAXCONV .set 070A2H ;最大转换通道寄存器_CHSELSEQ1 .set 070A3H ;通道选择时序控制寄存器1 _CHSELSEQ2 .set 070A4H ;通道选择时序控制寄存器2 _CHSELSEQ3 .set 070A5H ;通道选择时序控制寄存器3 _CHSELSEQ4 .set 070A6H ;通道选择时序控制寄存器4 _AUTO_SEQ_SR .set 070A7H ;自动时序状态寄存器_RESULT0 .set 070A8H ;转换结果寄存器0_RESULT1 .set 070A9H ;转换结果寄存器1_RESULT2 .set 070AAH ;转换结果寄存器2_RESULT3 .set 070ABH ;转换结果寄存器3_RESULT4 .set 070ACH ;转换结果寄存器4_RESULT8 .set 070B0H ;转换结果寄存器8_RESULT9 .set 070B1H ;转换结果寄存器9;/**********************************************/;/* CAN 总线初始化*/;/**********************************************/_CANMDER .set 07100H ;缓冲使能/通信方向_CANTCR .set 07101H ;发送控制_CANRCR .set 07102H ;接收控制_CANMCR .set 07103H ;主控_CANBCR2 .set 07104H ;位配置2_CANBCR1 .set 07105H ;位配置1_CANESR .set 07106H ;错误状态_CANGSR .set 07107H ;全局状态_CANCEC .set 07108H ;发送/接收错误计数_CANIFR .set 07109H ;中断标志_CANIMR .set 0710AH ;中断屏蔽_CANLAM0H .set 0710BH ;接收屏蔽:mbox0/1 _CANLAM0L .set 0710CH ;接收屏蔽:mbox0/1 _CANLAM1H .set 0710DH ;接收屏蔽:mbox2/3 _CANLAM1L .set 0710EH ;接收屏蔽:mbox2/3DP_CANBOX .set 0E4H_CANID0L .set 07200H ;ID for mbox 0(lower) _CANID0H .set 07201H ;ID for mbox 0(upper) _CANCTRL0 .set 07202H ;RTR and DLC_CANBX0A .set 07204H_CANBX0B .set 07205H_CANBX0C .set 07206H_CANBX0D .set 07207H_CANID1L .set 07208H ;ID for mbox 1(lower) _CANID1H .set 07209H ;ID for mbox 1(upper) _CANCTRL1 .set 0720AH ;RTR and DLC_CANBX1A .set 0720CH_CANBX1B .set 0720DH_CANBX1C .set 0720EH_CANBX1D .set 0720FH_CANID2L .set 07210H ;ID for mbox 2(lower)_CANID2H .set 07211H ;ID for mbox 2(upper)_CANCTRL2 .set 07212H ;RTR and DLC_CANBX2A .set 07214H_CANBX2B .set 07215H_CANBX2C .set 07216H_CANBX2D .set 07217H_CANID3L .set 07218H ;ID for mbox 3(lower)_CANID3H .set 07219H ;ID for mbox 3(upper)_CANCTRL3 .set 0721AH ;RTR and DLC_CANBX3A .set 0721CH_CANBX3B .set 0721DH_CANBX3C .set 0721EH_CANBX3D .set 0721FH_CANID4L .set 07220H ;ID for mbox 4(lower)_CANID4H .set 07221H ;ID for mbox 4(upper)_CANCTRL4 .set 07222H ;RTR and DLC_CANBX4A .set 07224H_CANBX4B .set 07225H_CANBX4C .set 07226H_CANBX4D .set 07227H_CANID5L .set 07228H ;ID for mbox 5(lower)_CANID5H .set 07229H ;ID for mbox 5(upper)_CANCTRL5 .set 0722AH ;RTR and DLC_CANBX5A .set 0722CH_CANBX5B .set 0722DH_CANBX5C .set 0722EH_CANBX5D .set 0722FH;/**********************************************/;/* EVA 控制初始化*/;/**********************************************/_GPTCONA .set 07400H ;全局通用定时器控制寄存器_T1CNT .set 07401H ;T1计数寄存器_T1PR .set 07403H ;通用定时器的周期寄存器_T1CON .set 07404H ;定时器控制寄存器_T2CNT .set 07405H ;T2计数寄存器_T2PR .set 07407H ;T2的周期寄存器_T2CON .set 07408H ;T2的控制寄存器_ACTRA .set 07413H_DBTCONA .set 07415H_CMPR1 .set 07417H_COMCONA .set 07411H_EVAIMRA .set 0742CH_EVAIMRB .set 0742DH_EVAIFRA .set 0742FH_EVAIFRB .set 07430H_GPTCONB .set 07500H_T3CNT .set 07501H_T3CMPR .set 07502H_T3PR .set 07503H_T3CON .set 07504H_EVBIMRA .set 0752CH_EVBIFRA .set 0752FH;/**********************************************/;/* I/O space mapped registers */;/**********************************************/_WSGR .set 0FFFFH ;Wait-state Generator Control register子函数"F2407REGS.H"用来定义全局变量寄存器和CPU中断寄存器:;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IMR .set 0004h ;中断屏蔽寄存器IFR .set 0006h ;中断标志寄存器;System Registers;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PIRQR0 .set 07010h ;外设中断请求寄存器0PIRQR1 .set 07011h ;外设中断请求寄存器1PIRQR2 .set 07012h ;外设中断请求寄存器2PIACKR0 .set 07014h ;外设中断应答寄存器0PIACKR1 .set 07015h ;外设中断应答寄存器1PIACKR2 .set 07016h ;外设中断应答寄存器2SCSR1 .set 07018h ;系统控制和状态寄存器1SCSR2 .set 07019h ;系统控制和状态寄存器2DINR .set 0701Ch ;PIVR .set 0701Eh ;外设中断向量寄存器;WD 程序监视控制寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WDCNTR .set 07023h ;WD 计数器寄存器WDKEY .set 07025h ;WDKey 寄存器WDCR .set 07029h ;WD 控制寄存器;串行外围接口(SPI) 寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SPICCR .set 07040h ;SPI 配置控制寄存器SPICTL .set 07041h ;SPI 操作控制寄存器SPISTS .set 07042h ;SPI 状态寄存器SPIBRR .set 07044h ;SPI 波特率寄存器SPIEMU .set 07046h ;SPI 仿真缓冲寄存器SPIRXBUF .set 07047h ;SPI 串行输入缓冲寄存器SPITXBUF .set 07048h ;SPI 串行输入缓冲寄存器SPIDAT .set 07049h ;SPI 串行数据寄存器SPIPRI .set 0704Fh ;SPI 中断优先级控制寄存器;串行通讯接口(SCI) 寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SCICCR .set 07050h ;SCI 通讯控制寄存器SCICTL1 .set 07051h ;SCI 控制寄存器1SCIHBAUD .set 07052h ;SCI 波特率寄存器高位SCILBAUD .set 07053h ;SCI 波特率寄存器低位SCICTL2 .set 07054h ;SCI 控制寄存器2SCIRXST .set 07055h ;SCI 接受状态寄存器SCIRXEMU .set 07056h ;SCI 仿真数据缓冲寄存器SCIRXBUF .set 07057h ;SCI 接受数据缓冲寄存器SCITXBUF .set 07059h ;SCI 发送数据缓冲寄存器SCIPRI .set 0705Fh ;SCI 中断优先级控制寄存器;外部中断寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XINT1CR .set 07070h ;中断1 控制寄存器XINT2CR .set 07071h ;中断2 控制寄存器;数据I/O 控制寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MCRA .set 07090h ;Output Control Reg AMCRB .set 07092h ;Output Control Reg BMCRC .set 07094h ;Output Control Reg CPEDATDIR .set 07095h ;I/O port E Data & Direction reg.PFDATDIR .set 07096h ;I/O port F Data & Direction reg.PADATDIR .set 07098h ;I/O port A Data & Direction reg.PBDATDIR .set 0709Ah ;I/O port B Data & Direction reg.PCDATDIR .set 0709Ch ;I/O port C Data & Direction reg.PDDATDIR .set 0709Eh ;I/O port D Data & Direction reg.;模数转换(ADC) 寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ADCTRL1 .set 070A0h ;ADC 控制寄存器1ADCTRL2 .set 070A1h ;ADC 控制寄存器2MAXCONV .set 070A2hCHSELSEQ1 .set 070A3hCHSELSEQ2 .set 070A4hCHSELSEQ4 .set 070A6hAUTO_SEQ_SR .set 070A7hRESULT0 .set 070A8h ;A/D转换结果寄存器0RESULT1 .set 070A9h ;A/D转换结果寄存器1RESULT2 .set 070AAh ;A/D转换结果寄存器2RESULT3 .set 070ABh ;A/D转换结果寄存器3RESULT4 .set 070ACh ;A/D转换结果寄存器4RESULT5 .set 070ADh ;A/D转换结果寄存器5RESULT6 .set 070AEh ;A/D转换结果寄存器6RESULT7 .set 070AFh ;A/D转换结果寄存器7RESULT8 .set 070B0h ;A/D转换结果寄存器8RESULT9 .set 070B1h ;A/D转换结果寄存器9RESULT10 .set 070B2h ;A/D转换结果寄存器10RESULT11 .set 070B3h ;A/D转换结果寄存器11RESULT12 .set 070B4h ;A/D转换结果寄存器12RESULT13 .set 070B5h ;A/D转换结果寄存器13RESULT14 .set 070B6h ;A/D转换结果寄存器14RESULT15 .set 070B7h ;A/D转换结果寄存器15CALIBRATION .set 070B8h;CAN 配置控制寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MDER .set 07100hTCR .set 07101hRCR .set 07102hMCR .set 07103hBCR2 .set 07104hBCR1 .set 07105hESR .set 07106hGSR .set 07107hCEC .set 07108hCAN_IFR .set 07109hCAN_IMR .set 0710AhLAM0_H .set 0710BhLAM0_L .set 0710ChLAM1_H .set 0710DhLAM1_L .set 0710Eh;邮包#0MSGID0L .set 07200hMSGID0H .set 07201hMSGCTRL0 .set 07202hMBX0A .set 07204hMBX0B .set 07205hMBX0C .set 07206h;邮包#1MSGID1L .set 07208hMSGID1H .set 07209hMSGCTRL1 .set 0720AhMBX1A .set 0720ChMBX1B .set 0720DhMBX1C .set 0720EhMBX1D .set 0720Fh;邮包#2MSGID2L .set 07210hMSGID2H .set 07211hMSGCTRL2 .set 07212hMBX2A .set 07214hMBX2B .set 07215hMBX2C .set 07216hMBX2D .set 07217h;邮包#3MSGID3L .set 07218hMSGID3H .set 07219hMSGCTRL3 .set 0721AhMBX3A .set 0721ChMBX3B .set 0721DhMBX3C .set 0721EhMBX3D .set 0721Fh;邮包#4MSGID4L .set 07220hMSGID4H .set 07221hMSGCTRL4 .set 07222hMBX4A .set 07224hMBX4B .set 07225hMBX4C .set 07226hMBX4D .set 07227h;邮包#5MSGID5L .set 07228hMSGID5H .set 07229hMSGCTRL5 .set 0722AhMBX5A .set 0722ChMBX5B .set 0722DhMBX5C .set 0722EhMBX5D .set 0722Fh;通用定时器-- 事件管理器A (EVA);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GPTCONA .set 07400h ;通用定时控制寄存器T1CNT .set 07401h ;通用定时器1 计数寄存器T1CMPR .set 07402h ;通用定时器1 比较寄存器T1PR .set 07403h ;通用定时器1 周期寄存器T1CON .set 07404h ;通用定时器1 控制寄存器T2CNT .set 07405h ;通用定时器2 计数寄存器T2CMPR .set 07406h ;通用定时器2 比较寄存器T2PR .set 07407h ;通用定时器2 周期寄存器T2CON .set 07408h ;通用定时器2 控制寄存器;Full & Simple Compare Unit Registers --事件管理器A (EVA);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMCONA .set 07411h ;比较控制寄存器AACTRA .set 07413h ;全比较动作控制寄存器ADBTCONA .set 07415h ;死区时间控制寄存器ACMPR1 .set 07417h ;全比较单元1 比较寄存器CMPR2 .set 07418h ;全比较单元2 比较寄存器CMPR3 .set 07419h ;全比较单元3 比较寄存器;捕捉和正交编码寄存器事件管理器(EVA);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CAPCONA .set 07420h ;捕捉控制寄存器ACAPFIFOA .set 07422h ;捕捉FIFO 状态寄存器ACAP1FIFO .set 07423h ;捕捉1 二级FIFO 寄存器CAP2FIFO .set 07424h ;捕捉2 二级FIFO 寄存器CAP3FIFO .set 07425h ;捕捉3 二级FIFO 寄存器CAP1FBOT .set 07427hCAP2FBOT .set 07428hCAP3FBOT .set 07429h;事件管理器(EVA) 中断控制寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EVAIMRA .set 0742Ch ;事件管理器中断屏蔽寄存器AEVAIMRB .set 0742Dh ;事件管理器中断屏蔽寄存器BEVAIMRC .set 0742Eh ;事件管理器中断屏蔽寄存器CEVAIFRA .set 0742Fh ;事件管理器中断标志寄存器AEVAIFRB .set 07430h ;事件管理器中断标志寄存器BEVAIFRC .set 07431h ;事件管理器中断标志寄存器C;通用(GP)定时器配置控制寄存器--EVB;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GPTCONB .set 07500hT3CNT .set 07501hT3CMPR .set 07502hT3PR .set 07503HT3CON .set 07504hT4CNT .set 07505hT4CMPR .set 07506hT4PR .set 07507HT4CON .set 07508h;比较单元寄存器--EVB;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ COMCONB .set 07511hACTRB .set 07513hDBTCONB .set 07515hCMPR4 .set 07517hCMPR5 .set 07518hCMPR6 .set 07519h;捕捉单元寄存器--EVB;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CAPCONB .set 07520hCAPFIFOB.set 07522hCAP4FIFO .set 07523hCAP5FIFO .set 07524hCAP6FIFO .set 07525hCAP4FBOT .set 07527hCAP5FBOT .set 07528hCAP6FBOT .set 07529h;事件管理器(EVB) 中断控制寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EVBIMRA .set 0752Ch ;事件管理器中断屏蔽寄存器AEVBIMRB .set 0752Dh ;事件管理器中断屏蔽寄存器BEVBIMRC .set 0752Eh ;事件管理器中断屏蔽寄存器CEVBIFRA .set 0752Fh ;事件管理器中断标志寄存器AEVBIFRB .set 07530h ;事件管理器中断标志寄存器BEVBIFRC .set 07531h ;事件管理器中断标志寄存器C;程序存储器空间--Flash 寄存器;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;PMPC .set 0h ;Flash 段控制寄存器;CTRL .set 01h;WADDR .set 2h ;Flash 写地址寄存器;WDATA .set 3h ;Flash 写数据寄存器;TCR .set 4h;ENAB .set 5h;SETC .set 6h;I/O 存储空间FCMR .set 0FF0Fh;等待状态产生寄存器(映射到I/O 空间);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ WSGR .set 0FFFFh ;等待状态产生寄存器;数据存储器块地址;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ B0_SADDR .set 00200h ;块B0 开始地址B0_EADDR .set 002FFh ;块B0 结束地址B1_SADDR .set 00400h ;块B1 开始地址B1_EADDR .set 004FFh ;块B1 结束地址B2_SADDR .set 00060h ;块B2 开始地址B2_EADDR .set 0007Fh ;块B2 结束地址XDATA_SADDR .set 08000h ;外部数据空间开始地址XDATA_EADDR .set 0FFFFh ;外部数据空间结束地址;经常使用的数据页;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DP_B2 .set 0;页0 数据空间DP_B01 .set 4 ;页4 B0(200H/80H)DP_B02 .set 5 ;页5 B0(280H/80H)DP_B11 .set 6 ;页6 B1(300H/80H)DP_B12 .set 7 ;页7 AD(380H/80H)DP_SARAM1 .set 16 ;页1 SARAM(800h/80h)DP_SARAM2 .set 26 ;页2 SARAM(0D00h/80h)DP_SARAM3 .set 18 ;页3 SARAM(900h/80h)DP_SARAM4 .set 19 ;页4 SARAM(980h/80h)DP_PF1 .set 224 ;页1 外设帧文件(7000h/80h)(0XE0)DP_PF2 .set 225 ;页2 外设帧文件(7080h/80h)(0XE1)DP_CANCTL .set 226 ;页3 外设帧文件(7100h/80h)(0XE2)DP_PF4 .set 227 ;页4 外设帧文件(7180h/80h)(0XE3)DP_CANMBX .set 228 ;页5 外设帧文件(7200h/80h)(0XE4)DP_EVA .set 232 ;页0 事件管理器-EVA 文件(7400h/80h)(0xE8)DP_EVB .set 234 ;页0 事件管理器-EVB 文件(7500h/80h)(0xE9);位测试指令的位代码(BIT);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BIT15 .set 0000h ;位代码15BIT14 .set 0001h ;位代码14BIT13 .set 0002h ;位代码13BIT12 .set 0003h ;位代码12BIT11 .set 0004h ;位代码11BIT10 .set 0005h ;位代码10BIT9 .set 0006h ;位代码9BIT8 .set 0007h ;位代码8BIT7 .set 0008h ;位代码7BIT6 .set 0009h ;位代码6BIT5 .set 000Ah ;位代码5BIT4 .set 000Bh ;位代码4BIT3 .set 000Ch ;位代码3BIT2 .set 000Dh ;位代码2BIT1 .set 000Eh ;位代码1BIT0 .set 000Fh ;位代码0;用SBIT0 和SBIT1 宏屏蔽位;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~B15_MSK .set 8000h ;位屏蔽15B14_MSK .set 4000h ;位屏蔽14B13_MSK .set 2000h ;位屏蔽13B12_MSK .set 1000h ;位屏蔽12B11_MSK .set 0800h ;位屏蔽11B10_MSK .set 0400h ;位屏蔽10B9_MSK .set 0200h ;位屏蔽9B8_MSK .set 0100h ;位屏蔽8B7_MSK .set 0080h ;位屏蔽7B6_MSK .set 0040h ;位屏蔽6B5_MSK .set 0020h ;位屏蔽5B4_MSK .set 0010h ;位屏蔽4B3_MSK .set 0008h ;位屏蔽3B2_MSK .set 0004h ;位屏蔽2B1_MSK .set 0002h ;位屏蔽1B0_MSK .set 0001h ;位屏蔽0;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;宏定义;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~SBIT0 .macro DMA, MASK ;清位宏定义LACC DMAAND #(0FFFFh-MASK)SACL D MA.endmSBIT1 .macro DMA, MASK ;置位宏定义LACC DMAOR #(MASK)SACL D MA.endmKICK_DOG .macro ;程序监视器复位宏定义LDP #00E0h ;DP→7000h~707FhSPLK #05555h, WDKEY ;WDCNTR由下一步复位被使能SPLK #0AAAAh, WDKEY ;WDCNTR 被复位.endmDELAY_S .macro delay_value ;延时= 0.05 μs ×延时计数RPT #delay_valueNOP.endm五.结果分析在CC2000 中的操作如下:1. Project->Open ,打开该目录中的工程文件。

相关文档
最新文档