DSP计数器 DSP定时器 计数器原理及设计举例

合集下载

定时器

定时器

单片机应用技术
一、定时方法概述
定时方法 硬件延时 软件延时 可编程定时 由硬件电路实现延时,长时间延时; 通过执行循环而获得延时,短时间延时; 通过对系统时钟脉冲的计数而获得延时。
二、定时器/计数器的结构和工作原理
1、结构
定时器T1 定时器
计数溢出 置标志位
定时器T0 定时器
设置T0工 设置T0工 作方式 启动/ 启动/停 止T0工作 T0工作
四、定时器/计数器工作方式 定时器 计数器工作方式
注意:定时计数器的计数范围与初值X 注意:定时计数器的计数范围与初值X的计算
1、定时器的计数规律: 、定时器的计数规律: T0从某初值X,对脉冲计数到1111111111111B(213D=8192D)溢出 计数个数:213-X 2、最大计数范围:从初值X=0D,计数到1111111111111B(213D) 、最大计数范围: 3、定时时间: 、定时时间: 计数个数为213-0=8192D
1 (2 − x) × ×12 = 250×10−6 6×106
13
X=8067D=1F83H=0001 1111 1000 0011B 故 TH0= 1 1111 100高8位=FCH 100高 TL0=0000 0011B低5位=03H 0011B低
单片机应用技术
(3) 编写程序。采用查询TF0的状态来控制P1.0输出 编写程序。采用查询TF0的状态来控制P1.0输出 MOV TMOD,#00H TMOD, ;置T0为方式0 ;置T0为方式0 MOV TH0,#0FCH TH0, ;送计数初值 MOV TL0,#03H TL0, SETB TR0 ;启动T0 ;启动T0 LOOP: LOOP: JBC TF0, NEXT TF0, ;查询定时时间到否? ;查询定时时间到否? SJMP LOOP NEXT: NEXT: CLR TF0 ; 对溢出标志位清0 对溢出标志位清0 MOV TH0,#0FCH ;重赋计数初值 TH0, MOV TL0,#03H TL0, CPL P1.0 ;输出取反 SJMP LOOP ; 重复循环 采用查询方式的程序很简单,但在定时器整个计数过程中,CPU要不断查询 采用查询方式的程序很简单,但在定时器整个计数过程中,CPU要不断查询 溢出时标志TF0的状态, 这就占用了CPU工作时间,以致CPU的效率不高。采用 溢出时标志TF0的状态, 这就占用了CPU工作时间,以致CPU的效率不高。采用 定时溢出中断方式,可以提高CPU的效率。 定时溢出中断方式,可以提高CPU的效率。

定时计数器的结构与工作原理

定时计数器的结构与工作原理

定时器方式寄存器TMOD (不能按位寻址)
注意 TMOD只能以字节方式进行初始化
T1
T0
定时器方式寄存器TMOD (不能按位寻址)
振荡器
Tx端 TRx位 GATE位 01 INTx端
12 C/T=0
C/T=1
10
1&
≥1 与门
或门
计数器
控制=1 开关接通
TFx
申请 中断
GATE门控位: Timer可由软件与硬件两者控制 ▼ GATE = 0 ——普通用法
单片机的定时/计数器 -定时/计数器的结构与工作原理
秒表计时器
家用定时器ຫໍສະໝຸດ 智能计数器智能排插 计时器
定时/计数器的结构
▼ 2个16位计数器T0 (TH0、TL0)和T1 (TH1、TL1)——加1计数器 ▼ 8位特殊功能寄存器TMOD——选择定时/计数器的工作模式和工作方式 ▼ 8位特殊功能寄存器TCON ——控制定时器的启动与停止 ▼ 2个外部引脚T0(P3.4)和T1(P3.5)——接入外部计数脉冲
Timer的启/停由软件对TRx位写“1”/“0”控制
▼ GATE = 1 ——门控用法 (很少用到) Timer的启/停由软件对TRx位写“1”/“0” 和在INTx引脚上出现的信号的高/低共同控制
小 结
▼定时/计数器的内部结构与工作原理 ▼定时器控制寄存器TCON ▼定时器方式寄存器TMOD
D7
D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
▼ TFx: T0/T1计数溢出标志位。
=1 计数溢出; =0 计数未满 TFx标志位可用于申请中断或供CPU查询。
在进入中断服务程序时会自动清零; 但在查询方式时必须软件清零。

