hcs08中断系统-rti_第1页
hcs08中断系统-rti_第2页
hcs08中断系统-rti_第3页
hcs08中断系统-rti_第4页
hcs08中断系统-rti_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五章 复位、中断与系统控制 第一节 输入输出控制方式 1、无条件传送方式2、条件传送方式3、中断控制方式 4、DMA方式 第二节 复位与中断系统 1、中断源及中断矢量 2、中断控制及相关寄存器 第三节 中断处理过程 第四节 中断系统的应用IRQ、RTI、KBI第五章 复位、中断与系统控制1、中断源、中断向量2、中断程序的处理过程3、堆栈在中断中的运用4、中断的允许、初始化5、汇编与C中断程序设计5.1 微机的输入输出方式 在信息处理的过程中,微机经常要与外部设备交换信息,称为输入(读外设)与输出(写外设)。信息的传送方式有以下几种:一无条件传送方式: 外设在任何时刻均处于“准备好”的状态,C

2、PU可随时用指令读写外设。 例1从PTB端口输入8个开关S0S7的状态: LDA PTBD(LDA $02) 例2用PTB端口控制8个LED灯的点亮(低电平点亮)。 MOV #$0F,PTBD; 点亮高4位LED二查询传送方式(条件传送方式) 外设用一位“状态信息”表明其是否处于“准备好”状态,CPU每次访问外设时必须先读入状态信息(查询),确认“准备好”之后,才能对其进行读写。例1输入某8位AD转换器的转换结果。设AD的数据线 接到PTB口,“转换结束”信号接到PTA0(1表示转换 结束),“启动AD”信号接到PTA1(从01为启动) BCLR 1,PTAD ; PTA1清0 BSET 1,

3、PTAD ;启动AD WAIT: BRCLR 0,PTAD, WAIT ;查询 LDA PTBD ;读AD 例2向打印机输出一个C字符。打印机数据线接PTB口,“忙” 信号接到PTA.1(1表示忙),“写”信号接到PTA.2(01为写入) LDA C ;CA WAIT: BRSET 1,PTAD, WAIT ;查询 STA PTBD ;CPTB口 BCLR 2,PTAD BSET 2, PTAD ;发“写”脉冲*当外设的准备时间为已知时,也可用延时代替查询。 如已知AD转换时间最大为1ms,则读AD的程序中可用BSR D1ms(延迟1ms子程)代替WAIT: BRSET 1,PTAD, WAI

4、T 查询式传送的优点:通用性强,硬件结构简单。 缺点:查询时占用CPU,效率低。三、中断传送方式: 当外设准备好数据传送时,用一个信号“通知”CPU(申请中断),CPU接到此信号后,若满足一定的条件,则暂时“中断”当前程序的执 行(中断响应),转向为外设服务的子程序(中断服务),服务完毕后返回主程序继续执行。(中断返回) 上述整个过程称为中断,实现中断功能的硬件结构称为中断系统。 中断源:提出中断申请的外设 I/0设备(键盘,打印机,AD、DA等) 硬件故障。例:电源掉电。 实时时钟:定时检测、定时控制。 调试程序时设置的中断源(单步运行等) 中断技术的功能特点: 分时操作:CPU与外设可各自

5、工作,提高了CPU的效率。 实时处理:可及时响应外设要求的服务。 故障处理:可及时处理各种软硬件故障。 中断优先权 优先权排队:多个中断源同时提中断时,按其优先 权的高低,优先响应高级中断。 软件优先权排队:CPU接到中断申请时,用指令逐个查询各中断源(优先级高的先被查询)按顺序服务。 硬件优先权排队:中断系统硬件中规定了各中断源的优先级,级别高者优先响应。 中断嵌套:CPU为某中断源服务时,又出现了一个优先级更高的中断申请,CPU则中止当前中断服务,转向高级中断服务,完毕后再返回原中断服务。 四直接存贮器存取(DMA)方式 CPU“让出”总线(AB、DB、CB均为高阻状态),由专用的DMA控

