北邮电子DSP硬件报告

合集下载

北邮 DSP硬件实验报告

北邮 DSP硬件实验报告

目录第三章 (2)实验一 (2)实验二 (3)实验三 (4)实验四 (5)实验五 (9)实验六 (13)实验七 (17)第四章 (35)实验一 (35)第三章实验一.mmregs ;定义存储器映像寄存器.global _main ;全局符号,可在外部定义_main:stm #3000h,sp ;设置堆栈指针寄存器的值为3000hssbx xf ;置位状态寄存器xf=1,灯亮call delay ;调用延时子程序,延时rsbx xf ;将xf置0call delay ;调用delay函数b _main ;程序跳转到"_MAIN"nopnop;延时子程序delay:stm 270fh,ar3 ;设置辅助寄存器ar3值为9999loop1:stm 0f9h,ar4 ;设置辅助寄存器ar4值为249loop2:banz loop2,*ar4- ;寄存器ar4值减一,当其值不为0时跳转到loop2 banz loop1,*ar3- ;寄存器ar3值减一,当其值不为0时跳转到loop1 ret ;可选择延迟的返回nop ;空指令nop.end.mmregs.global _main_main:;store data 存入数据stm 1000h,ar1 ;address of internal memory 寄存器ar1地址1000hrpt #07h ;循环执行下一条指令8次st 0aaaah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H~1007H的八个存储单元中.;;read data then re-store 读取数据再存到别的寄存器中stm 7h,ar3 ; 寄存器ar3地址7hstm 1000h,ar1 ; 寄存器ar1地址1000hstm 1008h,ar2 ; 寄存器ar2地址1008hloop: ;循环的将1000H~1007H的八个单元中的数据COPY到1008H~100F的;八个存储单元中.ld *ar1+,t ;,把地址为ar1 的数据单元中的数据装到累加器t 中,ar1 = ar1 +1 st t,*ar2+banz loop,*ar3-here: ;死循环.b here.end.mmregs ;定义映像寄存器.global _main ;声明全局符号.text_main:stm 3100h,sp ;设置堆栈指针寄存器的值为3100hstm 1000h,ar1 ;设置辅助寄存器ar1值为1000hportr 8000h,*ar1 ;读入I/O 8000H数据,将其存储到数据空间的1000H nop ;NOP为空操作,起延时作用.nopportw *ar1,8001h ;将数据空间的1000H单元的数据,写出到I/O 8000H nopnop 5b _main ;程序跳转到"_MAIN"执行.nopnop.end.global _c_int00,_timer0 ;引用函数c_int00,引用了c中的函数.sect ".vecs" ;自定义一个已初始化段.vecsreset: b _c_int00 ;复位中断向量,跳转到主程序nopnopnmi: rete ;非屏蔽外部中断的输入引脚nopnopnop; software interruptssin17: .space 4*16 ;软件中断,内部中断,保留出中断向量的地址空间,将4*16的地址;存储在sin17~sin30sin18: .space 4*16sin19: .space 4*16sin20: .space 4*16sin21: .space 4*16sin22: .space 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30: .space 4*16int0: rete ;此处int0中断响应为0,设置rete响应中断并返回nopnopnopint1: rete ;此处int1中断响应为0,设置rete响应中断并返回nopnopnopint2: rete ;此处int2中断响应为0,设置rete响应中断并返回nopnopnoptint0: b _timer0 ;同步串口0(McBSP0)接受中断,直接返回nopnopbrint0: rete ;同步串口0(McBSP1)发送中断,直接返回nopnopnopbxint0: rete ;同步串口0(McBSP1)发送中断,直接返回nopnopnopdmac0: rete ;RESERVED OR DMA CHANNEL0 INTERRUPTnopnopnoptint1_dmac1: rete ;TIMER1 INTERRUPT OR DMA CHANNEL1 INTERRUPTnopnopnopint3: rete ;外部中断int3,允许中断并返回nopnopnophpint: rete ;HPI INTERRUPTnopnopnopbrint1_dmac2: rete ;McBSP1 RECEIVE INTERRUPT OR DMA CHANNEL 2 INTERRUPT nopnopnopbxint1_dmac3: rete ;McBSP1 TRANSMIT INTERRUPT OR DMA CHANNEL 3 INTERRUPT nopnopnopdmac4: rete ;DMA CHANNEL 4 INTERRUPTnopnopnopdmac5: rete ;DMA CHANNEL 5 INTERRUPTnopnopnop; ****************************结束*****************************;*************************************************************//*;* 文件名称: exp04.c;* 适用平台: EXPIII+实验系统;* CPU类型: DSP TMS320VC54X;* 软件环境: CCS3.1 (5000系列);* 试验接线: 1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54x CPU板的跳线J2的1、2短接;* (HPI 8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;;* CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);;* 试验现象: LED灯(LED1~LED8)以一定的间隔时间不停闪亮变化;;*************************************************************//************************文件预处理***************************/#include "tms320uc5402.h"/*************************************************************//********************全局变量定义与初始化*********************/ioport unsigned port8001;unsigned int show=0x00aa;unsigned int num=0x0000;/*************************************************************//*******************函数、子程序声明与定义********************/void sys_ini() //系统初始化子程序{asm(" ssbx INTM"); //全局禁止所有可屏蔽中断PMST&=0x00FF; //(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间SWWSR=0x7000; //io空间7个等待周期,程序与数据空间0个等待周期CLKMD=0x17FA; //CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间}void timer0_ini() //定时器0初始化子程序{TCR|=0x0010; //停止定时器0PRD=0x2710; //PRD=10000(D)TCR|=0x000A; //TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5msIMR=0x0008; //使能定时器0中断IFR=0xFFFF; //清除所有中断标志位asm(" rsbx INTM"); //全局使能可屏蔽中断TCR&=0xFFEF; //开始定时器0TCR|=0x0020; //复位定时起0}/*************************************************************//*****************中断服务子程序声明与定义********************/interrupt void timer0() //定时器0中断子程序{if(num==200) //记200次定时器中断,时间=200*5ms=1s{show=~show; //取反num=0;}elsenum++;return;}/*************************************************************//**************************主程序*****************************/ void main(void){sys_ini();timer0_ini();for(;;){port8001=show;}}/***************************结束******************************/实验五Initial.asm.mmregs.global _initial.text_initial:NOPLD #0, DP ;重置数据指针,为DP寄存器赋值0;DP是状态寄存器ST0 的低9 位,和7 位(数据存储器地址)构成16 位数据存储区地址STM #0, CLKMD ;设置时钟模式寄存器的值为0;可通过调整CLKMD 寄存器改变CPU 时钟。

北京邮电大学 通信原理实验报告 硬件部分

北京邮电大学 通信原理实验报告 硬件部分

北京邮电大学实验报告题目:基于TIMS通信原理实验报告班级:2009211126班专业:信息工程姓名:成绩:实验1振幅调制(AM)与解调一、实验目的(1)掌握具有离散大载波(AM)调制的基本原理;(2)掌握包络检波器的基本构成和原理;(3)掌握调幅波调制系数的意义和求法。

二、实验原理幅度调制是由DSB-SC AM信号加上一离散的大载波分量(设载波的初始相位φc=0),其表示式为s t=A c1+m t cos2πf c t式中要求基带信号波形m t≤1,使AM信号的包络A c1+m t总是正的,式中的A c cos2πf c t是载波分量A c m t cos2πf c t是DSB-SC AM信号。

定义m n t=m(t)max⁡|m(t)|,|m(t)|≤1a=max m t,|m(t)|≤1称标量因子a为调制系数或调幅系数。

有两种调制方式,调制框图如下AM 信号调制原理框图1AM 信号调制原理框图2 解调原理框图如下AM 信号解调原理框图三、实验步骤1、按如下所示的连接图连接好AM信号调制连接图AM信号解调连接图2、调节加法器上两路输入信号的放大倍数,同时用示波器监测,在保证加法器输出波形不削顶的情况下,调节至交流信号峰值与直流成分之比(即调制系数)为小于1、等于1、大于1,观察调制信号和解调信号波形图;3、观察滤波器输入输出波形的变化,分析原因。

四、实验结果音频振荡器的输出频率调整为1kHZ,直流电压幅度调整为1V。