DSP原理及应用第二章DSP的硬件结构总结(精)

DSP原理及应用第二章DSP的硬件结构总结(精)

第2章DSP的硬件结构DSP的硬件结构:DSP与标准微处理器有许多共同的地方,都是由CPU、存储器、总线、外设、接口、时钟组成。

从广义上讲,可以说DSP是一种CPU。

但DSP和一般的CPU 又有不同, DSP有自己的一些独特的特点,比如采用哈佛结构、流水线操作、独立的硬件乘法器、独立的DMA总线和控制器等。

Von Neuman结构与Harvard结构:Harvard结构:程序与数据存储空间分开,各有独立的地址总线和数据总线,取指和读数可以同时进行,从而提高速度,目前的水平已达到90亿次浮点运算/秒(9000MFLOPS)。

MIPS--Million Instruction Per SecondMFLOPS--Million Floating Operation Per Second流水操作(pipeline):独立的硬件乘法器:在卷积、数字滤波、FFT、相关、矩阵运算等算法中,都有A(kB(n-k一类的运算,大量重复乘法和累加。

通用计算机的乘法用软件实现,用若干个机器周期。

DSP有硬件乘法器,用MAC指令(取数、乘法、累加)在单周期内完成。

独立的DMA总线和控制器:有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作,数据的传递和处理可以独立进行,DMA内部总线与系统总线完全分开,避开了总线使用上的瓶颈。

在不影响CPU工作的条件下,DMA速度已达800Mbyte/s。

CPU:通用微处理器的CPU由ALU和CU组成,其算术运算和逻辑运算通过软件来实现,如加法需要10个机器周期,乘法是一系列的移位和加法,需要数十个机器周期。

DSP的CPU设置硬件乘法器,可以在单周期内完成乘法和累加.移位:通用微处理器的移位,每调用一次移位指令移动1-bitDSP可以在一个机器周期内左移或右移多个bit,可以用来对数字定标,使之放大或缩小,以保证精度和防止溢出;还可以用来作定点数和浮点数之间的转换.溢出:通用CPU中,溢出发生后,设置溢出标志,不带符号位时回绕,带符号位时反相,带来很大的误差DSP把移位输出的最高位(MSB)存放在一个位检测状态寄存器中,检测到MSB=1时,就通知下一次会发生溢出,可以采取措施防止.数据地址发生器(DAG):在通用CPU中,数据地址的产生和数据的处理都由ALU来完成在DSP中,设置了专门的数据地址发生器(实际上是专门的ALU),来产生所需要的数据地址,节省公共ALU的时间.外设(peripherals):时钟发生器(振荡器与PLL)定时器(Timer)软件可编程等待状态发生器通用I/O同步串口(SSP)与异步串口(ASP)JTAG扫描逻辑电路(IEEE 1149.1标准便于对DSP作片上的在线仿真和多DSP条件下的调试’C54x的内部结构:中央处理器CPU 、内部总线控制、特殊功能寄存器、数据存储器RAM 、程序存储器ROM、I/O功能扩展接口、串行口、、主机通信接口HPI、定时系统、中断系统。

定时-计数器编程实例

定时-计数器编程实例
#include "reg51.h" sbit P1_0=P1^0; unsigned char i; void main (void) { TMOD=0x01;
void TIMER0_ISR (void) interrupt 1
{ TH0=(65536-250)/256; TL0=(65536- 250)%256; i++; if(i < = 3) { P1_0=1; } if(I = = 4) { P1_0=0; i=0; }
定时/计数器编程实例
数码管显示实验 “实现数值0~65535的变化显 示” 问题:如何使数值变化的速 度减慢?(如每隔1秒数值 加1)
方法一? 方法二?
定时/计数器
void main(void) { unsigned char i,j; unsigned int uiTemp = 0; while(1) { convert(uiTemp); for(i=0;i<6;i++) { P2=LED_seg[i]; //送段码 P0=LED_bit[i]; //送位码 delay1ms(5); //5ms延迟 } j ++; if ( j == 33 ) //约1秒 { uiTemp++; j = 0; } } }
长定时的实现
思路:定时间隔为1秒,使用T0无法直接得到1秒 的定时。因此,需要使用多次定时复合的方法来得 到较长时间的定时。
方法二 仅使用一个定时/计数器实现
使用方法一时需要使用两个定时器和两个IO引脚,资源消 耗比较多。如何使用较少的资源实现同样的定时功能?
#include < reg51.h> void main( ) sbit WAVE = P1^7; { unsigned char glucCounter; WAVE = 0; void Timer0( ) interrupt 1 using 1 TMOD = 0x01; 100ms定时 { TH0 = (65536 – 50000) / 256; TH0 = (65536 – 50000) / 256; TL0 = (65536 – 50000) % 256; TL0 = (65536 – 50000) % 256; EA = 1; glucCounter ++ ; ET0 = 1; if ( glucCounter == 10 ) TR0 = 1; 定义一个全局 glucCounter = 0; { 变量,实现计 WAVE = ! WAVE; while(1) { ; } 数功能。 glucCounter = 0; } } }

DSP工作原理

DSP工作原理

DSP工作原理DSP(数字信号处理器)是一种专门用于数字信号处理的微处理器,它具有高性能、高速度和灵活性的特点。

DSP工作原理是指DSP芯片在处理数字信号时所采取的基本工作方式和原理。

DSP工作原理主要包括以下几个方面:1. 数据输入与输出:DSP芯片通过输入端口接收来自外部的数字信号,并通过输出端口输出处理后的数字信号。

输入和输出的数据可以是各种形式的数字信号,如音频、视频、图像等。

2. 数据存储与处理:DSP芯片内部包含了大量的存储单元,用于存储输入数据、中间结果和输出数据。

同时,DSP芯片还配备了强大的算术逻辑单元(ALU),用于对输入数据进行各种算术和逻辑运算,如加法、减法、乘法、除法、滤波、变换等。

3. 指令执行与控制:DSP芯片通过内部控制单元执行存储在其内部存储器中的指令,从而控制数据的处理过程。

指令可以是各种形式的算法和处理程序,用于实现不同的数字信号处理功能。

DSP芯片通常支持多种指令集,如乘累加指令、乘法指令、移位指令等,以满足不同应用的需求。

4. 时钟与时序控制:DSP芯片内部的各个功能模块需要按照一定的时序进行工作,因此需要一个稳定的时钟信号来驱动。

时钟信号可以是外部提供的,也可以是芯片内部产生的。

时钟信号的频率决定了DSP芯片的工作速度,通常以兆赫兹(MHz)为单位。

5. 数据通路与总线:DSP芯片内部的各个功能模块之间通过数据通路和总线进行数据的传输和交换。

数据通路是一种物理连接,用于传输数据和控制信号,而总线是一种逻辑连接,用于协调各个功能模块之间的数据传输和交换。

通过以上的工作原理,DSP芯片能够高效地处理各种数字信号,广泛应用于音频、视频、通信、图像处理等领域。

它具有处理速度快、功耗低、体积小、成本低等优点,能够满足不同应用的需求。

例如,在音频处理领域,DSP芯片可以实现音频信号的滤波、均衡、混响、压缩等处理,以提高音质和音量控制;在图像处理领域,DSP芯片可以实现图像的增强、去噪、压缩、识别等处理,以提高图像的质量和分辨率。

定时器工作原理

定时器工作原理
定时器0,定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。
图定时器/计数器结构框图
TL0、TL1、TH0、TH1的访问地址依次为8AH~8DH,每个寄存器均可单独访问。定时器0或定时器1用作计数器时,对芯片引脚T0()或T1()上输入的脉冲计数,每输入一个脉冲,加法计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值确定时,时间也随之确定。
定时器工作原理
定时器工作原理
通电延时型。只要在定时的时间段内(即1分钟)定时器一直得电,则常开触电就会闭合,只要定时器不断电常开触电就会一直闭合。定时器断电则常开触电断开
1,定时器/计数器的结构与功能
主要介绍定时器0(T0)和定时器1(T1)的结构与功能。图是定时器/计数器的结构框图。由图可知,定时器/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。
1
0
3
自动再装入8位计数器
1
1
4
定时器0:分成两个8位计数器定时器1:停止计数
【例】设置定时器1工作于方式1,定时工作方式与外部中断无关,则M1=0,M0=1,GATE=0,因此,高4位应为0001;定时器0未用,低4位可随意置数,但低两位不可为11(因方式3时,定时器1停止计数),一般将其设为0000。因此,指令形式为:
定时器/计数器1
定时器/计数器0
位序
D7
D6
D5
D4
D3
D2
D1
D0
位标志
GATE
C/
M1
M0
GATE
C/
M1
M0
其中,低4位用于T0,高4位用于T1的。

第5章定时计数器 (2)

第5章定时计数器 (2)

5.4 8XX51定时/计数器的应用程序设计
5.4.3 应用编程举例 例1 如图所示,
P1中接有八个发光二极管, 编程使八个管轮流点亮,每 个管亮100ms,设晶振为 6MHz。 分析利用T1完成100ms的定时、 当P1口线输出“1”时,发光二 极管亮,每隔100ms”1”左移一 次,采用定时方式1,先计算计 数初值: MC=2μs 100ms/2μs =50000=C350H C =10000H-C350H=3CB0H
★若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器
TH0和 TL0 。
★TL0可工作为定时方式或计数方式。占用原T0的各控制位、引脚和 中断源。即C/T、GATE、TR0、TF0和T0 (P3.4)引脚、INT0 (P3.2) 引脚。 TH0只可用作定时功能,占用定时器T1的控制位TR1和T1的中断标 志位TF1,其启动和关闭仅受TRl的控制。
ORG 0000H
AJMP
AJMP
MAIN
;T0中断服务程序入口 ;主程序开始 ;T0定时100ms IP0
ORG 000BH ORG 0030H MAIN:CLR P1.7
MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H
SETB
SETB
ET0
EA
5.4 8XX51定时/计数器的应用程序设计
本章介绍的主要内容
★ ★

定时计数器结构和工作原理 定时计数器的控制寄存器
定时计数器的应用编程
5· 1 8XX51定时/计数器结构和工作原理
★51系列单片机片内有两个十六位定时/计数器:定时器0(T0) 和定时器1(T1)。 ★两个定时器都有定时或事件计数的功能,可用于定时控制、 延时、对外部事件计数和检测等场合。 ★定时/计数器实际上是16位加1计数器。 T0由2个8位持殊功能寄存器TH0和TL0构成, T1由2个8位持殊功能寄存器TH1和TL1构成。 ★每个定时器都可由软件设置为定时工作方式或 计数工作方式。

DSP芯片原理及应用

DSP芯片原理及应用

《DSP芯片原理及应用》实验指导书唐山学院信息工程系DSP实验室2008年9月前言一.DSP原理及应用实验的任务数字信号处理实验是数字信号处理理论课程的一部分,它的任务是:1.通过实验进一步了解和掌握数字信号处理的基本理论及算法、数字信号处理的分析方法和设计方法。

2.学习和掌握数字信号处理的仿真和实现技术。

3.提高应用计算机的能力及水平。

二.实验设备DSP原理及应用实验所使用的设备由计算机、CPU板、语音单元、开关量输入输出单元、液晶显示单元、键盘单元、信号扩展单元、CPLD模块单元、模拟信号源、直流电源单元等组成。

其中计算机是CCS软件的运行环境,是程序编辑和调试的重要工具。

语音单元是语音输入和输出模块,主要完成语音信号的采集和回放。

开关量输入输出单元可以对DSP输入或输出开关量。

液晶显示单元可以对运行结果进行文字和图形的显示。

模拟信号源可以产生频率和幅度可调的正弦波、方波、三角波。

直流电源单元可以提供 3.3V、+5V、-12V和+12V 的直流电源。

装有CCS软件计算机与整个实验系统共同构成整个的DSP软、硬件开发环境。

所有的DSP芯片硬件的实验都是在这套实验装置上完成的。

三.对参加实验学生的要求1.阅读实验指导书,复习与实验有关的理论知识,明确实验目的。

2.按实验指导书要求进行程序设计。

3.在实验中注意观察,记录有关数据和图像,并由指导教师复查后才能结束实验。

4.实验后应断电,整理实验台,恢复到实验前的情况。

5.认真写实验报告,按规定格式做出图表、曲线、并分析实验结果。

字迹要清楚,画曲线要用坐标纸,结论要明确。

爱护实验设备,遵守实验室纪律。

目录第一章DSP原理及应用实验 (3)实验一常用指令实验 (3)实验二数据存储实验 (5)实验三I/O实验 (7)实验四定时器实验 (9)实验五外部中断实验 (11)实验六语音采集回放 (14)实验七语音信号的FFT分析 (18)实验八基于语音信号的IIR算法实验 (20)实验九语音信号的FIR算法实验 (23)第二章DSP CPU挂箱介绍 (26)第一节系统概述 (26)第二节54XB开发模板概述 (26)第一章DSP原理及应用实验实验一常用指令实验一.实验目的1.了解DSP开发系统的组成和结构;2.熟悉DSP开发系统的连接;3.熟悉DSP的开发界面,熟悉CCS的用户界面,学会CCS环境下程序编写、调试、编译、装载,学习如何使用观察窗口。

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

DSP 定时器/计数器原理及设计举例1、定时器结构定时器的组成框图如图1所示。

它有3个16位存储器映像寄存器:TIM 、PRD 和TCR 。

这3个寄存器在数据存储器中的地址及其说明如表1所示。

定时器控制寄存器(TCR )位结构如图2所示,各控制位和状态位的功能如表2所示。

(说明:图中包括,一个16位的主计数器(TIM)和一个4位预定标计数器(PSC)。

TIM 从周期寄存器PRD 加载,PSC 从周期寄存器TDDR 加载。

) 1.1典型操作顺序:(1) 在每个CLKOUT 脉冲后PSC 减1,直到它变为0。

(2) 在下一个CLKOUT 周期,TDDR 加载新的除计数值到PSC ,并使TIM 减1。

(3) 以同样方式,PSC 和TIM 连续进行减操作,直到TIM 减为0。

(4) 下一个CLKOUT 周期,将定时器中断信号(TINT)送到CPU ,同时又用另一脉冲送到TOUT 引脚,把新定时器计数值从PRD 加载到TIM ,并使PSC 再次减1。

因此,定时器中断的速率为1.2定时器编程(1)TIM :定时器中的当前值。

(2)PRD :正常情况,当TIM 减到0后,PRD 中的时间常数自动地加载到TIM 。

系统复位( =1)或定时器复位(TRB=1)时,PRD 中的时间常数重新加载到TIM 。

(3)控制寄存器(TCR)包含的控制位有下列功能: ①控制定时器模式;②指定定时器预先定标计数器的当前计数值; ③重新加载定时器; ④启动、停止定时器; ⑤定义定时器的分频系数。

图1 定时器组成框图TINT 速率=)()(频率1PRD 1TDDR CLKOUT +⨯+(说明:TDDR(Timer Divide-Down Ratio):复位时,TDDR 各位清零;PSC(Timer Prescaler Counter):PSC 可被TCR 读取,但不能直接写入) 1.3定时器初始化步骤:(1) 将TCR 中的TSS 位(停止状态位)置1,关闭定时器。

STM #0010H ,TCR (2) 加载PRD 。

STM #0100H ,PRD ;(3) 重新加载TCR(使TDDR 初始化;令TSS 位为0,以接通CLKOUT ;重新加载位TRB 位置1,以表1 定时器的三个寄存器Timer0地址 Timer1地址 寄存器 说明0024H 0030H TIM 定时器寄存器,每计数一次自动减1 0025H 0031H PRD 定时器周期寄存器,当TIM 减为0后,CPU 自动将PRD 的值装入TIM 0026H0032HTCR定时器控制寄存器,包含定时器的控制和状态位15~12 11 10 9~6 5 4 3~0 保留softfreePSCTRBTSSTDDR图2 TCR 位结构图表2 定时器控制寄存器(TCR )的功能使TIM减到0后重新加载PRD),启动定时器。

STM #0C20H,TCR;Soft=1,Free=1,定时器遇到断点后继续进行TINT周期 =CLKOUT×(TDDR+1)×(PRD+1)2、时钟发生器时钟发生器:内部振荡器和锁相环电路PLL。

由内部振荡电路或外部时钟源驱动。

2.1 硬件配置PLL用于C541、C542、C543、C545和C546芯片。

所谓硬件配置PLL,就是通过C54x的3个引脚CLKMD1、CLKMD2和CLKMD3的状态,选定时钟方式,如表8-3所示。

由表8-3可见,不用PLL时,CPU的时钟频率等于晶体振荡器频率或外部时钟频率的一半;若用PLL,CPU的时钟频率等于晶体振荡器频率或外部时钟频率乘以系数N(PLL N),使用PLL可以使用比CPU时钟低的外部时钟信号,以减少高速开关时钟所造成的高频噪声。

表3 时钟方式的配置2.2 软件可编程PLL软件可编程PLL 具有高度的灵活性,其时钟定标器提供各种时钟乘法器系数,并能直接接通和关断PLL 。

PLL 的锁定定时器可以用于延迟转换PLL 的时钟方式,直到锁定为止。

通过软件编程,可以选用以下两种时钟方式(如表8-4 ~ 8-6、图8-3所示)。

PLL 方式,其比例系数共31种。

靠锁相环电路完成。

分频(DIV )方式,其比例系数为1/2和1/4,在此方式下,片内PLL 电路不工作以降低功耗。

表4 复位时的时钟方式(C5402)CLKMD 1CLKMD 2CLKMD 3CLKMD 寄存器 时钟方式0 0 0 E007H 乘15,内部振荡器工作,PLL 工作 0 0 1 9007H 乘10,内部振荡器工作,PLL 工作0 1 0 4007H 乘5,内部振荡器工作,PLL 工作 1 0 0 1007H 乘2,内部振荡器工作,PLL 工作 1 1 0 F007H 乘1,内部振荡器工作,PLL 工作 1 1 1 0000H 乘1/2,内部振荡器工作,PLL 不工作 1 0 1 F000H 乘1/4,内部振荡器工作,PLL 不工作 011¡­保留表8-5 时钟方式寄存器CLKMD 各位域功能表8-6 比例系数与CLKMD的关系PLLN DIV PLLDⅣPLLMUL比例系数0 X 0~14 0.50 X 15 0.251 0 0~14 PLLMUL+11 0 15 11 1 0或偶数(PLLMUL+1)÷2 1 1 奇数PLLMUL÷4图3 PLL锁定时间和CLKOUT频率的关系3、中断系统3.1中断结构3.1.1中断类型:硬件中断: 外部硬件中断和内部硬件中断软件中断: 由程序指令引起,INTR、TRAP或RESET。

软件中断不分优先级,硬件中断有优先级。

还可以分为:1) 可屏蔽中断:用软件可以屏蔽或开放的中断。

通过对中断屏蔽寄存器(IMR)中的相应位;状态寄存器(ST1)中的中断允许控制位INTM;C54x最多可以支持16个用户可屏蔽中断(SINT15~SINT0)2) 非可屏蔽中断:不能用软件来屏蔽的中断,不受IMR和INTM位的影响。

TMS320C54x对这一类中断总是响应的,并从主程序转移到中断服务程序。

3.1.2中断管理有关的寄存器1) 中断标志寄存器(IFR,Interrupt Flag Register):16位存储器映像的CPU寄存器;数据存储器空间,地址为0001H;当一个中断出现的时候,DSP收到了一个相应的中断请求(中断挂起),IFR中相应的中断标志位为1。

15 12 11 10 9 8 7 6Res Res Res Res INT3 XINT1 RINT15 4 3 2 1 0XINT0 RINT0 TINT INT2 INT1 INT02) 中断屏蔽寄存器(IMR,Interrupt Mask Register)INTM:可屏蔽中断的总允许控制位,ST1中第11位。

INTM=0时,开放全部可屏蔽中断;INTM=1时,禁止所有可屏蔽中断。

IMR:1: 开放对应位的中断0: 禁止对应位的中断15 12 11 10 9 8 7 6Res Res Res Res INT3 XINT1 RINT15 4 3 2 1 0XINT0 RINT0 TINT INT2 INT1 INT0图4 TMS320C541 IMR的位定义3.1.3中断向量中断源服务程序的入口地址:图5 中断向量地址的形成3.2 中断流程3.2.1有关指令(1) INTR K:该指令可启动TMS320C54x的任何中断,INTM=1。

(2) TRAP K:TRAP与INTR的不同之处是TRAP中断时,不需要设置INTM位。

(3) RESET:复位操作,INTM =1,PC=0080H。

3.2.2中断的响应对于软件中断和非可屏蔽中断,CPU立即响应。

如果是可屏蔽中断,只有满足以下条件才能响应:(1) 优先级别最高。

(2) ST1中的INTM位为0,允许可屏蔽中断。

(3) IMR中的相应位为1,允许可屏蔽中断。

3.2.3执行中断服务程序响应中断之后,CPU将执行下列操作:(1) 将PC值(即返回地址)压入堆栈。

(2) 将中断向量的地址装入PC;将程序引导至中断服务程序ISR。

(3) 现场保护,将某些要保护的寄存器和变量压入堆栈。

(4) 执行中断服务程序ISR。

(5) 恢复现场,以逆序将所保护的寄存器和变量弹出堆栈。

(6) 中断返回,从堆栈弹出返回地址加载到PC。

(7) 继续执行被中断的程序。

3.3 中断过程:图6 中断过程图7 中断操作流程图3.4汇编源程序如下:4、 定时器/计数器编程举例例,设时钟频率为16.384MHz ,在TMS320C5402的XF 端输出一个周期为2s 的方波,方波的周期由片上定时器确定,采用中断方法实现。

4.1定时器0的初始化(1)设置定时控制寄存器TCR (地址0026H )。

(2)设置定时寄存器TIM (地址0024H )。

(3)设置定时周期寄存器PRD (地址0025H )。

4.2定时器对C5402的主时钟CLKOUT 进行分频CLKOUT 与外部晶体振荡器频率(在本系统中外部晶体振荡器的频率为16.384MHz )之间的关系由C5402的三个引脚CLKMD1、CLKMD2和CLKMD3的电平值决定,为使主时钟频率为16.384MHz ,应使CLKMD1=1、CLKMD2=1、CLKMD3=0,即PLL 1。

4.3中断初始化(1)中断屏蔽寄存器IMR 中的定时屏蔽位TINT0置1,开放定时器0中断。

(2)状态控制寄存器ST1中的中断标志位INTM 位清零,开放全部中断。

.mmregs.def _c_int00STACK .usect "STACK",100ht0_cout .usect "vars",1 ;计数器t0_flag .usect “vars”,1 ;当前XF输出电平标志。

t0_flag=1,则XF=1; ;t0_flag=0,则XF=0TVAL .set 1639 ;1640∈10∈61=1ms 因中断程序中计数器初值;t0_cout=1000,所以定时时间:1ms∈1000=1sTIM0 .set 0024H ;定时器0寄存器地址PRD0 .set 0025HTCR0 .set 0026H.dataTIMES .int TVAL ;定时器时间常数.text**********************************; 中断矢量表程序段_c_int00b startnopnopNMI rete ;非屏蔽中断nopnopnopSINT17 .space 4*16 ;各软件中断SINT18 .space 4*16SINT19 .space 4*16SINT20 .space 4*16SINT21 .space 4*16SINT22 .space 4*16SINT23 .space 4*16SINT24 .space 4*16SINT25 .space 4*16SINT26 .space 4*16SINT27 .space 4*16SINT28 .space 4*16SINT29 .space 4*16SINT30 .space 4*16INT0 rsbx intm ;外中断0中断retenopnopINT1 rsbx intm ;外中断1中断retenopnopINT2 rsbx intm ;外中断2中断retenopnopTINT: bd timer ;定时器中断向量nopnopnopRINT0: rete ;串口0接收中断nopnopnopXINT0: rete ;串口0发送中断nopnopnopSINT6 .space 4*16 ;软件中断SINT7 .space 4*16 ;软件中断INT3: rete ;外中断3中断nopnopnopHPINT: rete ;主机中断nopnopnopRINT1: rete ;串口1接收中断nopnopnopXINT1: rete ;串口1发送中断nopnopnop******************************************start:LD #0,DPSTM #STACK+100h,SPSTM #07FFFh,SWWSRSTM #1020h,PMSTST #1000,*(t0_cout) ;计数器设置为 1000(1s)SSBX INTM ;关全部中断LD #TIMES,AREADA TIM0 ;初始化 TIM,PRDREADA PRD0STM #669h,TCR0 ;初始化TCR0STM #8,IMR;初始化 IMR, 使能 timer0 中断RSBX INTM ;开放全部中断WAIT: B WAIT**************************************;定时器0中断服务子程序timer: ADDM #-1,*(t0_cout) ;计数器减1CMPM *(t0_cout),#0 ;判断是否为0BC next,NTC ;不是0,退出循环ST #1000,*(t0_cout);为0,设置计数器,并将XF取反BITF t0_flag,#1BC xf_out,NTCSSBX XFST #0,t0_flagB nextxf_out: RSBX XFST #1,t0_flagnext: RSBX INTMRETE.end5.链接命令文件times.cmd如下:times.obj-o times.out-m times.mapMEMORY{PAGE 0:RAM1: origin =1000h ,length =500hPAGE 1:SPRAM1: origin=0060h,length=20hSPRAM2: origin=0100h,length=200h}SECTIONS{.text :>RAM1 PAGE 0.data :>RAM1 PAGE 0vars :>SPRAM1 PAGE 1STACK :>SPRAM2 PAGE 1}。

相关文档
最新文档