6、制器“接管”总线,控制外设与存贮器之间直接传送数据(不通过CPU,无需指令)。适用于 大批量数据传送(如硬盘与RAM之间) 外设速度很高(如高速AD) 5.2.1、复位是最高级中断 复位使得系统从一个已知(状态与控制寄存器)的状态开始运行程序。 PC装载复位矢量 (0 xFFFE:0 xFFFF). 外设被禁止,I/O管脚处于没有上拉电阻的高阻输入状态。 状态控制寄存器CCR的中断全局控制位( I )为“1” 堆栈指针SP装载数值 0 x00FF。5.2 复位与中断系统5.2.2、复位源(最高级中断源) 外部复位管脚PTA5(PIN),需要将SOPT1 寄存器的RSTPE位设“1”; 上电复位

7、 (POR) 低压监测复位 (LVD) 看门狗定时器复位 (COP) 非法代码监测复位(ILOP) 非法地址监测复位(ILAD) 背景调试强迫复位5.2 复位与中断系统2:这些位是否设置由复位时的实际情况决定。System Reset Status Register (SRS),写,写SRS复位看门狗而不影响复位看门狗而不影响SRS的具体数值。的具体数值。5.2.3、中断源、中断矢量、中断入口、中断向量5.2 复位与中断系统中断号:C语言编程常用矢量地址:汇编语言编程常用1中断入口1中断入口1中断入口低优先级高中断号入口地址模块标记、状态位允许位寄存器230 xFFD0:FFD1系统RTIFR

8、TIESRTISC200 xFFD6:FFD7ACMPACFACIEACMPSC190 xFFD8:FFD9ADCCOCOAIENADCSC1180 xFFDA:FFDBKBIKBFKBIEKBISC170 xFFDC:FFDDIICIICIFIICIEIICC,IICS160 xFFDE:FFDFSCITDRE、TCTIE、TCIESCIC2150 xFFE0:FFE1SCI IDLE、RDRFILIE、RIESCIS1140 xFFE2:FFE3SCIOR,NF,FE,PFORIESCIC3130 xFFE4:FFE5SPISPIF,MODF,SPTEFSPIE,SPTIESPIC1120

9、 xFFE6:FFE7 MTIMTOFTOIEMTIMSC70 xFFF0:FFF1TPMTOFTOIETPMSC60 xFFF2:FFF3TPMCH1FCH1IETPMC1SC50 xFFF4:FFF5TPMCH0FCHI0IETPMC0SC30 xFFF8:FFF9系统LVDFLVDIESPMSC120 xFFFA:FFFBIRQIRQFIRQIEIRQSC10 xFFFC:FFFDCPUSWI指令-00 xFFFE:FFFF系统COP,LVD,RST,POR,非法指令等。5.3.1、5.3 中断处理过程普通中断与SWI指令一样,包括:1、 在堆栈中保存CPU寄存器;2、设置CCR寄存器中

10、的“I”,以禁止进一步的中断发生;3、 从所有挂号的中断中,选择优先级最高的中断矢量装载PC;4、从新的中断子程序取指令执行。5、中断子程序遇上RTI后,从堆栈恢复CCR、A、X、。为了与M68HC08兼容,寄存器不会自动保存与恢复,建议手动保存与恢复。 PSHH PULH RTI为了允许中断嵌套,进入ISR时要手动清除CCR中的I位,建议高手如此操作,否则嵌套会带来调试上的困难。5.3.2、中断中的堆栈操作5.3 中断处理过程H不会自动保存与恢复。5.4 中断系统的应用IRQ、RTI、KBI5.4.1、IRQ单片机的管脚及其功能管脚的复用管脚的复用注意:0、管脚功能复用时的优先级见右表,高优

11、先级接管管脚时,对低优先级模块会产生杂乱信号,因此切换前应先停止不使用的功能。1、PTA5作为只能输入管脚而言,输入电压不能超过VDD。2、IIC使用的端口可以通过设置SOPT2 寄存器中的IICPS位重新定位到PTB6和PTB7,复位时缺省使用PTA2 and PTA3。3、如果ACMP和ADC被同时使能,管脚PTA0和PTA1可同时使用。5.4.1 IRQ管脚的使用管脚的使用中断应用范例中断应用范例IRQSC (0 x000F)0F) 6IRQPDD 内部上拉电阻使能控制位,必须IRQPE=1该位才有意义。0-上拉允许; 1-上拉禁止,可使用外部上拉。4 IRQPE 置位置位该位使管脚当I