a<1时,基带与调制信号波形如下调制与解调输出调制与解调信号调制与解调信号五、实验讨论可以看出,AM信号在调制系数a<1,a=1,a>1的情况下,分别有不同的包络形状。

当a<1或a<1时可以恢复成原信号,而在a>1的情况下产生幅度翻转的现象,无法恢复成原信号。

若用同步检波的方法,则需在接收端先进行载波提取操作,然后经过乘法器和低通滤波器,最后通过隔直流电路即可。

通信原理硬件实验报告 北邮

通信原理硬件实验报告  北邮

振幅调制与解调(AM)实验目的:1.掌握振幅调制器的基本工作原理;2.掌握调幅波调制系数的意义和求法;3.掌握包络检波器的基本构成和原理。

实验原理:1.调制原理其中m(t)为一均值为0的模拟基带信号;C(t)为一正弦载波信号;DC为一直流分量。

2.解调原理使用相干解调的方法对调制信号进行解调。

实验设备:1、AM信号调制音频振荡器(Audio Oscillator):产生一低失真,具有500Hz 到10KHz范围内频率可调的正弦波信号可变直流电压(Variable DC):可调范围DC输出(正负2.5伏可调)主振荡器(Master Signals):1. 产生100KHz载波振荡器(Carrier Oscillator)、正交正弦波输出和数字输出2. 8.3KHz 取样时钟脉冲(sampling clock)3. 2kHz正弦信号加法器(Adder):将两组模拟输入信号A(t)和B(t)相加。

乘法器(Multiplier):两组模拟信号相乘移相器(Phase Shifer):产生输入和输出之间相位改变的信号2、AM信号解调共享模块(Utilities Module):含有四种独立的功能音频放大器(Headphone Amplifier):将微弱的音频信号通过内部的放大电路将其放大,从而发出响亮的声音实验过程AM调制1.按图进行各模块的连接;2.音频振荡器输出为1khz,主振荡器为100khz,乘法器处于dc开关状态;3.调整加法器的增益G及g均为1;4.逐步增加可变直流电压,使加法器输出波形为正;5.惯出图形是否为am波形;6.调整a值,调整可变直流电压使a=0.5,1,1.5;7.观察不同a值调制与解调信号波形的变化。

AM的解调1.输入a2.用示波器观察rectifier输出波形3.用示波器观察lpf4.改变am的调幅系数a,观察包络检波器输出波形是否随之变化。

实验结果调制系数a=1原信号和AM信号原信号和解调信号a=0.8原信号和AM信号原信号和解调信号a=1.2原信号和AM信号原信号和解调信号实验分析(1)若用同步检波,如何完成实验?比较同步检波和包络检波的优缺点。

北邮 通信原理硬件实验报告

北邮 通信原理硬件实验报告

实验一:双边带抑制载波调幅(DSB-AM)一、实验目的:(1)了解DSB-SC AM信号的产生以及相干解调的原理和实现方法;(2)了解DSB-SC AM信号波形以及振幅频谱特点,并掌握其测量方法;(3)了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法;(4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。

二、实验系统框图:DSB-SC加导频的产生测量VCO压控灵敏度的框图DSB-SC加导频分量的相干解调及载波提取框图三、实验步骤:SC-DSB 信号的数学表达式为s(t)=Acm(t)cos(Wct),这个实验产生SC-DSB 的方法很简单,就是用载波跟调制信号直接相乘,其中载波是由主振荡器产生为幅度为1V,频率为100KHZ的正弦波,而调制信号由音频振荡器产生的正弦信号再经缓冲放大器组成,幅度为1V,频率为1KHZ。

1、DSB-SC AM 信号的产生1)按照图连接,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模拟载频信号分别用连接线连至乘法器的两个输出端;2)用示波器观看音频输出信号的信号波形的幅度以及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t);3)用示波器观看主振荡器输出信号的幅度以及振幅频谱;4)用示波器观看乘法器的输出波形,并注意已调信号波形的相位翻转与已调信号波形;5)测量已调信号的波形频谱,注意其振幅频谱的特点;6)调整增益G=1:将加法器的B 输出端接地,A 输入端接已调信号,用示波器观看加法器的输出波形以及振幅频谱,使加法器输入与加法器输出幅度一致;7)调整增益g;加法器A 端接已调信号,B 接导频信号。

用频谱仪观看加法器输出信号的振幅频谱,调节增益g 旋钮,使导频信号振幅频谱的幅度为已调信号的边带频谱幅度的0.8倍。

此导频信号功率为已调信号功率的0.32倍。

2、DSB-SC AM 信号的相干解调及载波提取1)锁相环的调试1 单独测量VCO的性能将VCO 模板前面板的频率开关拨到HI 载波频段的位置,VCO 的Vin 输入端暂不接信号。

北邮信号与信息处理DSP实验二

北邮信号与信息处理DSP实验二

北邮信号与信息处理DSP实验二信号与信息综合处理实验报告学院:班级:姓名:学号:实验二 FFT 实现1. 实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT 的过程。

2. 实验原理2.1FFT 变换(1) FFT 算法:[]122()()(/2)0,1,...,1()()(/2)N n Nx n x n x n N n x n x n x n N W =++⎧⎪=-⎨=-+⎪⎩,/2111/20/2122/20()(2)()()(21)()N nr N n N nr N n X k X r x n W X k X r x n W -=-=⎧==⎪⎪⎨⎪=+=⎪⎩∑∑(2) 蝶形运算图:(3) 实现函数:DSP_fft(w, N, x, y)。

2.2IFFT变换(1)算法实现:(2)实现流程:2.3SDRAM(1)EMIFA_Config:在csl_emifa.h中声明了一个结构体EMIFA_Config,用来配置EMIFA。

结构体中声明的12个32位无符号整形变量为EMIFA总线的12个接口寄存器;(2)指定SDRAM数据空间:#pragmaDATA_SECTION(sdram_data,".off_ram");unsigned int sdram_data[0x10000];上述代码含义为定义一个全局变量sdram_data[0x10000],将它指定到自定义的数据空间段off_ram中,其中函数具体用法为#pragma DATA_SECTION(函数名或全局变量名,"用户自定义在数据空间的段名";(3)CMD文件:DSP系统中存在大量的存储器,CMD文件描述物理存储器的管理、分配和使用情况,用于DSP 代码的定位。

3.程序功能3.1FFT变换通过给定的旋转因子,利用DSP_fft (w, N, x, y ) 函数,对给定64点序列进行FFT变换,其中N 为变换点数,具体说明如下:(1)w[64]为64点FFT的旋转因子,由tw_fft16x16.exe生成;(2)x[128]内存放原序列,即输入时域信号的实部虚部按顺序排列;(3)y[128]内存放FFT变换后的序列,实部虚部按顺序排列;(4)m[64]内存放FFT变换后64点模值的平方。

北邮 数字信号处理硬件实验实验报告

北邮 数字信号处理硬件实验实验报告

数字信号处理硬件实验实验报告学院:电子工程学院一、5416常规实验(一)实验一常用指令实验1.代码及注释2.代码实现过程首先,为堆栈分配地址,然后输出端口置为1,灯亮,延时,累加器对此累加,如此循环。

(二)实验二数据存储实验1.代码及注释2.代码实现过程首先设定辅助寄存器ar1的地址,然后将数据存储到ar1中,每次完成操作后ar1指向下一地址,重复8次后结束。

3.相关截图(1)查看内存单元,将之修改为“0x0000”(2)run后,内存单元全部变成了“0xAAAA”3)查看CPU Registers单元(三)实验三I/O实验1.代码及注释2.代码实现过程开始后,读入I/O数据,写出I/O数据,结束。

3.实验结果图拨动开关前拨动开关后(四)实验四定时器实验1.代码及注释exp04.c2.代码实现过程开始后,系统初始化,计时器初始化。

随后输出端口赋值,LED灯开始闪烁。

定时器中断,跳到C程序中断子函数,依次计数,判断是否达到设定的时间,若达到,灯亮灭状态相反,若没有,继续亮灭,并且再次判断。

直到达到设定时间后,重新计数,定时器中断,跳到C程序中断子函数,依次计数,如此反复。

3.实验结果图交替闪烁:(五)实验五INT2中断实验1.代码及注释int2.cPORT.ASMVECTORS.ASMINITIAL.ASM2. 代码实现过程开始后,系统初始化,并中断子程序,八个LED灯在S5的控制下亮灭。

