zoukankan      html  css  js  c++  java
  • 中断

    中断:中断时为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外
    或内部事件的能力。它是单片机最重要的功能之一
    51单片机内部一共有5个中断源,即有5种情况发生时,会使单片机区处理中断程序。
    对单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速区处理(中断发生);CPU暂时停止当前的工作
    中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,在回到原来事件A被中断的地方继续处理事件A(中断过返
    回),这一过程称为中断
    引起CPU中断的根源,称为中断源,中断源向CPU提出中断请求,CPU暂时中断原来的事务A,转去处理事件B,对事件B处理完毕后,
    再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。
    中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功能寄存器来决定的。
    与中断有关的知识点还有一个叫中断嵌套,即:如果单片机正在处理一个中断程序,此时,又有另一个中断现象发生,单片机将会停
    止当前的中断程序,而去执行新的中断程序,新中断程序处理完毕后在回到刚才停止的中断程序处继续执行,执行完这个中断后再返回
    主程序继续执行主程序
    中断优先级:当有多个中断同时发生时,单片机应该先去执行优先级较高的程序,当优先级高的程序执行完毕之后再去执行优先级较低
    的程序。
    优先级的高低取决于单片机内部的特殊功能寄存器————中断优先级寄存器的设置情况,通过设置中断优先级寄存器,我们来告诉单
    片机,当两个中断同时出现时先执行那个中断程序。若没有人为操作优先级寄存器,单片机会按照默认的一套优先级自动处理。
    52单片机一共有6个中断源,它们的符号、名称及产生的条件、优先级以及中断序号如下
    INT0-----外部中断0,由P3.2端口线引入,低电平或下降沿引起    优先级最高   中断序号0
    INT1------外部中断1,由P3.3端口线引入,低电平或下降沿引起   优先级第二   中断序号1
    T0------定时器/计数器0中断,由T0计数器计满回零引起                优先级第三   中断序号2
    T1------定时器/计数器1中断,由T1计数器计满回零引起                优先级第四  中断序号3
    T2-------定时器/计数器2中断,由T2计数器计满回零引起               优先级第五   中断序号4
    TI/RI-----串行口中断,串行端口完成一帧字符发送/接收后引起    优先级最低   中断序号5
    以上6个中断源,T2是52单片机特有的
    中断允许寄存器IE
    中断允许寄存器用来设置各个中断源的打开与关闭,IE在特殊功能寄存器中字节地址为A8H位地址(由低位到高位)分别是A8H~AFH,该
    寄存器可进行位寻址,即可对该寄存器的每一位进行单独操作,单片机复位时IE全部被清0
    中断允许寄存器

    EA---全局中断允许位
    EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应的中断的打开或关闭
    EA=0,关闭全部中断
    ---——无效位
    ET2——定时器/计数器2中断允许位
    ET2=1,打开T2中断
    ET2=0,关闭T2中断
    ES——串行口中断允许位
    ET1=1,打开T1中断
    ET1=0,关闭T1中断
    EX1——外部中断1中断允许位
    EX1=1,打开外部中断1中断
    EX1=0,关闭外部中断1中断
    ET0——外部中断0中断允许位
    EX0=1,打开外部中断0中断
    EX0=0,关闭外部中断0中断
    中断优先级寄存器IP
    中断优先级寄存器在特殊功能寄存器中,字节地址为B8H、位地址(由低位到高位)分别是B8H~BFH,IP用来设定各个中断源属于两级中断中
    的哪一级。该寄存器可进行位寻址,即可对该寄存器的每一位尽心单独操作。单片机复位时IP全部被清0
    中断优先级寄存器

    --——无效位
    PS——串行口中断优先级控制位
    PS=1,串行口中断定义为高优先级中断
    PS=0,串行口中断定义为低优先级中断
    PT1——定时器/计数器1中断优先级控制位
    PT1=1,定时器/计数器1中断定义为高优先级中断
    PT1=0,定时器/计数器1中断定义为低优先级中断
    PX1——外部中断1中断优先级控制位
    PX1=1,外部中断1定义为高优先级中断
    PX1=0,外部中断1定义为低优先级中断
    PT0——定时器/计数器0中断优先级控制位
    PT0=1,定时器/计数器0中断定义为高优先级中断
    PT0=0,定时器/计数器0中断定义为低优先级中断
    PX0——外部中断0中断优先级控制位
    PX0=1,外部中断0定义为高优先级中断
    PX0=0,外部中断0定义为低优先级中断
    在51单片机系列中,高优先级中断能够打断低优先级中断以形成中断嵌套,同优先级中断之间或低优先级对高优先级中断则不能形成嵌套。若几
    个同优先级中断同时向CPU请求中断响应,在没有设置中断优先级情况下,按照默认中端级别响应中断,在设置中断优先级后,则按照设置顺序
    确定响应的先后顺序
    单片机的定时器中断
    51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。52单片机内部多一个T2定时器/计数器。它们既有定时功能又有计
    数功能。注意:这个定时器系统是单片机内部一个独立的硬件部分。它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定
    时功能后,定时器便在晶振的作用下自动开始计时,当定时器的计数计满后,会产生中断,即通知CPU如何处理。
    定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD时定时器/计数器的工作方式寄存器,确定工作方式和功能
    ;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
    加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲12分频后送来;另一个是T0或T1引脚输入的外部脉冲源,每来一个
    脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON寄存器中TF0或TF1置1,向CPU发出中断请求
    (定时器/计数器中断允许时)。如果定时器/计数器工作于定时模式,则表示定时时间已到:如果工作于技术模式,则表示计数值已满
    由溢出时计数器的值减去计数初值才是加1计数器的计数值
    设置为定时器模式时,加1计数器是对内部机器周期(一个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期
    Tcy就是定时时间t。
    单片机在使用定时器或计数器功能时,通常需要设置两个与定时器有关的寄存器:定时器/计数器工作方式寄存器RMOD与定时器/计数器控制寄存器
    TCON
    定时器/计数器工作方式寄存器TMOD
    定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器的工作方式及功能选择。单片机复位时
    TMOD全部被清0.
    TMOD工作方式寄存器

    TMOD的高4位用于设置定时器1,低四位用于设置定时器0,含义如下
    GATE——门控制位
    GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX(X=0,1)来控制
    GATE=1,定时器/计数器启动与停止由TCON寄存器中TRX(X=0,1)和外部中断引脚(INT0或INT1)上的电平状态来控制
    C/T=1,为计数器模式;C/T=0,为定时器模式。
    M1M0——工作方式选择位。
    每个定时器/计数器都有4种工作方式,它们由M1M0设定

    定时器/计数器控制寄存器TCON
    定时器/计数器控制寄存器在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别是88H~8FH,该寄存器可进行位寻址。TCON寄存器
    用来控制定时器的启、停、标志定时器溢出和中断情况。单品机复位时TCON全部被清0.
    TF1、TR1、TF0和TR0位于定时器/计数器;IE1、IT1、IE0和IT0位于外部中断

    TF1——定时器1溢出标志位
    当定时器1计满溢出时,由硬件使TF1置1,并且申请中断,进入中断服务程序后,由硬件自动清0。注意,如果用定时器的中断,那么该位完全不用人为
    区操作,但是如果使用软件查询方式的话,当查询到位置1后,就需要使用软件清0.
    TR1——定时器1运行控制位
    由软件清0关闭定时器1.当GATE=1,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1.
    TF0——定时器0溢出标志,其功能及操作方法同TF1.
    TR0——定时器0运行控制位,其功能及操作方法同TR1.
    IE1——外部中断1请求标志
    当IT1=0时,为电平触发方式,每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平,则置1,否则IE1清0.
    当IT1=1时,INT1为跳变沿触发方式,当第一个机器周期采样到INT1为低电平时,则IE1置1.IE1=1,表示外部中断1正在向CPU申请中断。当CPU响应中
    断,转向中断服务程序时,该位由硬件清0.
    IT1——外部中断1触发方式选择位
    IT1=0,为电平触发方式,引脚INT1上低电平有效
    IT1=1,为跳变沿触发方式,引脚INT1上的电平从高到底的负跳变有效
    IE0——外部中断0请求标志,其功能及操作方法同IE1.
    IT0——外部中断0触发方式选择位,其功能及操作方法同IT1
    每个定时器都有4种工作方式,可通过TMOD寄存器中的M1M0位来进行工作方式选择。
    单片机定时器程序
    1,对TMOD赋值,以确定T0和T1的工作方式
    2,计算初值,并将初值写入TH0、TL0、或TH1、TL1
    3,中断方式时,则对IE赋值,开放中断
    4,使TR0或TR1置位,启动定时器/计数器定时或计数

  • 相关阅读:
    Asp.net Mvc中MVCContrib中无法使用Castle的发解决方案
    Asp.net Mvc Framework 十(测试方法及Filter的示例)
    无注册表的COM调用
    Direct3D 9学习笔记(13)网格(Mesh)4
    Direct3D 9学习笔记(11)网格(Mesh)2
    ATL 核心COM继承类之IDispatchImpl及调用
    ATL 核心COM继承类之CComObjectRootEx及CComObjectLock
    Direct3D 9学习笔记(12)网格(Mesh)3
    ATL COM类之激活
    ATL 引用计数线程模型
  • 原文地址:https://www.cnblogs.com/tuteng/p/2944986.html
Copyright © 2011-2022 走看看