12、RQ用。3 IRQFIRQ事件标志位该只读位为该只读位为“1 1”时表示时表示检测到IRQ事件。2IRQACKIRQ应答位给给这个只写位写“1”清除IRQF,如果中断模式选择的是“边沿边沿和电平和电平” (即IRQMOD=1),当IRQ管脚保持低电平时,写该位也不能清除IRQF。 1IRQIEIRQ 中断使能给该位写“1”将允许IRQF=1时产生硬件中断,该位写“0”时,只能采用查询的方式。 0IRQMODIRQ触发模式即选择 “边沿边沿”触发或者“边沿和电平边沿和电平” 触发。0-IRQ事件只在下降沿触发; 1-IRQ事件在下降沿和低电平都能触发。IRQ管脚的使用,结合开发板管脚的使用,结合

13、开发板,采用采用C语言编程。语言编程。1新建一个c工程;2在打开中断允许之前添加4行初始化: SOPT1 = 0 x02; / 禁止禁止 COP、STOP and RST IRQSC = 0 x16; / 允许允许IRQ管脚,允许管脚,允许IRQ中断,下降沿触发中断,下降沿触发 PTBDD = 0 xFF;/ PTB输出输出 PTBD = 0 xFF;/ 关闭关闭LED EnableInterrupts; /* enable interrupts */5.4.1 IRQ管脚的使用管脚的使用中断应用范例中断应用范例3添加中断服务子程序、延时子程序interrupt 2 void IRQ_ISR(

14、) unsigned char i; for(i=0;i200;i+); /延时 while(!PTAD_PTAD5); /等待按键释放 PTBD_PTBD6 = 0;/LED亮 delay(500);/延时 PTBD_PTBD6 = 1;/LED灭 delay(500); PTBD_PTBD6 = 0;/亮、灭两次 delay(500); PTBD_PTBD6 = 1; IRQSC = 0 x16; /清除标记,缺乏将不停清除标记,缺乏将不停 void delay(unsigned int ms) unsigned int i; unsigned int j; for(j= 0;jms;j+

15、) for(i = 0;i200; i+) 0 x17沿和电平沿和电平5.4.1 IRQ管脚的使用管脚的使用中断应用范例中断应用范例5.4.2 RTI的使用的使用中断应用范例中断应用范例5.4.2 RTI(Real-Time Interrupt)5.4.2 RTI5.4.2 RTI的使用的使用中断应用范例中断应用范例SRTISC(System Real-Time Interrupt Status and Control Register) 7 RTIF实时中断标志 周期性实时时钟定时时间到时,设置该位为“1”。 6 RTIACK实时中断应答 这个只写位用来应答实时中断,给该位写1清除RTIF。

16、5RTICLKS实时中断时钟选择该位选择实时中断的时钟源0-RTI时钟源为内部1kHz振荡器; 1-RTI时钟源为外部时钟。4 RTIE实时中断使能这给该位写“1”将允许RTI产生硬件中断申请。2:0RTIS选择RTI的周期参见下页表。5.4.2 RTI的使用的使用中断应用范例中断应用范例SRTISC RTIS2:0使用内部1kHz时钟源使 用 外 部 时 钟源text 表示外时钟周期0:0:0停止RTI停止RTI0:0:18 mstext 2560:1:032 mstext 10240:1:164 mstext 20481:0:0128 mstext 40961:0:1256 mstext

17、81921:1:0512 mstext 163841:1:11.024 stext 327685.4.2 RTI的使用的使用中断应用范例中断应用范例RTI的使用的使用,采用汇编编程的方法:采用汇编编程的方法:1新建一个汇编工程;2在XDEF后面添加标号RT_ISR XDEF _Startup, main,RT_ISR;3在中断全局允许前,添加一点初始化代码: MOV #$FF,PTBDD ;定义输出定义输出 LDA #$16 ;允许允许RT中断中断,时间间隔时间间隔512ms STA SRTISC;设置设置RTI CLI ; enable interrupts4编写中断子程序,让LED闪烁RT

18、_ISR: LDA PTBD EOR #$FF; STA PTBD LDA #$56 ;清除标志 STA SRTISC; RTI5修改PRM文件,添加RT_ISR说明,2种方法VECTOR 23 RT_ISR VECTOR ADDRESS 0 xffd0 RT_ISR RT_ISR: ; RTI ORG $FFD0 DC.W RT_ISR此时不用修改XDEF和PRM5.4.2 RTI的使用的使用中断应用范例中断应用范例5.4.3 KBI的使用的使用中断应用范例中断应用范例1、基础知识键盘中断KBI模块提供多达8个独立的可使能的外部中断源 4种触发模式键盘中断可将MCU从wait、stop3模式