3.实验结果图反复按S5键,灯亮灭变化(六)实验六A/D转换实验1.代码及注释2.代码实现过程开始后,系统初始化并中断子程序。

将采样数据存入数组,并读取出来。

3.相关截图断点处停止A/D转化后的数据波形变化频率调节幅度调节观察memory点击animate,数据变成红色(七)实验七D/A转换实验1.代码及注释DA7303.C/*;***********************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息 --------------- ;*;* 文件名称 : DA7303.C;* 文件功能 : 该文件为测试AD7303的测试程序,CPU=TMS320VC5402LF2407;* 接口说明: CS = SPISTE(IOPC5)-- 配置成IO模式CLK = SPICLK -- 配置成SPI模式DATA = SPIMOSI -- 配置成SPI模式;*-------------------------------------------- 最新版本信息 ------------;* 文件作者 : 迟利刚;* 创建日期 : 2005/01/19;* 版本声明 : v1.0.0;*-----------------------------------------------------------------------//------------------头文件--------------------------------------/*******************************************************************/#include "lf2407.h"#include "math.h"/*******************************************************************///----------------------------------------------------------// --------------- 宏定义 ---------------------------------///----------------------------------------------------------#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0#define pi 3.1415926#define LEN 1024//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/************************************************************************************** 所使用的函数原型 ****************************************************************************************/void cpu_init(void); //初始化CPUvoid xint1_init(void); //外部中断1初始化子程序void iopc_init(void); //初始化IOPC设置寄存器void spi_init(void); //初始化SPI设置寄存器interrupt void PHANTOM(void); //伪中断程序interrupt void int1(void); //中断1中断子程序void delay_3us(void); //3us延迟void Delay(UINT16 numbers); //长延迟//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(){asm(" nop ");asm(" nop ");asm(" nop ");asm(" setc INTM"); //禁止所有中断 ST0.9=INTMasm(" clrc SXM"); //抑制符号位扩展asm(" clrc OVM"); //累加器中结果正常溢出asm(" clrc CNF"); //配置 B0为数据储存器/*** Configure the System Control and Status registers ***/* SCSR1=0x00FD; //配置时钟锁相为4倍频CLKOUT=4*10MHZ=40MHZ,MAX CPU freq/*bit 15 0: reservedbit 14 0: CLKOUT = CPUCLKbit 13-12 00: IDLE1 selected for low-power mode when execute IDLE instructionbit 11-9 000: PLL x1 modebit 8 0: reservedbit 7 1: 1 = enable ADC module clockbit 6 1: 1 = enable SCI module clockbit 5 1: 1 = enable SPI module clockbit 4 1: 1 = enable CAN module clockbit 3 1: 1 = enable EVB module clockbit 2 1: 1 = enable EVA module clockbit 1 0: reservedbit 0 1: clear the ILLADR bit*/*SCSR2 = (*SCSR2 | 0x000B) & 0x000F;/*bit 15-7 0's: reservedbit 6 0: Input Qualifier Clocks=5 clockbit 5 0: D'ont write this bit.allows user to disable WD through the WDDIS bit in the WDCR.bit 4 0: XMIF_HI-Z, 0=normal mode, 1=Hi-Z'dbit 3 1: disable the boot ROM, enable the FLASHbit 2 no change MP/MC* bit reflects state of MP/MC* pin bit 1-0 11: 11 = SARAM mapped to prog and data*//*** Disable the watchdog timer ***/* WDCR=0x00EF; //禁止看门狗/*bits 15-8 0's: reservedbit 7 1: clear WD flagbit 6 1: disable the dogbit 5-3 101: must be written as 101bit 2-0 111: WDCLK divider = 64 WDCLK= CLKOUT/512*//*** Setup external memory interface for LF2407 ***/WSGR = 0x001F;/*bit 15-11 0's: reservedbit 10-9 00: bus visibility offbit 8-6 111: 7 wait-state for I/O spacebit 5-3 111: 7 wait-state for data spacebit 2-0 111: 7 wait state for program space*//*** Setup shared I/O pins ***/*MCRA = 0x0000; /* group A pins *//*bit 15 0: 0=IOPB7, 1=TCLKINAbit 14 0: 0=IOPB6, 1=TDIRAbit 13 0: 0=IOPB5, 1=T2PWM/T2CMPbit 12 0: 0=IOPB4, 1=T1PWM/T1CMPbit 11 0: 0=IOPB3, 1=PWM6bit 10 0: 0=IOPB2, 1=PWM5bit 9 0: 0=IOPB1, 1=PWM4bit 8 0: 0=IOPB0, 1=PWM3bit 7 0: 0=IOPA7, 1=PWM2bit 6 0: 0=IOPA6, 1=PWM1bit 5 0: 0=IOPA5, 1=CAP3bit 4 0: 0=IOPA4, 1=CAP2/QEP2bit 3 0: 0=IOPA3, 1=CAP1/QEP1bit 2 0: 0=IOPA2, 1=XINT1bit 1 0: 0=IOPA1, 1=SCIRXDbit 0 0: 0=IOPA0, 1=SCITXD*/*MCRB = 0xFE03; /* group B pins *//*bit 15 1: 0=reserved, 1=TMS2 (always write as 1) bit 14 1: 0=reserved, 1=TMS (always write as 1) bit 13 1: 0=reserved, 1=TD0 (always write as 1) bit 12 1: 0=reserved, 1=TDI (always write as 1) bit 11 1: 0=reserved, 1=TCK (always write as 1) bit 10 1: 0=reserved, 1=EMU1 (always write as 1) bit 9 1: 0=reserved, 1=EMU0 (always write as 1) bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*MCRC = 0x0001; /* group C pins *//*bit 15 0: reservedbit 14 0: 0=IOPF6, 1=IOPF6bit 13 0: 0=IOPF5, 1=TCLKINBbit 12 0: 0=IOPF4, 1=TDIRBbit 11 0: 0=IOPF3, 1=T4PWM/T4CMPbit 10 0: 0=IOPF2, 1=T3PWM/T3CMPbit 9 0: 0=IOPF1, 1=CAP6bit 8 0: 0=IOPF0, 1=CAP5/QEP4bit 7 0: 0=IOPE7, 1=CAP4/QEP3bit 6 0: 0=IOPE6, 1=PWM12bit 5 0: 0=IOPE5, 1=PWM11bit 4 0: 0=IOPE4, 1=PWM10bit 3 0: 0=IOPE3, 1=PWM9bit 2 0: 0=IOPE2, 1=PWM8bit 1 0: 0=IOPE1, 1=PWM7bit 0 1: 0=IOPE0, 1=CLKOUT*//*** Configure IOPA pin as an INPUT ***/*PADATDIR = *PADATDIR & 0x00FF;/*** Configure IOPB pin as an INPUT ***/*PBDATDIR = *PBDATDIR & 0x00FF;/*** Configure IOPC pin as an INPUT ***/*PCDATDIR = *PCDATDIR & 0x00FF;/*** Configure IOPD pin as an INPUT ***/*PDDATDIR = *PDDATDIR & 0xFEFF;/*** Configure IOPE pin as an INPUT ***/*PEDATDIR = *PEDATDIR & 0x00FF;/*** Configure IOPF pin as an INPUT ***/*PFDATDIR = *PFDATDIR & 0x7FFF;/*** Setup timers 1 and 2, and the PWM configuration ***/*T1CON = 0x0000; /* disable timer 1 */*T2CON = 0x0000; /* disable timer 2 */*GPTCONA = 0x0000; /* configure GPTCONA */*GPTCONB = 0x0000; /* configure GPTCONB *//*bit 15 0: reservedbit 14 0: T2STAT, read-onlybit 13 0: T1STAT, read-onlybit 12-11 00: reservedbit 10-9 00: T2TOADC, 00 = no timerX event starts ADCbit 8-7 00: T1TOADC, 00 = no timerX event starts ADCbit 6 0: TCOMPOE, 0 = Hi-z all timer compare outputs bit 5-4 00: reservedbit 3-2 00: TXPIN, 00 = forced lowbit 1-0 00: TXPIN, 00 = forced low*/* IMR=0x0000;/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/* IFR=0xFFFF; //清除所有中断标志,"写1清0"}//--------------------------------------------------------------------// 函数名称 : void xint1_init(void)// 函数说明 : 初始化XINT1// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void xint1_init() //外部中断1初始化子程序{* IMR=0x0001; //使能int1中断 --SPI Peripheral Interrupt Vector 0005h //when SPI INT IS high-priority mode/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/asm(" clrc INTM"); //开总中断}//--------------------------------------------------------------------// 函数名称 : void iopc_init(void)// 函数说明 : 初始化IOPC设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void iopc_init(){// *MCRB = *MCRB | 0x003C; // 配置SPISTE为IO,SPICLK、SPISOMI、SPISIMO为SPI口 *MCRB = *MCRB | 0x001C;/*bit 15 1: 0=reserved, 1=TMS2 (always write as 1)bit 14 1: 0=reserved, 1=TMS (always write as 1)bit 13 1: 0=reserved, 1=TD0 (always write as 1)bit 12 1: 0=reserved, 1=TDI (always write as 1)bit 11 1: 0=reserved, 1=TCK (always write as 1)bit 10 1: 0=reserved, 1=EMU1 (always write as 1)bit 9 1: 0=reserved, 1=EMU0 (always write as 1)bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*PCDATDIR = *PCDATDIR | 0x2020; /*** ConfigureSPISTE as an OUTPUT ***//****output high ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*/}//--------------------------------------------------------------------// 函数名称 : void spi_init(void)// 函数说明 : 初始化SPI设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void spi_init(){* SPICCR = * SPICCR & 0xFF7F; //复位SPI/*bit 7 0: reset SPI*/* SPICCR = 0x004f;/*bit 15-8 0: reservedbit 7 0: reset SPIbit 6 1: Data is output on falling edge and input on rising edge bit 5-4 0: reservedbit 3-0 1: Character Length 16bit*/* SPICTL = 0x000e;/*bit 15-5 0: reservedbit 4 0: Disable RECEIVER OVERRUN Flag bitbit 3 1: SPICLK signal delayed by one half-cycle;bit 2 1: SPI configured as a master.bit 1 1: Enables transmissionbit 0 0: Disables interrupt*/* SPIBRR = 0x0003;/*bit 15-7 0: reservedbit 6-0 3: 10MHZ Baud-Rate*/* SPIPRI = 0x0000;/*bit 15-7 0: reservedbit 6 0: Interrupts are high-priority requestsbit 5-4 0: Immediate stop on suspendbit 3-0 0: Reserved.*/* SPICCR=* SPICCR | 0x0080; //启动spi工作/*bit 7 1: start SPI}//-------------------------------------------------------------------- // 函数名称 : void int1(void)// 函数说明 : 中断1的子程序// 输入参数 : 无// 输出参数 : 无//-------------------------------------------------------------------- interrupt void int1() //中断1中断子程序{UINT16 temp;temp = *PVIR;* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<40000;i++);for(j=0;j<numbers;j++);}/************************************************************- 函数名称 : interrupt void PHANTOM(void)- 函数说明 : 伪中断子程序- 输入参数 : 无- 输出参数 : 无*********************************************************** */interrupt void PHANTOM(void){* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************* ****************** 主函数 ******************************************************************************* */void main(){UINT16 temp,i;//----------系统初始化-------------------------------asm(" nop ");cpu_init(); //初始化CPUasm(" nop ");iopc_init(); //初始化IOPE设置寄存器asm(" nop ");xint1_init(); //外部中断1初始化子程序asm(" nop ");spi_init(); //初始化SPI设置寄存器asm(" nop ");//----------产生正弦波的数据------------------------for(i=0; i<LEN;i++){data_buff[i] = 127 + (int)(127.0*sin(2*pi*i/(LEN-1)));data_buff[i] = data_buff[i] & 0x00ff;}asm(" nop ");//---------发送给AD7303-----------------------------for(;;){for(i=0; i<LEN;i++){*PCDATDIR = *PCDATDIR & 0xffdf; /*** ConfigureSPISTE as an OUTPUT ***//****output low ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*///----------------------------------------------------------------* SPITXBUF = data_buff[i] & 0x00ff; //发送控制字、数据给AD7303//AD7303的控制字高8位// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 0 0 0 0 0 0 0 0//内部参考电压源,DAC-A、B DAC-A、B工作//----------------------------------------------------------------while((* SPISTS & 0x0040) == 0x0); //判断 SPISTS.6(SPI Interrupt Flag) //等于 1 ,说明SPITXBUF中数据发送完 //可以写入数据//等于0,不能再写入数据*PCDATDIR = *PCDATDIR | 0x0020; /*** ConfigureSPISTE as an an OUTPUT ***/ temp = *SPIRXBUF; // 读接收缓冲寄存器,清除SPI Interrupt Flagdelay_3us(); //延迟等待DA转换结束/****output high ******************/}} //----------- 等待SPI中断----------------------------------------while(1){port8001 = show;}}DA7303_54.c/*************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*************************************************************//*;* 文件名称 : da7303_54.c;* 适用平台 : EXPIII+实验系统;* CPU类型 : DSP TMS320VC54X;* 软件环境 : CCS3.1 (5000系列);* 试验接线 : 1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54x CPU板的跳线J2的1、2短接;* (HPI 8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;;* CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);;* 试验现象 : 用示波器检测D/A转换单元的2号孔接口"输出1"输出一个正弦波;;*************************************************************///------------------头文件--------------------------------------#include "DspRegDefine.h" //VC5402 寄存器定义#include "math.h"//---------------------------------------------------------------/* ****************** 宏定义 ****************************************************************************/#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0#define pi 3.1415926#define LEN 256//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/*********************************************************************** *************** 所使用的函数原型 *************************************************************************************** */void cpu_init(void); //初始化CPUvoid Delay(UINT16 numbers); //延迟extern void delay_3us(void); //3us延迟void mcbsp0_write_rdy(UINT16 out_data);//MCBSP0发送一个数据void mcbsp0_init_SPI(void);//MCBSP0设置为SPI模式void mcbsp0_close(void);//MCBSP0关闭//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(void){asm(" nop ");asm(" nop ");asm(" nop ");//-------------------------------------------------------------------//CLKMD DEFINITIONS:// PLLMUL (bit 15-12) - 0000 PLL multiplier = 0 (mult by 1)// PLLDIV (bit 11) - 0 PLL divider = 0 (div by 1)// PLLCOUNT (bit 10-3)- 11111111 PLL counter set to max// PLLONOFF (bit 2) - 1 PLL on// PLLNDIV (bit 1) - 1 Select PLL mode// PLLSTATUS (bit 1) - x PLL Status (read only)// ------------------// 0000011111111111 = 0x07ff CLKMD=1 X CLKIN//--------------------------------------------------------------------*(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkinwhile(((*(unsigned int*)CLKMD)&01)!=0);*(unsigned int*)CLKMD=0x37ff; //switch to PLL X 4 mode//--------------------------------------------------------------------// ST0 DEFINITIONS:// ARP (bit 15-13) - 000 Auxiliary register pointer// TC (bit 12) - 1 Test/control flag// C (bit 11) - 1 Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the// result of a subtraction generates a borrow.// OVA (bit 10) - 0 Overflow flag for accumulator A// OVB (bit 9) - 0 Overflow flag for accumulator B// DP (bit 8-0) - 00000000 Data-memory page pointer// --------------------// 0001 1000 0000 0000 =0x1800 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST0=0x1800;//--------------------------------------------------------------------// ST1 DEFINITIONS:// BRAF (bit 15) - 0 Block-repeat active flag// CPL (bit 14) - 1 Compiler mode CPL=0 DP;CPL=1 SP// XF (bit 13) - 1 XF status// HM (bit 12) - 0 Hold mode// INTM (bit 11) - 1 Interrupt mode INTM=0,All unmasked interrupts are enabled// Reser (bit 10) - 0 Always read as 0// OVM (bit 9) - 0 Overflow mode// SXM (bit 8) - 1 Sign-extension mode// C16 (bit 7) - 0 Dual 16-Bit/double-precision arithmetic mode// FRCT (bit 6) - 0 Fractional mode// CMPT (bit 5) - 0 Compatibility mode// ASM (bit 4-0) - 00000 Accumulator shift mode// --------------------// 0110 1001 0000 0000 =0x2900 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST1=0x6900;//--------------------------------------------------------------------//IPTR DEFINITIONS?// IPTR (bit 15-7) - 001111111 Run-time Interrupt vector location = 0x3f80 (for now)// MP/~MC (bit 6) - 1 Turn off internal Instruction ROM (use RAM)// OVLY (bit 5) - 1 Turn on internal RAM// AVIS (bit 4) - 1 Address visibility on// DROM (bit 3) - 0 Data ROM of FF00~FFFF is external// CLKOFF (bit 2) - 0 Clockout enabled,only for use clkout=cpu clock// SMUL (bit 1) - 1 Saturate before multiply on MAC// SST (bit 0) - 0 Do not saturate before store// -----------------// 0011 1111 1111 0010 = 0x3ff2/*---------------------------------------------------------------------*/*(unsigned int*)PMST=0x3FF2;//---------------------------------------------------------------------// SWWSR DEFINITIONS?// XPA (bit 15) - 0 Extended program address control bit. XPA is used in conjunctionwith the program space fields// (bits 0 through 5) to select the address range for program spacewait states// I/O (bits 14-12) - 111 set to max wait states for seven// Data1 (bits 11-9) - 111 Seven Wait state for Upper data space(0x8000-0xFFFF)// Data2 (bits 8-6) - 111 Seven Wait states for Lower data space (0x0000 - 0x7FFF)// Prog1 (bits 5-3) - 111 Seven Wait state for Upper program space. (xx8000-xxFFFF)// Prog2 (bits 2-0) - 111 Seven Wait states for Program space. (xx0000-xx7FFF)// -----------------// 1 111 111 111 111 111 - 0x7fff/*--------------------------------------------------------------------*/*(unsigned int*)SWWSR=0x7fff;//--------------------------------------------------------------------//SWCR DEFINITIONS?// Reserved (bits 15-1)// SWSM (bit 0) - 1 wait-state base values are mulitplied by 2// for a maximum of 14 wait states.// --------------------------// 0000 0000 0000 0001//--------------------------------------------------------------------*(unsigned int*)SWCR=0x0001;//--------------------------------------------------------------------//BSCR DEFINITIONS?// BNKCMP (bit 15-12) - 1111 Bank compare. Determines the external memory-bank size. BNKCMP is used to maskthe four MSBs of// an address.// 1111 4k// 1110 8k// 1100 16k// 1000 32k// 0000 64k// PS-DS (bit 11) - 1 One extra cycle is inserted between consecutive data and program reads. // Reserved (bits 10-3) - 00000000// HBH (bit 2) - 0 The hpi bus holder is disabled// BH (bit 1) - 0 The data bus holder is disabled// EXIO (bit 0) - 0 The external bus interface functions as usual// ------------------------------------// 1111 1000 0000 0000//--------------------------------------------------------------------*(unsigned int*)BSCR=0xf800;//--------------------------------------------------------------------asm(" ssbx intm "); //Disable all mask interrupts//--------------------------------------------------------------------// IMR DEFINITIONS// Writing a 1 to any IMR bit position enables the corresponding interrupt (when INTM = 0)// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 0 DMA channel 5 interrupt mask bit// DMAC4 (bit 12) - 0 DMA channel 4 interrupt mask bit// BXINT1/DMAC3 (bit 11) - 0 McBSP1 transmit interrupt mask bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 0 McBSP1 receive interrupt mask bit, or the DMA channel 2// HPINT (bit 9) - 0 Host to ’54x interrup /mask// INT3 (bit 8) - 0 External interrupt 3 mask// TINT1/DMAC1 (bit 7) - 0 timer1 interrupt mask bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 0 reserved, or the DMA channel 0 interrupt mask bit// BXINT0 (bit 5) - 0 McBSP0 transmit interrupt mask bit// BRINT0 (bit 4) - 0 McBSP0 receive interrupt mask bit// TINT0 (bit 3) - 0 Timer 0 interrupt mask bit// INT2 (bit 2) - 0 External interrupt 2 mask bit// INT1 (bit 1) - 0 External interrupt 1 mask bit// INT0 (bit 0) - 0 External interrupt 0 mask bit// ------------------------------// 0000 0000 0000 0000//--------------------------------------------------------------------*(unsigned int*)IMR=0x0;//--------------------------------------------------------------------// IFR DEFINITIONS// Writing a 1 to any IFR bit position clear the corresponding interrupt mask ,when corresponding interrupt occur IFR corresponding bit=1// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 1 DMA channel 5 interrupt flag bit// DMAC4 (bit 12) - 1 DMA channel 4 interrupt flag bit// BXINT1/DMAC3 (bit 11) - 1 McBSP1 transmit interrupt flag bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 1 McBSP1 receive interrupt flag bit, or the DMA channel 2// HPINT (bit 9) - 1 Host to ’54x interrutpflak// INT3 (bit 8) - 1 External interrupt 3 flag// TINT1/DMAC1 (bit 7) - 1 timer1 interrupt flag bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 1 reserved, or the DMA channel 0 interrupt flag bit// BXINT0 (bit 5) - 1 McBSP0 transmit interrupt flag bit// BRINT0 (bit 4) - 1 McBSP0 receive interrupt flag bit// TINT0 (bit 3) - 1 Timer 0 interrupt flag bit// INT2 (bit 2) - 1 External interrupt 2 flag bit// INT1 (bit 1) - 1 External interrupt 1 flag bit// INT0 (bit 0) - 1 External interrupt 0 flag bit// ------------------------------// 1111 1111 1111 1111/*--------------------------------------------------------------------*/ *(unsigned int*)IFR=0xffff;//--------------------------------------------------------------------asm(" nop ");asm(" nop ");asm(" nop ");}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<4000;i++)for(j=0;j<numbers;j++);}/************************************************************************** - 函数名称 : void mcbsp0_write_rdy(UINT16 out_data);- 函数说明 : MCBSP0发送一个数据- 输入参数 : data- 输出参数 : 无- 补充说明 : 内部带是否发送完成的判断************************************************************************** */void mcbsp0_write_rdy(UINT16 out_data){UINT16 j;*(unsigned int*)McBSP0_SPSA=0x0001; //McBSP0_SPSA 指向 SPCR2while ((*(unsigned int *)McBSP0_SPSD&0x0002)==0);//mask XRDY bit,XRDY = 1 Transmitter is ready for new data in DXR[1,2].for(j=0;j<20;j++); //delay*(unsigned int *)McBSP0_DXR1= out_data;}/**************************************************************************- 函数名称 : void mcbsp0_init_SPI(void);- 函数说明 : MCBSP0设置为SPI模式- 输入参数 : 无- 输出参数 : 无- 补充说明 :***************************************************************************/void mcbsp0_init_SPI(void){//--------------------------------------------------------//复位 McBSP0*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(RRST=0)*(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(XRST=0)//---------------------------------------------------------//延迟Delay(0); //延迟 4000*CPU 时钟周期//等待复位稳定//--------------------------------------------------------- //配置 McBSP0为 SPI 模式*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x1800;//DLB (bit 15) 0 Digital loop back mode disabled//RJUST (bit 14-13) 00 Right-justify and zero-fill MSBs in DRR[1,2] //CLKSTP (bit 12-11) 11//X (bit 10-8) 000 Reserved//DXENA (bit 7) 0 data transmit delay bit.DX enabler is off//ABIS (bit 6) 0 A-bis mode is disabled//RINTM (bit 5-4) 00 RINT driven by RRDY。

