Vmt6 单片机内部资源及编程.ppt
《Vmt6 单片机内部资源及编程.ppt》由会员分享,可在线阅读,更多相关《Vmt6 单片机内部资源及编程.ppt(192页珍藏版)》请在三一办公上搜索。
1、第6章 单片机内部资源及编程,课件制作:高惠芳,中断是一项重要的计算机技术,这一技术在我们的日常生活中也同样存在,请看例子:任务1:学习 任务2:接电话 如果你是学生,那学习肯定是重点,也就把它当作是(主任务),而接电话呢是(次要任务)。如果你用中断的话,也就是允许中断的话,等到电话响,再去接电话也不迟,可是如果你不用中断的话,要接电话怎么办呢,就是一整天一直守侯在电话旁边,一直在看有没有电话来,这样其实你浪费了大部分不必要的时间,而如果用中断的话,释放出了大部分的时间来学习,就不用守在电话边上了.,6.1.1 中断概述,6.1 中断系统,任务分解 你在看书电话铃响了你在书上做了个记号,走到电
2、话旁你拿起电话和对方通话 通话结束,挂上电话,回到书桌旁从做记号的地方继续读书。,你在看书(任务1)电话铃(中断源)响了(中断请求)你听见铃声(中断控制)在书上做了个记号(断点保护),走到电话旁(中断响应)你拿起电话和对方通话(任务2)通话结束,挂上电话,回到书桌旁(中断返回)从作记号的地方继续读书(恢复断点,继续执行主程序)。,中断:CPU在运行程序过程中会出现数据输入、数据输出或 特殊情况处理等其它的事情,CPU只能采用停下正在 进行的任务去处理另一个任务,这种方法称为中断。,中断技术实质上就是一种资源共享技术,使多项任务共享CPU,单片机的中断服务流程,中断技术的实际应用:,实现CPU与
3、外部设备的速度配合。,实现实时控制。所谓实时控制,就是被控对象可以随时 向CPU发出请求,要求及时处理,以确保对象保持在最 佳状态。,实现故障的及时处理。借助中断技术可以对单片机系统 运行中的某些故障(如断电故障、运算出错等)及时发 现,并迅速处理。,实现人机对话。单片机系统运行中需要通过键盘、按钮 等来进行人工干预。,6.1.2 中断源,中断源:向CPU发出中断请求的来源,3类5个中断源:,1、外部中断源,外部中断是由外部信号引起的,2个中断源,外部中断“0”:中断信号由引脚 引入,外部中断“1”:中断信号由引脚 引入,外部中断请求有两种信号方式,电平方式,脉冲方式,电平方式的中断请求:低电
4、平有效,单片机在中断请求引入端 或 上采样到有效的低电平时,就激活外部中断,脉冲方式的中断请求:脉冲的后沿负跳有效,CPU在两个相邻机器周期对中断请求引入端进行的采样中,如前一次为高电平,后一次为低电平,即为有效中断请求,2、定时/计数器中断源,定时/计数器中断:为满足定时或计数的需要而设置的,两个定时中断,定时器/计数器0中断,定时器/计数器1中断,当计数结构发生计数溢出时,以计数溢出信号作为中断请求,去置位一个溢出标志位,作为单片机接受中断请求的标志,3、串行口中断源,是为串行数据传送的需要而设置的,当串行口接收或发送完一组串行数据时,就产生一个中断请求,表6.1 中断源及其入口地址,中断
5、服务程序的首地址(入口地址)称为中断向量,6.1.3 中断控制,4个控制寄存器,定时器控制寄存器TCON,中断允许控制寄存器IE,中断优先控制寄存器IP,串行口控制寄存器SCON,中断控制:提供给用户使用的中断控制手段,1.定时器控制寄存器(TCON),用于保存外部中断请求标志位、定时器的计数溢出标志位和外部中断触发方式的选择,寄存器地址88H,位地址8FH-88H,外中断请求标志位,当采样到外部中断时,由硬件置1,中断响应后由硬件自动清0,外中断请求触发方式控制位,1 脉冲触发方式,后沿负跳有效,0 电平触发方式,低电平有效,由软件置1或清0,计数溢出标志位,计数溢出时,相应的标志位由硬件置
6、“1”当转向中断服务程序时,由硬件自动清“0”,2.串行口控制寄存器(SCON),寄存器地址98H,位地址9FH-98H,与中断有关的控制位共2位,TI串行口发送中断请求标志位,当发送完一帧串行数据后,由硬件置“1”在转向中断服务程序后,用软件清“0”,RI串行口接收中断请求标志位,当接收完一帧串行数据后,由硬件置“1”在转向中断服务程序后,用软件清“0”,串行中断请求由TI和RI的逻辑或得到,无论是发送标志还是接收标志,都会产生串行中断请求,3.中断允许控制寄存器(IE),寄存器地址0A8H,位地址0AFH-0A8H,EA中断允许总控制位,EA=,0 中断总禁止,禁止所有中断,中断总允许,总
7、允许后中断的禁止或允许由 各中断源的中断允许控制位设置,其中与中断有关的控制位共6位:EA:中断允许总控制位 EA=0,中断总禁止,禁止所有中断;EA=1,中断总允许,总允许后各个中断源的允许与禁止,还取决于各个中断允许位的状态。EX0和EX1:外部中断允许控制位 EX0(或EX1)=0,禁止外部中断(或);EX0(或EX1)=1,允许外部中断(或)。ET0和ET1:定时器中断允许控制位 ET0(或ET1)=0,禁止定时器0(或定时器1)中断;ET0(或ET1)=1,允许定时器0(或定时器1)中断。ES:串行中断允许控制位 ES=0,禁止串行(TI或RI)中断;ES=1,允许串行(TI或RI)
8、中断,4.中断优先级控制寄存器(IP),寄存器地址0B8H,位地址0BFH-0B8H,其中与中断有关的共5位:PX0:外部中断0()优先级设定位;PT0:定时器0(T0)优先级设定位;PX1:外部中断1()优先级设定位;PT1:定时器1(T1)优先级设定位;PS:串行中断优先级设定位。,对IP的各个对应位置1或清0决定,设定为0时为低优先级,设定为1时为高优先级。,两级优先级,具有中断服务嵌套的功能,,其中断优先级的控制原则是:,(1)低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服 务,从而实现中断嵌套,(2)如果一个中断请求已被响应,则同级的其它中断服
9、务 将被禁止。即同级不能嵌套。,(3)如果同级的多个中断请求同时出现,则按CPU查询次 序确定哪个中断请求被响应。,外部中断0,定时中断0,外部中断1,定时中断1,串行中断,除了中断优先级控制寄存器外,还有2个不可寻址的优先级状态触发器。,一个用于指示某一高优先级中断正在进行服务,从而屏蔽其它高优先级中断;,另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级的中断。,RETI指令除了使程序返回到断点之外,还使“优先级生效触发器”复位。,如要开放外部中断0,使用字节操作指令为:MOV IE,#81H,使用位操作指令为:SETB EA SETB EX0,1 0
10、 0 0 0 0 0 1,6.1.4 中断响应过程,1.中断采样,只有外部中断中断请求才有采样问题,采样是对芯片引脚 和 在每个机器周期的S5P2进行的,根据采样结果来设置TCON寄存器中IE0和IE1的状态,中断响应过程:从中断请求发生到中断被响应,再转向执行中断服务程序去完成中断所要求的操作。,对于电平方式的外部中断请求:,若采样为高电平,无中断,IE0=0,IE1=0,若采样为低电平,有中断,IE0=1,IE1=1,对脉冲方式的外中断:,若在两个相邻机器周期采样到先高电平后低电平,则有中断,IE0=1,或IE1=1否则 IE0=0,或IE1=0,2.中断标志位的查询,单片机把所有中断的中
11、断请求标志位都汇集到TCON和SCON寄存器中。,因为中断的发生是随机的,无法事先预知,所以必须主动检测,这一过程称为中断查询。,中断查询:,由CPU测试TCON和SCON中各标志位的状态,以确定有没有中断请求发生以及是哪一个中断请求,单片机在每一个机器周期的最后一个状态(S6)按优先级顺序对中断请求标志位进行查询,即先查询高级中断后再查询低级中断,同级中断按,外部中断0,定时中断0,外部中断1,定时中断1,串行中断,的顺序查询,如果查询到标志位为“1”,表明有中断请求发生,接着就从相邻的下一个机器周期的S1状态开始进行中断响应,3.中断响应,中断响应是对中断源提出的中断请求的接受,中断响应的
12、主要内容:由硬件自动生成一条长调用指令LCALL addr16 Addr16是程序存储器中断区中相应中断的入口地址,0003H-000AH 外部中断0中断地址区,000BH-0012H 定时器/计数器0中断地址区,0013H-001AH 外部中断1中断地址区,001BH-0022H 定时器/计数器1中断地址区,0023H-002AH 串行中断地址区,例如对于外部中断0的响应,产生的长调用指令为:LCALL 0003H,CPU执行LCALL指令,将PC的内容压入堆栈以保护断点,将中断入口地址装入PC,使程序转向相应的中断区 入口地址,各中断区只有8个单元,通常在各中断区入口地址处 放置一条无条件
13、转移指令,使程序执行转向在其它 地址存放的中断服务程序,中断响应是有条件的,当存在下列情况之一时,中断响应被封锁:,CPU正处在为一个同级或高级的中断服务中。因为当一个 一个中断被响应时,要把对应的优先级触发器置位,封 锁了低级和同级的中断。,查询中断请求的机器周期不是当前指令的最后一个机器周 期。此限制的目的在于使当前指令执行完毕后,才能进行 中断响应,以确保当前指令的完整执行。,当前指令是返回指令(RET,RETI)或访问IE、IP的指令。因为MCS-51系统规定:在执行完这些指令之后,还应再 继续执行一条,然后才能响应中断。,中断查询的结果不作记忆,4.中断响应时间,中断响应时间:从外部
14、中断请求有效(标志位置“1”)到转向中断区入口地址所需的机器周期数,单片机的最短响应时间为3个机器周期,中断请求标志位查询占一个机器周期,而这个机器周期又恰好是指令的最后一个机器周期,这个机器周期后,中断即被响应,产生LCALL指令。执行这条长调用指令需2个机器周期。共计3个机器周期。,单片机的最长响应时间为8个机器周期,中断标志查询时,刚好是开始执行RET、RETI或访问IE、IP的指令,则需把当前指令执行完再继续执行一条后,才能进行中断响应。,执行RET、RETI或访问IE、IP的指令最长需2个机器周期,如果接着再执行的指令恰好是MUL或DIV指令,则又需4个机器周期。再加上执行长调用指令
15、LCALL所需的2个机器周期,从而形成了8个机器周期的最长响应时间。,一般的中断响应时间都是在大于3个机器周期而小于8个机器周期的两种极端情况之间。,如果出现有同级或高级中断正在响应或服务中需等待的时候,则响应时间无法计算,一般无需考虑中断响应时间,只有在精确定时的应用场合,才需要考虑中断响应时间,6.1.5 中断请求的撤除,中断响应后,TCON或SCON中的中断请求标志应及时撤除(中断请求标志位清0),否则就意味着中断请求仍然存在,形成中断的重复响应。,1.定时器/计数器溢出中断的撤除,定时器/计数器的溢出中断响应后,硬件自动把标志位TF0(或TF1)清0。,2.外部中断请求的撤除,外部中断
16、的撤除包括两项内容:中断标志位的清0和外中断请求信号的撤除。,(1)脉冲方式外部中断请求的撤除,外部中断请求标志位IE0(或IE1)的清0同样是在中断响应后由硬件电路自动完成的;而外中断请求信号由于是脉冲信号,中断后也就自动撤除了。,(2)电平方式外部中断请求的撤除,外部中断请求标志位IE0(或IE1)的清0也是在中断响应后由硬件电路自动完成的;,但外部中断请求信号的低电平可能继续存在,需要在中断响应后把中断请求输入端从低电平强制改成高电平,SETB P1.0;P1.0=1CLR P1.0;P1.0=0,3.串行中断的撤除,串行中断标志位TI和RI在中断响应后,片内硬件不能自动清除。因为这两个
17、中断标志位对应同一个中断入口地址(0023H),中断响应后还须查询这两个标志位的状态,以判定是接收中断,还是发送中断,然后方可撤除。因此,串行中断请求的撤除应使用软件的方法,在中断服务程序中将其清0。,6.1.6 中断程序设计,单片机中断系统的控制和管理:由用户对与中断有关的特殊功能寄存器TCON、SCON、IE和IP进行编程实现。,中断系统的初始化:,对这几个寄存器的有关位进行预置,CPU开中断或关中断;某中断源中断请求的允许或禁止;设定所用中断的中断优先级;若为外部中断,则应规定是电平中断触发方式还是脉冲中断触发方式。,例6.1 试写出 为低电平触发的中断系统初始化程序。,解:(1)采样位
18、操作指令 SETB EA;CPU开中断 SETB EX1;开中断 SETB PX1;令为高优先级 CLR IT1;令为电平触发方式(2)采样字节操作指令 MOV IE,#84H;CPU开中断和开中断 ORL IP,#04H;令为高优先级 ANL TCON,#0FBH;令为电平触发方式,外部中断0中断初始化的内容:,ORG 0000H AJMP MAIN;系统复位后转向主程序 ORG 0003H AJMP EXINT0;转向外部中断0服务程序MAIN:MOV TCON,#01H;脉冲触发方式 MOV IE,#81H;中断开放,外中断0允许 MOV IP,#01H;外中断0为高优先级,其余 为低优
19、先级 MOV SP,#03H;设置堆栈 EXINT0:;外部中断0服务程序,与中断有关的控制寄存器:可以使用寄存器名称,也可以使用寄存器地址,对控制寄存器的设定还可以使用位操作指令,如:设置外中断0为高优先级,其余为低优先级 的位操作指令为:,MOV IP,#00H;清中断优先级寄存器SETB PX0;外中断0为高优先级中断,主程序空闲,等待中断请求时,可设置THERE:SJMP THERE,1.汇编语言中断程序设计,中断系统的设计过程,中断初始化,在主程序中完成;子程序调用;在中断入口地址处安排一条跳转指令,跳转至中断服务 子程序入口;中断服务子程序开始保护现场,保护与主程序或其它中断 系统
20、共享的资源,如A,PSW,DPTR,Rn等,如果没有 共享资源,可以不必保护;编制中断服务子程序功能主体;恢复现场;中断返回。,例6.2 在图6.6中,P1.0P1.3接有4个开关,P1.4P1.7接有4个发 光二极管,消抖电路用于产生中断请求信号,当消抖电路 的开关来回拨动一次将产生一个下跳变信号,向CPU申请 中断,要求:初时发光二极管全黑,每中断一次,P1.0 P1.3所接的开关状态反映到发光二极管上,且要求开关合 上时对应发光二极管亮。,解:编程如下:ORG 0000H AJMP MAIN ORG 0003H;外部中断0入口 AJMP SER_INT0;转中断服务程序 ORG 0100
21、H;主程序 MAIN:MOV P1,#0FH;熄灭发光二极管且对开关输入端先输出1 SETB IT0;脉冲触发方式 SETB EX0;允许中断 SETB EA;总中断允许 AJMP$;等待中断 SER_INT0:MOV P1,#0FH;熄灭发光二极管且对开关输入端先输出1 MOV A,P1;输入开关状态 CPL A;状态取反 ANL A,#0FH;屏蔽A的高半字节 SWAP A;A高低半字节交换 MOV P1,A;开关状态输出 RETI;中断返回,2.C语言中断程序设计,中断服务函数的一般形式为:函数类型 函数名(形式参数表)interrupt n using m,n通常取以下值:0:外部中断
22、01:定时器/计数器0溢出中断2:外部中断13:定时器/计数器1溢出中断4:串行口发送与接收中断,using m:选择函数使用的工作寄存器组,m的取值范围为03。,例6.3 用C语言对例6.2的任务进行编程。,解:编程如下:#includevoid int0()interrupt 0/*中断函数*/P1=0 x0f;/*熄灭发光二极管且对开关输入端先输出1*/P1=4;/*读入开关状态,并左移四位,使开关反映在发光二极管上*/P1;/*对P1口内容取反*/main()/*主函数 EA=1;/*开中断总开关*/EX0=1;/*允许中断*/IT0=1;/*负跳沿产生中断*/while(1);/*等
23、待中断*/,6.1.7 外部中断源的扩展,1.利用定时器扩展外部中断源,置定时器/计数器为工作方式2,即自动装载式8位计数,以便在一次中断响应后,自动为下一次中断请求作好准备;高8位和低8位计数器(TH和TL)初值均预置为0FFH;将扩展的外部中断请求信号接计数输入端T0或T1;把扩展的外部中断服务程序按所用的定时器/计数器中断入 口地址存放。,2.利用硬件申请软件查询的方式扩展外部中断源,利用单片机的外部中断输入端(或),使用集电极开路门(OC门)“线或”的关系连接多个外部中断,同时利用输入端口线作为各中断源的识别线。,用OC门“线或”实现,中断源查询流程图,ORG 0003H LJMP S
24、ER_INT0SER_INT0:PUSH PSW;现场保护 PUSH A JB P1.0,ZHD1;转向中断服务程序1 JB P1.1,ZHD2;转向中断服务程序2 JB P1.2,ZHD3;转向中断服务程序3 JB P1.3,ZHD4;转向中断服务程序4EXIT:POP A;现场恢复 POP PSW RETIZHD1:;中断服务程序1 AJMP EXITZHD2:;中断服务程序2 AJMP EXITZHD3:;中断服务程序3 AJMP EXITZHD4:;中断服务程序4 AJMP EXIT,使用编码器芯片74LS148,可以实现8路中断,6.2 定时器/计数器,2个可编程的16位定时器/计数
25、器:,定时器/计数器0:,定时器/计数器1:,由TH0(地址8CH)和TL0(地址8AH)2个8位计数器组成,由TH1(地址8DH)和TL1(地址8BH)2个8位计数器组成,6.2.1 定时/计数器的结构及工作原理,1.定时/计数器的结构,2.定时/计数器的工作原理,定时器/计数器即可作为定时器使用,也可作为计数器使用,作定时器使用时计数脉冲来自于内部时钟振荡器,作计数器使用时计数脉冲来自于外部引脚。,(1)作定时器使用,输入脉冲是由内部时钟振荡器的输出经12分频后送来的,所以定时器也可看作是对机器周期的计数器。,每来一个机器周期,计数器加1,直到计数器满,再来一个机器周期,定时器全部回零,这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vmt6 单片机内部资源及编程 单片机 内部 资源 编程
链接地址:https://www.31ppt.com/p-2850905.html