19、唤醒,在BDM模式正常工作。 5.4.3 KBI的使用的使用中断应用范例中断应用范例2、寄存器KBI状态与控制寄存器(KBISC)KBI管脚使能寄存器(KBIPE),注意管脚功能优先级KBI工作沿选择寄存器( KBIES )。0 x000C0C-KBISC 0 x000D0D-KBIPE0 x000E0E-KBIES5.4.3 KBI的使用的使用中断应用范例中断应用范例KBI KBISC3 KBF键盘中断标志当检测到键盘中断时,该只读位置“1”。2 KBACK键盘应答写1到KBACK是标志清除机制的一部分,读时总为0。1 KBIE键盘中断使能给该位置“1”允许键盘中断申请。0 KBMOD 键盘

20、中断触发模式该位(与BKEDG位一起)选择键盘中断触发模式:0- 只检测边沿;1-检测边沿和电平。KBIPE7:0 KBIPEn对应位置“1”允许管脚的KBI功能。PTB3,2,1,0,PTA3,2,1,0KBI 沿选择KBIES7:0KBEDGn0-对应管脚选择下降沿或低电平;1-对应管脚选择上升沿或高电平。PTB3,2,1,0,PTA3,2,1,0KBI 3、应用注意事项:、应用注意事项:1、如果选择的是沿和电平触发模式,当管脚维持在触发电平状态时,对KBISC寄存器中的KBACK写“1”并不能清除KBF;2、KBI对应管脚可以配置内部上拉/下拉电阻,是通过对应的管脚管理寄存器的设置实现的

21、(设置PTAPE、PTBPE寄存器)。管脚设置一般是允许上拉电阻,但对于KBI模块而言,管脚设置的内部电阻实际受KBI模块的寄存器KBIES控制,如果KBEDGn = 0(下降沿或低电平),设置的是上拉电阻 KBEDGn = 1时则配置的是下拉电阻。3、KBI的初始化过程,KBI首次使用时,为了不产生错误中断,建议初始化过程如下6步:1清除KBISC中的KBIE位,以屏蔽KBI中断;2设置KBIES寄存器中的KBEDGn位,选择使用管脚的中断触发极性;3如果需要内部上拉/下拉电阻,配置PTAPE / PTBPE中的PTxPE位;4设置KBIPE寄存器中的KBIPEn ,允许对应管脚的KBI功能

22、;5给KBISC寄存器中的KBACK位写1,以清除所有KBI中断标志;6设置KBISC寄存器中的KBIE位,以允许KBI中断。KBI 3.1、实验电路、实验电路PTA2 / KBIP2PTA3 / KBIP3PTB6 PTB7 KBISC0 x06沿沿KBIPE0 x0C沿选择KBIES0 x0下降下降1中断入口低优先级高中断号入口地址模块标记允许位寄存器230 xFFD0:FFD1系统RTIFRTIESRTISC200 xFFD6:FFD7ACMPACFACIEACMPSC190 xFFD8:FFD9ADCCOCOAIENADCSC1180 xFFDA:FFDBKBIKBFKBIEKBISC

23、170 xFFDC:FFDDIICIICIFIICIEIICC,IICS160 xFFDE:FFDFSCITDRE、TCTIE、TCIESCIC2150 xFFE0:FFE1SCI IDLE、RDRFILIE、RIESCIS1140 xFFE2:FFE3SCIOR,NF,FE,PFORIESCIC3130 xFFE4:FFE5SPISPIF,MODF,SPTEFSPIE,SPTIESPIC1120 xFFE6:FFE7 MTIMTOFTOIEMTIMSC70 xFFF0:FFF1TPMTOFTOIETPMSC60 xFFF2:FFF3TPMCH1FCH1IETPMC1SC50 xFFF4:FFF5TPMCH0FCHI0IETPMC0SC30 xFFF8:FFF9系统LVDFLVDIESPMSC120 xFFFA:FFFBIRQIRQFIRQIEIRQSC10 xFFFC:FFFDCPUSWI指令-00 xFFFE:FFFF系统COP,LVD,RST,POR,非法指令等。KBI 3.2、实验要求、实验要求按SW1时,LED1和LED2亮灭1次;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论