DSP实验报告(4)(精)

DSP实验报告(4)(精)

汕头大学实验报告学院: 工学院系: 电子系专业: 电子信息工程年级: 2008 姓名: 张虎学号: 08141078 实验时间: 2011-4-6实验二(一)实验目的1、了解DSP 结构;2、熟悉CCS 开发环境;3、熟悉DSP 54X EVM板的硬件环境;4、掌握DSP 54X 汇编寻址方式;5、熟悉汇编语言的逻辑和算术运算;6、了解DSP 54X中断原理及中断向量表的建立;7、了解LED 显示原理;8、掌握DSP 54X I/0寻址方式。

(二)实验原理1、DSP 54X的寻址方式,指令的寻址方式是指:当硬件执行指令时,寻找指令所指定的参与运算的操作数的方法; 2、DSP 54X的算术指令和逻辑运算指令; 3、DSP 54X的中断系统。

(三)实验内容与基本要求1、汇编寻址方式:(1) DSP 54X汇编初始化程序;(2) DSP 54X各种汇编寻址方式的源程序;(3) DSP 54X 汇编语言的逻辑和算术运算源程序。

要求:运行程序,通过CCS —>View—>CPU Registers, 观察各寄存器的值,通过CCS —>View—>Memory, 观察片内各数据地址的值。

