文档详情

第6章80C51单片机内部功能单元解说.ppt

发布:2017-03-23约1.71万字共124页下载文档
文本预览下载声明
第6章 80C51单片机的内部功能单元 6.1 80C51单片机的中断系统 中断的概念 与中断相关的概念 引起CPU中断的因源:中断源 中断源向CPU提出的处理请求:中断请求 CPU暂时中断原来的工作A,转去处理事件B的过程:中断响应过程 对事件B的整个处理过程:中断服务或中断处理 处理完毕后,再回到原来被中断的地方(断点):中断返回 实现中断功能的部件:中断系统 中断服务程序入口地址:中断向量 中断优点 利用率高:CPU可以分时地为多个I/O设备服务 实时性强:CPU能及时处理系统的随机事件 可靠性提高:CPU能处理故障及掉电等突发事件。 中断系统:实现中断功能的系统 80C51的中断系统组成: 中断请求标志位(TCON,SCON)+中断允许寄存器IE+中断优先级寄存器IP+内部硬件优先级查询电路。 中断请求标志 思考: 1、当外部中断引脚有满足条件的信号时,置中断标志为1,何为满足条件的信号? 2、中断请求标志置位后,需不需要在适当的时候再去掉该标志?如何去掉? 电平方式(当ITx=0):INTx引脚低电平时IEx=1 边沿方式(当ITx=1):INTx引脚负跳变时IEx=1(一个机器周期检测到高电平,另一个机器周期检测到低电平) 中断请求标志置位后,需不需要在适当的时候再去掉该标志?如何去掉? 答:( 1)需要去掉标志,以免对后来的中断请求带来影响。 (2): 外部中断低电平触发时,引脚高电平时,硬件将IE自动清0; 外部中断边沿触发时,CPU响应中断时,硬件将IE自动清0; 计数器溢出中断标志(TF0,TF1), CPU响应中断时,硬件将IE自动清0; 串口接收中断标志(RI,TI), CPU响应中断时,硬件不自动清0,必须由软件清除。 中断允许控制 中断优先级控制 中断优先级遵循的原则 优先级状态触发器 中断系统内设有对应高、低2个优先级状态触发器。服务高优先级中断时,高优先级状态触发器自动置1,它将阻止后所有的中断请求。服务高低先级中断时,低优先级状态触发器自动置1,它将阻止后所有的低优先级中断请求。 中断服务结束时,状态触发器的复位由中断返回指令RETI清0。 CPU在执行程序过程中,中断系统在每个机器周期的S5P2对各中断源采样,并在下一机器周期内按优先级及内部顺序依次查询中断标志,首先被查到的中断请求标志所对应的中断被响应。即CPU转向其对应的中断向量的特定地址单元,进入相应的中断服务程序。 中断向量:中断处理程序的首地址(或称入口地址) 遇下面情况之一将不被响应 编写中断服务程序注意 例2:如图所示,按键K接至外部中断INT1,试编写程序使得按一次键LED点亮,再按一次,LED熄灭, 循环往复。 #includereg51.h sbit LED=P0^0; bit flag; /*定义按键切换标志*/ void main() { flag=1; /*初始化按键切换标志*/ LED=flag; /*初始化LED灭*/ EA=1; /*开CPU中断*/ EX1=1; /*允许外部中断1中断*/ IT1=1; /*设置为边沿触发方式*/ while(1); /*等待中断*/ } /*中断服务程序*/ void int1_int () interrupt 2 { flag=!flag; /*改变中断按键标志 */ LED=flag; } C51的中断函数格式如下: Void 函数名() interrupt 中断号 using 工作组 { 中断服务程序内容 } 说明: 中断函数不能返回任何值 中断函数不带任何参数 中断号是编译器识别不同中断的唯一符号 工作组是寄存器的工作组,一般省略,由编译器分配。 例3,如图所示,用P0口控制的8只发光二极管,实现8位二进制计数器,对INT1上出现的脉冲进行计数。 #includereg51.h unsigned char pulse_number= 0; void main (void) { EA = 1; /*开CPU中断*/ EX1 = 1; /* INT1中断允许*/ IT1 = 1; /* INT1 下降沿触发*/ while (1); /*等待中断*/ } /*中断服务程序*/ void int1_int ( ) interrupt 2 { P0=~(pulse_number++); } (用灯亮表示1,用灯灭表示0。进行~操作是因为
显示全部
相似文档