2、I/O寻址及硬件中断实验:(1) DSP初始化;(2)中断寄存器初始化;(EINT1)(3)中断向量表;(4)外部中断1服务程序;(5)信号灯控制程序。

要求:通过I/O总线输出信号灯控制信号,由外部中断模拟急救车到达。

正常情况下,东西,南北信号灯红绿黄交替变换,有急救车到达(有按键产生外部中断)东西、南北信号灯全变红,以便急救车通过,通过后,东西,南北信号灯恢复急救车到来前的状态。

(四)实验程序框图寻址方式:主程序1 初始化程序逻辑运算实验框图:主程序2 初始化程序I/O寻址及硬件中断实验框图:(五)问题实验二:汇编程序寻址方式实验1.寻址实验:解释每一个语句。

并总结实验过程中出现的问题,分析其原因。

DSP实验报告 (6)

DSP实验报告 (6)

汕 头 大 学 实 验 报 告学院: 工学院系: 电子系专业: 电子信息工程年级: 2008姓名: 张虎学号: 08141078 实验时间: 2011-4-13实验三(1) 实验目的1.熟悉CCS开发环境;2.熟悉DSP 54X EVM板的硬件环境;3.了解DSP 54X定时器工作原理;4.了解DSP 54X中断原理及中断向量表建立;5.了解数码LED显示原理(动态扫描);6.掌握键盘扫描原理;7.掌握DSP 54X I/O寻址方式;8.掌握长整型数的运算;9.掌握中断优先级设置;10 掌握全局变量、局部变量的概念。

11.了解A/D 芯片TLV2544原理;(详见附录)12.了解D/A 芯片TLV5638原理;(详见附录)13.了解DSP McBSP串口原理;14.掌握DSPMcBSP串口作I/O设置;15.掌握DSP 54X I/O寻址方式;16.掌握长型浮点数概念。

(2) 实验原理1、定时器及中断实验用行扫描法,读取键值;定时器进行不断地刷新LED的显示;使用外部中断来实现功能的切换(正计数,倒计数,复位)。

2、 AD/DA实验采用DSP McBSP串口原理设置,TLV2544ID为I/O模式,位操作控制。

构建SPI协议进行传输。

(3) 实验内容与基本要求1、定时器及中断实验(1)实验内容1.DSP初始化;2.定时器0初始化;3.中断寄存器初始化;4.中断向量表;5.定时器中断服务程序(LED扫描驱动程序);6.键盘扫描驱动程序;7. 外部中断1中断服务程序;(2)基本要求通过定时器启动中断,在中断服务程序中扫描数码LED显示,由扫描键盘得到不同的键值,根据不同的键值完成正计数、倒计数、停止、复位等功能。

外部中断可终止计数。

2、A/D-D/A 实验(1)实验内容1.DSP初始化;2.LCD初始化;3.LCD显示驱动;4.A/D 芯片TLV2544初始化;5.D/A 芯片TLV5638初始化;6.DSP McBSP串口2初始化为I/O模式;7.按A/D、D/A芯片时序,用DSP构建SPI协议;(2)基本要求设置串口2为I/O模式,用DSP构建SPI协议:输入直流信号,启动A/D采样,将采样数据显示在LCD上,比较采样数据与计算值应一致;(在EVM板上有3个按键,可分别产生0.8V,1.2V,1.6V直流电压),并修改原来程序,使扩展到可以在CCS观看波形。

dsp硬件实验报告68365

dsp硬件实验报告68365

DSP 硬件课程实验报告学院:电子工程学院班级: 2009211204 姓名:***学号: ******** 班内序号: 14实验一:常用指令实验 一:实验要求1、4、5、7 指令实验---要求看懂2、3、6 指令实验---边做边进行源程序指令的详细注释二:实验步骤及内容2、直接寻址方式下的数据存取:源程序地址存的 16进制数反汇编程序主寄存器注释CPL=0 A=#1234h DP=#04hB=@20 @22=AA=A+#9AhDP=#09h @25=A A=#1234hDP=#8 @38h=A @3AH=#365hCPL=1 SP=#1C00h@5Fh=#0ACDChF6BE F020 1234 EA041114 8016F000 9A EA09 8019 F020 1234EA08 8038 763A 365 F7BE7718 1C00 765FABCDstartST[1,14]=0A=#1234h <<0DP=#4 B=@OX14 @OX16=AA=A+#0X9A DP=#9 @OX19=A A=#1234h <<0 DP=#8 @OX38=A @OX3A=#0X365ST[1,14]=1 Mmr[@0X18]=#0X1C00@0X5F=#0XACDCA=000001234DP=4 B=OX216地址内的值 内存窗口内OX216地址显示语句@22=A 结果A=0000012CE=1234+9A DP=9A=000001234 DP=8 CPL=1SP=1BFF(SP 指针自动减1,1C00-1=1BFF)将ST1状态寄存器的14位置0, 设置有效地址为DP:dma 。

寄存器a 载入立即数1234HDP 是ST0的(8-0)位。

DP=4的9位2进制数是000000100。

dma=20=14H ;DP :dma=04H :14H=000000100 0010100=>214H ;在内存窗口内OX214地址显示语句B=@20的结果。

北邮通原硬件实验报告材料

北邮通原硬件实验报告材料

信息与通信工程学院通信原理硬件实验报告指导教师:实验日期:实验一双边带抑制载波调幅(DSB-SC AM)一、实验目的1) 了解DSB-SC AM信号的产生及相干解调的原理和实现方法。

2) 了解DSB-SC AM的信号波形及振幅频谱的特点,并掌握其测量方法。

3) 了解在发送DSB-SC AM信号加导频分量的条件下,收端用锁相环提取载波的原理及实现方法。

4) 掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波调试方法。

二、实验内容及步骤1. DSB-SC AM 信号的产生1) 按照指导书图示,连接实验模块。

2) 示波器观察音频振荡器输出调制信号m(t),调整频率10kHz03) 示波器观察主振荡器输出信号波形和频率;观察乘法器输出,注意相位翻转。

4) 测量已调信号的振幅频谱,调整加法器的G和g,使导频信号的振幅频谱的幅度为已调信号的编带频谱幅度的0.8倍。

2、DSB-SC AM 信号的相干解调及载波提取1) 调试锁相环a) 单独测试VCO的性能 Vin暂不接输入,调节f0旋钮,改变中心频率,频率范围约为 70~130kHz。

V in接直流电压,调节中心频率100kHz-2~2V变化,观察VCO 线性工作范围;由GAIN调节VCO灵敏度,使直流电压变化正负1V时VCO频偏为10kHzb) 单独测试相乘和低通滤波工作是否正常。

锁相环开环,LPF输出接示波器。

两VCO经过混频之后由LPF输出,输出信号为差拍信号。

c) 测试同步带和捕捉带:锁相环闭环,输出接示波器,直流耦合。

将信号源VCO的频率f0调节到比100kHz小很多的频率,使锁相环失锁,输出为交变波形。

调节信号源VCO频率缓慢升高,当波形由交流变直流时说明VCO锁定,记录频率f2=96.8kHz,继续升高频率,当直流突变为交流时再次失锁,记录频率 f4=115.6kHz。

缓慢降低输入VCO频率,记录同步时频率f3=106.9kHz和再次失锁时频率f1=90.7kHz。

北邮dsp实验报告

北邮dsp实验报告

北邮dsp实验报告北邮DSP实验报告一、引言数字信号处理(Digital Signal Processing,简称DSP)是一门研究如何对数字信号进行分析、处理和合成的学科。

作为一门重要的电子信息科学与技术专业的实验课程,北邮DSP实验旨在让学生通过实践掌握DSP的基本理论和实际应用。

本实验报告将对北邮DSP实验进行详细介绍和总结。

二、实验目的北邮DSP实验的主要目的是让学生通过实际操作,深入理解数字信号处理的基本概念和方法,并掌握DSP实验的基本流程和技巧。

具体目标包括:1. 熟悉DSP实验平台的硬件结构和软件环境;2. 掌握数字信号的采样、量化和编码方法;3. 学习常见的数字滤波器设计和实现方法;4. 理解信号频谱分析和频域滤波的原理和应用;5. 实现音频信号的处理和效果增强。

三、实验内容北邮DSP实验主要包括以下内容:1. DSP实验平台的介绍:包括硬件结构和软件环境的说明,学生需要了解DSP实验平台的基本构成和使用方法。

2. 数字信号的采样与重构:学生需要通过实际操作,了解采样定理的原理和应用,以及数字信号的重构方法。

3. 数字信号的量化与编码:学生需要学习数字信号的量化误差和编码方法,并通过实验验证量化误差的影响。

4. FIR数字滤波器设计与实现:学生需要学习FIR滤波器的设计原理和方法,并通过实验实现低通、高通和带通滤波器。

5. IIR数字滤波器设计与实现:学生需要学习IIR滤波器的设计原理和方法,并通过实验实现巴特沃斯和切比雪夫滤波器。

6. 音频信号的处理与效果增强:学生需要学习音频信号的基本特性和处理方法,包括均衡器、混响器和压缩器等效果器的实现。

四、实验过程北邮DSP实验的具体过程如下:1. 实验准备:学生需要提前熟悉实验平台的硬件结构和软件环境,并准备好实验所需的音频信号和滤波器设计参数。

2. 实验操作:学生按照实验指导书的步骤进行实验操作,包括采样与重构、量化与编码、滤波器设计与实现等。

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)信息与通信工程学院信号与信息处理综合实验报告(DSP部分)班级:姓名:学号:序号:日期:信号与信息处理综合实验报告实验二 FFT实现一、实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT的过程。

二、程序功能1、基本功能本程序的基本要求是:将FFT结果写入SDRAM后,并读取出来。

2、拓展功能(1)其他点数的FFT;(2)FFT后再进行IFFT,验证是否与原数据一致。

三、程序基本信息(一)、程序模块描述:1、FFT程序(实现基本功能):(1)FFT部分:1?主函数(main):初始化输入序列、旋转因子、FFT点数,负责其它功能函数的调用,并完成一些基本操作。

2?void DSP_radix2(int n, short *restrict xy, const short *restrict w):完成FFT运算(基2频域抽选)。

参数说明:n是输入序列的长度,short xy是输入序列(复数),const short w为旋转因子。

3? void bitrev_index(short *index, int n):计算得到重新排序表,n 为序列长度。

4? void DSP_bitrev_cplx(int *x, short *index, int nx):根据bitrev_index计算的排序表,把FFT输出的复数序列x重新排序为自然顺序。

DSP_bitrev_cplx:(2)SDRAM配置与写入部分:主函数(main):负责其它功能的调用,执行SDRAM写入、读取和检测,并点亮对应的LED。

EMIFA_config(&MyEmifaConfig):实现对EMIFA总线的12个接口寄存器的配置。

具体配置信息在MyEmifaConfig结构体中。

第1页信号与信息处理综合实验报告 #pragmaDATA_SECTION(sdram_data,".off_ram");数据段定义,定义要写入的数据位置,需要在CMD文件中建立对应的section。

北邮通信原理硬件实验报告

北邮通信原理硬件实验报告

信息与通信工程学院通信原理硬件实验班级:201221序号:20姓名:张心琪同组人:吴添目录实验一:双边带抑制载波调幅(DSB-SC AM) (4)一、实验目的 (4)二、实验原理 (4)三、实验框图 (6)四、实验步骤 (7)五、实验结果与分析 (9)DSB-SC信号的产生 (9)DSB-SC信号的相干解调及载波提取 (12)六、思考题 (15)七、问题及解决方法 (17)实验二:具有离散大载波的双边带调幅(AM) (17)一、实验目的 (17)二、实验原理 (17)三、实验框图 (18)四、实验步骤 (19)五、实验结果与分析 (20)六、思考题 (24)七、问题及解决方法 (25)实验三:调频(FM) (25)一、实验目的 (25)二、实验原理 (25)四、实验步骤 (27)五、实验结果与分析 (29)六、思考题 (31)七、问题及解决方法 (32)实验六:眼图 (33)一、实验目的 (33)二、实验原理 (33)三、实验框图 (34)四、实验步骤 (34)五、实验结果与分析 (35)六、问题及解决方法 (35)实验七:采样、判决 (36)一、实验目的 (36)二、实验原理 (36)三、实验框图 (36)四、实验步骤 (38)五、实验结果与分析 (38)六、思考题 (39)七、问题及解决方法 (39)实验八:二进制通断键控(OOK) (40)一、实验目的 (40)三、实验框图 (41)四、实验步骤 (42)五、实验结果与分析 (42)六、思考题 (48)七、问题及解决方法 (48)实验十二:低通信号的采样与重建 (48)一、实验目的 (48)二、实验原理 (49)三、实验框图 (50)四、实验步骤 (50)五、实验结果与分析 (50)六、思考题 (53)七、问题及解决方法 (54)实验一:双边带抑制载波调幅(DSB-SC AM )一、实验目的1、了解DSB-SC AM 信号的产生以及相干解调的原理和实现方法。

北邮 DSP 实验一

北邮 DSP 实验一

6.1
使用printf语句输出 。
6.2
首先初始化板子初始函数以及LED及DIP,然后设置while循环,在循环之中读取CPLD寄存器的八比特数值。若检测到数值为0XE0,即表示只有DIP0按下,则设置CPLD寄存器八比特数值为0XEF,即表示四盏灯全亮,延迟一段时间之后,设置CPLD寄存器八比特数值为0XE0,即表示四盏灯全灭,并延迟相同时间;否则设置CPLD寄存器八比特数值为0XE0,即表示四盏灯全灭。
3)跑马灯顺序亮灭
只按下DIP1并如上图所示设置断点,单步运行后查看寄存器的值,低八位的值为D1,与所赋的值相同,此时第一盏灯亮,如下图所示:
4)跑马灯加速亮灭
同时按下DIP1及DIP2并如上图所示设置断点,单步运行后查看寄存器的值,低八位的值为90,与所赋的值相同,此时四盏灯全灭,如下图所示:
九.
十.心得体会
总体来说第一次DSP实验比较简单,主要是学习DSP芯片的基本知识,熟悉DSK开发板以及Code Composer Studio v5集成开发环境,掌握利用CPLD的USER_REG寄存器配置LED和DIP开关的方法,了解程序优化的原理和基本操作。感觉编程能力方面要求不高,在原来的编程基础上需要掌握DSK6416相关函数、LED相关函数和4DIP开关相关函数的使用就可以。除了在熟悉软件和开发板上遇到了一些问题以外,实验的其他方面进行得非常顺利,在基本功能实现后我们很快就完成了其他扩展功能,比如实现了LED全亮全灭,跑马灯及变速等功能。另外根据实验课件教程,我们进行了多次的断点调试,使用软件更加熟练,为之后的实验做充足的准备。
DSK6416_waitusec(delay1);
}
else
{
DSK6416_rset(DSK6416_USER_REG,0XE0);

DSP实验报告完美版

DSP实验报告完美版

DSP实验报告班级:学号:姓名:指导教师:实验一、二 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实验报告模版-实用word文档 (20页)

【最新】DSP实验报告模版-实用word文档 (20页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==DSP实验报告模版我们做的DSP实验是实验一,实验二,实验三!模板上只有1 3 !2要自己仿照实验一写!不要弄错了!实验题目在另外一个共享表格里!实验一数据存储实验一、实验目的1. 掌握CCS的使用2. 掌握 TMS320C54X 程序空间的分配;3. 掌握 TMS320C54X 数据空间的分配;4. 能够熟练运用TMS320C54X 数据空间的指令。

二、实验设备计算机,CCS 3.1版软件,DSP仿真器,E300实验箱,DSP-54XP CPU板。

三、实验步骤与内容1. 在进行 DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:2. E300 底板的开关SW4 的第1位置ON,其余位置OFF。

其余开关设置为OFF。

SW5全部置ON;其余开关不做设置要求3. 上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接存在问题。

4. 运行CCS程序1) 待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电 2) 启动CCS3.1,进入CCS界面后,点击“Debug—Connect”3) 此时仿真器上的“绿色指示灯”应点亮,CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,这时需掉电检查仿真器的连接、JTAG 接口连接是否正确,或检查CCS相关设置是否存在问题。

5. 成功运行CCS 程序后,首先应熟悉CCS的用户界面;6. 学会在CCS环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。

7. 用“Project\open”打开“C:\ti5000\myprojects\01_mem\ mem.pjt”.编译并装载“\ 01_mem\Debug\mem.out”8.用“Edit”下拉菜单中的“Memory/Fill”编辑内存单元,参数设置如下图:单击“OK”此时以0x1000 为起始地址的16个内存单元被修改成:0x00099.用“View”下拉菜单“Memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH 单元的数值变化,输入地址0x1000H;单击“OK”如下图所示:10. 点击“Debug\Go main”进入主程序,在程序中“加软件断点1”和“加软件断点2”处施加软件断点。

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

DSP硬件课程实验报告学院:电子工程学院班级: 2011211203学号: 2011210876姓名:孙月鹏班内序号: 04实验一:常规指令实验一、 实验目的1.熟悉DSP 开发系统的连接2.了解DSP 开发系统的组成和结构和应用系统构成3.熟悉常用C54X 系列指令的用法(程序寻址,寄存器,I/O 口,定时器,中断控制)。

二、 实验设备计算机,CCS 2.0版软件,DSP 仿真器,实验箱。

三、 实验操作方法1、系统连接进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP 开发系统与计算机连接有问题。

2、运行CCS 程序先实验箱上电,然后启动CCS ,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。

四、代码注释与实验结果1)简单指令程序运行实验①代码及注释.mmregs ;定义储存器映像寄存器.global _main ;全局符号_main:stm #3000h,sp ;3000h 放入堆栈指针寄存器的首地址中 ssbx xf ;将对外接口XF 置1,此时灯亮call delay ;调用延时子程序,延时rsbx xf ;将XF 置0,call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nop ;无任何操作nop;延时子程序delay:PCI/USB/EPP 接口 JTAG 接口 计 算 机 仿 真 器 用户 开发板;2*16*16*16+7*16*16+15=9999loop1: ;循环1stm 0f9h,ar4 ;将ar4的值赋为15*16+9=249loop2: ;循环2banz loop2,*ar4- ;指针地址每次减1,ar4不为0时重复执行loop2 banz loop1,*ar3- ;同上ret ;可选择延迟的返回nop ;无操作nop②程序运行原理:此程序为灯闪烁程序。

通过令XF分别为1、0来实现灯的亮灭,通过调用延时程序控制交替闪烁的间隔时间。

在延时程序中,一共执行了10000*250=2500000次循环,用时0.25秒。

2)资料存储实验①代码及注释.mmregs ;定义储存器映像寄存器.global _main ;全局符号_main:;存储数据stm 1000h,ar1 ;将1000h赋给ar1rpt #07h ;循环执行下句语句7次st 0aaaah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H~1007H;的八个存储单元中.ar1的值每次加1;读取并重新存储数据stm 7h,ar3 ;将7h赋给ar3,作为循环计数stm 1000h,ar1 ;将1000h赋给ar1stm 1008h,ar2 ;将1008h赋给ar2;COPY到1008H~100F的八个存储单元中.ld *ar1+,t ;把地址数为ar1的值的存储单元中的值赋给t,;ar1的值每次加1st t,*ar2+ ;把t中的值赋给地址数为ar2中值得存储单元banz loop,*ar3- ;当ar3不为0时循环执行,ar3每次-1here: ;死循环.b here.end②程序运行过程第一步,将oaaaah存入1000h--1007h中。

利用ar1存储的值自加实现地址的移动第二部,将1000h-1007h存储的值提取出来,赋给1008h-100Fh中。

其中ar1初始值为1000h,每次循环自加,从1000h到1007h,为提取地址的移动。

ar2初始值为1008h,每次加1,直至100Fh,为赋值地址的移动。

ar3控制循环。

3)I/O实验①代码及注释.mmregs ;定义储存器映像寄存器.global_main ;全局符号.text ;已初始化可执行代码段_main:stm 3100h,sp ;将堆栈指针储存器的首地址指向3100h单元stm 1000h,ar1 ;将ar1的值赋为1000hportr 8000h,*ar1 ;读入I/O 8000H数据,将其存储到数据空间的1000H;即读出按键操作nop ;NOP为空操作,起延时作用.nopportw *ar1,8001h ;将数据空间的1000H单元的数据,写出到I/O 8000H;即控制灯的亮灭nopnopb _main ;程序跳转到"_MAIN"执行.nopnop将输入控制按键的信号从输入端口读出并储存,再将值传递给输出端口控制等的亮灭4)定时器实验①代码及注释c程序/************************文件预处理***************************/#include "tms320uc5402.h" //数字信号处理器头文件/********************全局变量定义与初始化*********************/ioport unsigned port8001; //IO空间地址声明unsigned int show=0x00aa;unsigned int num=0x0000;/*******************函数、子程序声明与定义********************/void sys_ini() //系统初始化子程序{asm(" ssbx INTM"); //全局禁止所有可屏蔽中断中断模式位INTM=1PMST&=0x00FF; //(DRAM映射到程序空间和数据空间)向量表映射到0x0080//空间PMST:状态寄存器15-7位表示向量指针// 复位为1FFhSWWSR=0x7000; //io空间7个等待周期(15-12位),程序与数据空间0个等待周期//等待状态寄存器CLKMD=0x17FA; //CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间//pll模式开启且锁相环等待时间为最大(3-10位)//系数为PLLMUL(15-12位) 1+1=2//CLKMD 时钟模式寄存器}void timer0_ini() //定时器0初始化子程序{TCR|=0x0010; //停止定时器0 TCR:定时器控制寄存器//TSS(4)=1,计数器停止工作PRD=0x2710; //定时器周期寄存器PRD=10000(D)2*16^3+7*16^2+1*16=10000TCR|=0x000A; //除数比率TDDR(3-0)=10(D),//定时器时钟=1/(20M/10/10000)=5msIMR=0x0008; //使能定时器0中断即允许中断(第2位——int2)IFR=0xFFFF; //清除所有中断标志位asm(" rsbx INTM"); //全局使能可屏蔽中断INTM:中断模式位//rsbx置1TCR&=0xFFEF; //开始定时器0 TSS(4)=0TCR|=0x0020; //复位定时起0 TRB(5)=1复位PRD等重新加载}/*************************************************************//*****************中断服务子程序声明与定义********************/interrupt void timer0() //定时器0中断子程序{if(num==200) //记200次定时器中断,时间=200*5ms=1s{show=~show; //取反num=0;}elsenum++;return;}/*************************************************************//**************************主程序*****************************/void main(void){sys_ini();timer0_ini();for(;;){port8001=show; ;端口收到数据,灯亮}}中断向量表.global _c_int00,_timer0 ;c程序入口,调用时钟中断子程序.sect ".vecs" ;自定义一个初始化段reset: b _c_int00 ;软件复位,进入main程序nopnopnmi: rete ;不可屏蔽的中断返回并允许中断(可选择中断)nopnopnop; software interruptssin17: .space 4*16sin18: .space 4*16sin19: .space 4*16sin20: .space 4*16sin21: .space 4*16sin22: .space 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30: .space 4*16int0: rete ;EXTERNAL INT0nopnopnopint1: rete ;EXTERNAL INT1nopnopnopint2: rete ;外部中断INT1 INT2 INT0nopnopnoptint0: b _timer0 ;时钟中断nopnopbrint0: rete ;多路缓冲串行口接收中断nopnopbxint0: rete ;多路缓冲串行口发送中断nopnopnopdmac0: rete ;接收或者直接内存存取通道1的中断0nopnopnoptint1_dmac1: rete ;定时器中断或者直接内存存取通道1中断1nopnopnopint3: rete ;外部中断INT 3nopnopnophpint: rete ;HPI 接口中断nopnopnopbrint1_dmac2: rete ;多通道缓冲串行口接收中断或者直接内存存取通道2中断nopnopnopbxint1_dmac3: rete ;多通道缓冲串行口发送中断或者直接内存存取通道3中断nopnopnopdmac4: rete ;直接内存存取中断通道3中断nopnopnopdmac5: rete ;直接内存存取中断通道4中断nopnopnop②程序运行过程初始化,CPU运行,扫描中断向量表,调用中断函数。

相关文档
最新文档