精华内容
下载资源
问答
  • MCS-51单片机的中断系统 8051单片机中断系统的结构如图5.3所示 确定中断源中断允许中断触发方式中断优先级 P3.2--INT0外部中断0请求通过引脚输入 P3.3--INT1外部中断1请求通过引脚输入 P3.3T0 P3.3T1 6IE-----中断充...
  • 80C51单片机 中断系统及其应用;3.3.1 80C51单片机中断系统;3.3.1 80C51单片机中断系统; 80C51单片机有5个中断源2个中断优先级它的中断处理程序可实现两级嵌套有较强的中断处理能力 单片机对中断系统的管理是通过...
  • 二定时 / 计数器的工作原理 加 1 计数器 输入的计数脉冲有两个来源 , 一个是 由系统的时钟振荡器输出脉冲经 12 分频后送来一 个是 T0 或 T1 引脚输入的外部脉冲源每来一个脉冲 计数器加 1 当加到计数器为全 1 时再...
  • 80C51的中断系统 本节学习目标 理解中断概念能正确描绘单片机中断响应过程 熟记80C51单片机的5个中断源及其中断入口地址 能按要求正确设置特殊功能寄存器IEIPTCONSCON和TMOD 熟悉中断优先控制的方法 一中断的概念 1...
  • 单片机原理及应用:第5章 80C51中断系统及定时计数器.ppt
  • 单片机原理与接口技术:第5章80C51中断系统及定时计数器.ppt
  • 80C51中断系统

    千次阅读 2020-09-03 19:52:29
    80C51中断系统 1.1 80C51中断系统结构 一、中断的概念 CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务)。 待CPU...

    80C51的中断系统

    一、中断的概念

           CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生);

           CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务)。

           待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断

                                     

           引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)

                                     

           随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:

           分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

    实时响应:CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;

    可靠性高:CPU具有处理设备故障及掉电突发性事件能力,从而使系统可靠性提高。

     

    二、80C51中断系统结构

    80C51的中断系统有5个中断源(8052有6个),2个优先级,可实现耳机中断嵌套。

                                   

    1、(P3.2):可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

      2、(P3.3):可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

       3、TF0(TCON.5):片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

       4、TF1(TCON.7):片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

      5、RI(SCON.0)或TI(SCON.1):串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

    三、中断请求标志

    1、TCON的中断标志

    IT0(TCON.0):外部中断0触发方式控制位。

        当IT0=0时,为低电平触发方式。

        当IT0=1时,为边沿触发方式(下降沿有效)

    IE0(TCON.1):外部中断0中断请求标志位。

    IT1(TCON.2):外部中断1触发方式控制位。

    IE1(TCON.3):外部中断1中断请求标志位。

    TF0(TCON.5):定时/计数器T0溢出中断请求标志位。

    TF1(TCON.7):定时/计数器T1溢出中断请求标志位。

    2、SCON的中断标志(串行口)

    RI(SCON.0):串行口接收中断标志位。当允许串行口接收数据时,每接受完一个串行帧,由硬件置位RI。注意,RI必须由软件清除。

    TI(SCON.1):串行口发送中断标志位。当CPU将一个发送数据接入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能自顶清除TI,TI必须由软件清除。

    四、中断的控制

    1.中断允许控制

    CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。

    EX0(IE.0):外部中断0允许位;

    ET0(IE.1):定时/计数器T0中断允许位;

           EX1(IE.2):外部中断0允许位;

    ET1(IE.3):定时/计数器T1中断允许位;

    ES  (IE.4):串行口中断允许位;

    EA  (IE.7):CPU中断允许(总允许位)。

    2.中断优先级控制

    80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。

    而8052单片机有四个中断优先级,即可实现四级中断服务嵌套。每个中断源的中断优先级由中断优先级寄存器IP和IPH中的相应位的状态来规定的。

    PX0(IPH.0) :外部中断0优先级设定位;

    PT0(IPH.1):定时/计数器T0优先级设定位;

    PX1(IPH.2):外部中断0优先级设定位;

    PT1(IPH.3):定时/计数器T1优先级设定位;

    PS  (IPH.4):串口优先级设定位;

    PT2(IPH.5):定时/计数器T2优先级设定位。

    同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队由中断系统硬件确定的自然优先级形成,其排列如图所示:

                                     

    80C51单片机的中断优先级由三条原则:

    ①、CPU同时接受到几个中断时,优先响应优先级最高的中断请求。

    ②、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。

    ③、正在进行的低优先级中断服务,能被高优先级中断请求所中断。

    为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。

    3、中断响应的条件

           ①、中断源有中断请求

           ②、此中断源的中断允许为位1

           ③、CPU开中断(即EA=1)

    以外部中断0为例:

           主程序中需要的代码:

    EA=1;//打开总中断开关
    EX0=1;//开外部中断0
    IT0=0/1;//设置外部中断的触发方式

            中断服务函数: 

    //void 函数名()interrupt(中断服务子程序) 0(优先级)
    void int0 () interrupt 0 
     
    {
      do anything that you want
    }
     

    五、80C51的定时/计数器

    1、定时/计数器

    利用单片机内部的定时/计数器实现定时功能。以下还有三种方法:

    ①、软件定时:软件定时占用硬件资源,但占用了CPU时间,降低了CPU的利用率。

    ②、采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。

    ③、采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。

    2、定时/计数器的结构和工作原理

             结构:定时器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和内容TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志

                                    

    工作原理:加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来,一个是TO或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器全为1时,再输入一个脉冲就使计数器回零,计数器的溢出使TCON中的TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到,如果工作于计数模式,则表示计数值已满。

    可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

    设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即技术频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t

    例:假设计数50个数,那么定时时间为:t= 50\times \frac{1}{12}\times 12   (定时时间(μs)=计数数X1/(晶振频率)X12)。

    16位寄存器能够计数的最大时间为65536μs。

    设置为计数模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期有采样到一低电平时,计数器加1,更新的计数值在下一机器周期得S3P1期间装入计数器。由于检测一个从1到0下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2μs。

    3、定时/计数器的控制

    80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请

    3.1、工作方式寄存器TMOD

    工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0高四位用于T1。其格式如下:

    GATE:门控位。GATA=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。

    C/\bar{T}:定时/计数模式选择位。C/\bar{T}=0时为定时模式;C/\bar{T}=1时为计数模式。

    M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。

                             

    3.2、控制寄存器TCON

    TCON的低4位用于控制外部中断。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

    TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0.T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清零,同硬件置1或清0的效果一样。

    TR1(TCON.6):T1运行控制位。TR置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清零。所以,软件可控制定时/计数器的启动与停止。

    TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

    TR0(TCON.4):T0运行控制位,其功能与TR1类同。

    4、定时/计数器的工作方式

    1、方式0

    方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

                                   

    定时模式有:N=t/Tcy。

    计数初值计算公式为X=2 ^{^{13}}-N

    定时器的初值还可以采用计数个数直接去补法获得。

    计数模式时,计数脉冲式T0引脚上的外部脉冲。

    门控位GATE具有特殊的作用。当GATE=0时,经反向后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开始由外中断引脚信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。

    2、方式1

     方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。

                                      

    计数个数与计数初值的关系为X= 2^{16}-N

    :初始化程序应完成如下工作:

    ①、对TMOD赋值,以确定T0和T1的工作方式。

    ②、计算初值,并将其写入TH0、TL0或TH1、TL1。

    ③、中断方式时,开总中断EA=1,并对IE赋值,开放其中断。

    ④、使TR0或TR1置位,启动定时/计数器定时或计数。

    以16位寄存器计时50ms为例

    在主程序中写入

    	TMOD=0x01; //设置定时器0为工作方式1:  16位定时器  T1为0x10  两者一起为0x11
    	TH0=(65556-50000)/256;  //把模放在定时器0计数器寄存器的高八位
    	TL0=(65556-50000)%256;  //把余放在定时器0计数器寄存器的低八位
    	EA=1;  //开总中断
    	ET0=1;  //开定时器0中断
    	TR0=1;  //启动定时器0
    

           在中断服务函数中写入

    void exter0() interrupt 1  //中断函数,1代表优先级1  50ms
    {
    	TH0=(65556-50000)/256;  //把模放在定时器0计数器寄存器的高八位
    	TL0=(65556-50000)%256;  //把模放在定时器0计数器寄存器的低八位
    	
    }

     

    展开全文
  • * 5.4.2 外部中断服务函数应用设计 本节通过几个案例介绍有关外部中断应用程序的设计 例5-2 电路如图5-4所示设计一个对外部中断0计数的程序在80C51单片机的P1口连接8只LED在外部中断0输入引脚P3.2连接一个按钮开关K...
  • 高等教育出版社 单片机原理及应用(C51编程)课件
  • MCS-51单片机中断源的种类及工作方式 中断控制寄存器IE中断优先级寄存器IP及定时器/计数器及外部中断控制寄存器TCON的使用方法 MCS-51型单片机中断响应过程 外部中断的结构及原理 熟练编制中断服务程序;第一讲 80C...
  • 本文给大家分享了外中断80C51单片机汇编语言编程)。
  • 分析了80C51单片机的2个对外中断入口INT0和INT1的结构、功能,讨论了通过控制机构的合理设置、编程,实现单片机对外中断功能的控制问题。
  • 80C51系列单片机中断问题的研究.pdf
  • 基于80C51单片机——中断小结

    千次阅读 多人点赞 2017-04-29 01:43:51
    最近看了一下80C51单片机中断部分的实验,做一些笔记,方便以后学习查找。 首先说一下什么是中断吧,中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU...

    最近看了一下80C51单片机的中断部分的实验,做一些笔记,方便以后学习查找。
    首先说一下什么是中断吧,中断是指CPU在执行当前程序的过程中,由于某种随机出现的外设(外部设备)请求或CPU内部的异常事件,使CPU暂停正在执行的程序而转去执行相应的服务处理程序;当服务处理程序运行完毕之后,CPU再返回到暂停处继续执行原来的程序。

    那什么是中断嵌套呢?简单点说就是低优先级的中断可以被高优先级的中断源所中断,等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序。

    举个简单的栗子吧(之前写过但不知道怎么删了,,又让我重新编辑):比如我们就是一个CPU,我们当前在洗衣服(当前程序),突然电话铃声响了(中断来了),它的优先级肯定高于洗衣服嘞,此时我们会停止洗衣服而转去接电话,等到电话打完,我们继续回去洗衣服(也就是所谓的“”等高优先级中断服务程序结束后,再返回去执行被中断的的低优先级的中断服务程序“”)。
    好了,接下来我们来说说怎么去设置一个中断:

    TCON(定时器/计数器控制寄存器)高4位是设置定时计数器,低4位是用来设置外部中断
    这里写图片描述
    * IT0和IT1是设置外部中断的触发方式
    当其为0时,为低电平触发方式。
    当其为1时,为负跳变触发方式。
    * IE0和IE1是外部中断标志位。
    * 其他事定时/计数器的控制。
    * TF0和TF1是定时器的中断标志。
    * TR0和TR1是打开相应的定时器。
    中断允许寄存器IE
    这里写图片描述
    * EA总中断允许。
    0时:CPU屏蔽所有的中断请求。
    1时:CPU开放所有的中断。
    * ES串行口中断允许位。
    0时:禁止串行中断。
    1时:允许串行中断。
    * ET1和ET0:分别是定时计数器1和定时计数器0中断允许位。
    0时:禁止相应的定时计数器中断。
    1时:允许相应的定时计数器中断。

     *  EX1和EX0:分别是外部中断1和外部中断0的中断允许位
        0时:禁止相应的外部中断。
        1时:允许相应的外部中断。
    

    中断优先级寄存器IP
    这里写图片描述
    * PS:串行口中断优先级
    0时:串行口中断优先级定义为高优先级
    1时:串行口中断优先级定义为低优先级

     *  PT1和PT0:分别是定时计数器1和定时计数器0的中断优先级
        0时:相应的定时计数器中断为高优先级
        1时:相应的定时计数器中断为低优先级
    
     *  PX1和PX0:分别是外部中断1和外部中断0的中断优先级
        0时:相应的外部中断为高优先级
        1时:相应的外部中断为低优先级
    

    **一般默认低优先级,不是特别需求不用改**********
    中断地址
    这里写图片描述
    中断函数的写法

    void  函数名()interrupt 中断编号
    {
        ;
    }

    接下来我们来说一下定时器:这里写图片描述
    定时/计数器实质上是一个加1计数器。它随着计数器的而输入脉冲进行自加1,也就是每来一个脉冲,计数器 就自动加1,当加到计数器为全1 的时候,再输入一个脉冲使计数器归零,且计数器的溢出使相应的中断标志位置为1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到,如果工作于计数模式,则表示计数值已满。
    **可见,由溢出时计时器的值减去计数初值才是加1计数器的计值。*

    TMOD(工作方式寄存器)
    这里写图片描述
    * GATE:门控制
    0时:仅有运行控制位TRx来控制定时/计数器的开启。
    1时:由TRx和外部中断脉冲计数(用于计算外部中断负跳变的次数)
    * C/T:计数器模式和定时器模式选择
    0时:选择定时器模式。
    1时:选择计数器模式。

    M1和M0:选择定时/计数器的工作方式
    这里写图片描述

    计数器初值的计算:

    • 机器周期:CPU完成一个基本操作所需要的时间
    • 机器周期=1/单片机的时钟频率。
    • 51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如你用的是12MHZ的晶振,那么单片机内部的时钟频率就是 12/12MHZ,当你使用12MHZ的外部晶振的时候,机器周期=1/1M=1us.

    • 而我们定时1ms的初值是多少呢,1ms/1us=1000.
      也就是要计数1000个数,初值=6553-1000+1(因为实际上计数器计数到66636才溢出)=64536=FC18H
      定时/计数器的工作方式:
      这里写图片描述这里写图片描述工作方式2特别适合于用作比较精确的脉冲信号发生器工作方式3将T0分成为两个独立的8位计数器TL0和TH0
      定时器操作步骤:

      • 选择工作方式(设置M1,M0)
      • 选择控制方式(设置GATE)
      • 选择定时器还是计数器模式(设置C/T)
      • 给定时/计数器赋初值(设置THx和TLx)
      • 开启定时器中断(设置ET0或ET1)
      • 开启总中断(设置EA)
      • 打开计数器(设置TR1或TR0)
        void TimeConfiguration()
        {
            TMOD = 0x01;         //定时器0选择工作方式1
            TH0 = 0x3C;          //设置初始值
            TL0 = 0xB0;          
            EA = 1;              //打开总中断
            ET0 = 1;             //打开定时器0中断
            TR0 = 1;             //启动定时器
        }

    中断操作步骤:
    * 打开总中断(设置EA)
    * 设置外部中断的触发方式(设置IT0或IT1)
    * 设置外部中断的中断允许位(设置EX0或EX1)
    * 设置外部中断的优先级(一般默认低优先级,不是特别需求不用改,设置PX0或PX1)

    void InConfiguration()
    {
            EA=1;             //打开总中断
            IT1=1;        //设置外部中断触发方式为负跳变触发方式
            EX1=1;        //允许外部中断1发生中断
            PX1=0;        //相应的外部中断为高优先级
    }

    好了,这部分内容就先小结到这,,要去睡觉了。不能熬夜!不能熬夜!不能熬夜!

    展开全文
  • 主程序中的中断初始化 中断都是在运行主程序时发生的是主程序的随机事件是否允 许中断及中断如何产生都应该在主程序中预先设置这就是主程序中 的中断初始化 中断初始化的内容包括中断系统总开放
  • 80C51中断系统的结构 80C51中断系统有5个中断源,2个中断优先级,可实现二级中断嵌套。 1.(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上有有效的中断信号时,中断标志...

    80C51的中断系统的结构

    80C51的中断系统有5个中断源,2个中断优先级,可实现二级中断嵌套。

    1.(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上有有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

    2.(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上有有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

    3.TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

    4.TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

    5.RI (SCON.0)或TI (SCON.1)串行口中断请求标志。当串行口接受完一帧串行数据时置位RI,或者当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

     

    中断请求标志

    1.TCON的中断标志

    IT0(TCON.0),外部中断0触发方式控制位。

    当IT0=0时,为电平触发方式。

    当IT0=1时,为边沿触发方式。(下降沿有效)

    IE0(TCON.1),外部中断0中断请求标志位。

    IT1(TCON.2),外部中断1触发方式控制位。

    IE1(TCON.3),外部中断1中断请求标志位。

    TF0(TCON.5),定时/计数器T0溢出中断请求标志位。

    TF1(TCON.7),定时/计数器T1溢出中断请求标志位。

     

    2.SCON的中断标志

    RI (SCON.0),串行口接收中断标志位。当串行口接收数据时,每接收完一帧串行数据,由硬件置位RI,向CPU申请中断,CPU响应中断时,不能自动清除RI,RI必须由软件清除。

    TI (SCON.1),串行口发送中断标志位。当串行口发送数据时,每发送完一帧串行数据,由硬件置位TI,向CPU申请中断,CPU响应中断时,不能自动清除TI,TI必须由软件清除。

     

    80C51中断的控制

    1.中断允许控制

    CPU对中断系统所有中断以及某个中断源的开放和屏蔽,是由中断允许寄存器IE控制的。

    EX0(IE.0),外部中断0允许位。

    ET0(IE.1),定时/计数器T0中断允许位。

    EX1(IE.2),外部中断1允许位。

    ET1(IE.3),定时/计数器T1中断允许位。

    ES(IE.4),串行口中断允许位。

    EA(IE.7),CPU中断允许(总允许)位。

     

    2.中断优先级控制

    80C51单片机有两个中断优先级,可以实现二级中断服务嵌套。每个中断源的中断优先级,都是由中断优先级寄存器IP中的,相应位的状态来规定的。

    PX0(IP.0),外部中断0优先级设定位。

    PT0(IP.1),定时/计数器T0优先级设定位。

    PX1(IP.2),外部中断1优先级设定位。

    PT1(IP.3),定时/计数器T1优先级设定位。

    PS(IP.4),串行口优先级设定位。

    PT2(IP.5),定时/计数器T2优先级设定位。

    展开全文
  • 80C51单片机的指令系统 具有255种操作码(00H~FFH)除A5H外的集合 只需数机42种助记符,代表33种功能 指令功能助记符与操作数各种寻址方式结合,构造出111中指令 80C51系统 寻址方式 立即寻址 直接寻址 寄存器寻址 ...

    80C51单片机的指令系统

    具有255种操作码(00H~FFH)除A5H外的集合
    只需数机42种助记符,代表33种功能
    指令功能助记符与操作数各种寻址方式结合,构造出111中指令

    80C51系统

    寻址方式

    • 立即寻址
    • 直接寻址
    • 寄存器寻址
    • 寄存器间接寻址
    • 相对寻址
    • 变址寻址
    • 位寻址
    1. 立即寻址

      直接给出操作数,出现的操作数称为立即数
      立即数前必须加上#

        MOV  DPTR, #1234H
      
    2. 直接寻址

      在指令中直接给出操作单元地址

        MOV  A, 3AH  
      

      ① 只能给出8位地址
      ② 寻址范围只限于片内数据存储器
      ③ 低128单元,在指令中直接以单元地址形式给出
      ④ 特殊功能寄存器,这使除单元地址形式给出外,还可以寄存器符号形式给出

    3. 寄存器寻址

      指在指令中将指定寄存器的内容作为操作数

      寻址范围
      ① 4个寄存器组共32个通用寄存器,单在指令中只能使用当前寄存器组
      ② 在使用前要通过指定PSW中指定的RS1、RS0,以选择使用的当前寄存器组
      ③ 部分特殊功能寄存器

    4. 寄存器间接寻址

      指在指令中给出的寄存器内容是操作数的地址,从该地址中取出的为操作数
      在寄存器间接寻址中,应在寄存器的名称前加@

      寻址范围
      ① 片内数据存储器的低128字节单位,只能采用R0/R1间址寄存器,形式为@Ri
      ② 片外数据存储器的64KB单元,使用DPTR作为间址寄存器,形式为@DPTR
      ③ 片外数据存储器低256字节单元,除可使用DPTR作为间址寄存器外,也可使用R0、R1作为间址寄存器
      ④ 堆栈区,堆栈操作指令(PUSH和POP也算作间址寻址)

    5. 相对寻址

      在指令中给出的操作数为程序转移的偏移量
      相对寻址为实现程序相对转移而设定的,为相对转移指令采用
      给出的偏移量用 rel 表示,把PC的当前值加上偏移量得到程序的相对转移的目的地址

      目的地址 = 转移指令所在的地址 + 转移指令字节数 + rel

      rel为一个带符号的8位二进制补码数,表示范围-128B ~ +127B

    6. 变址寻址(基址+变址)

      一般用于查表操作
      指以DPTR或PC作为基址寄存器,累加器A作为变址寄存器,二者内容相加

        MOVC     A, @A+DPTR   
      

      特点
      ① 只能对程序存储器进行寻址
      ② 变址寻址指令只有3条:

        MOVC     A, @A+DPTR ;  程序存储器读指令
        MOVC     A, @A+PC   ;  程序存储器读指令
        JMP      @A+DPTR    ;  无条件转移指令  
      

      ③ 上面的3条指令都是单字节指令
      ④ 变址寻址方式用于查表操作

    7. 位寻址

      位寻址区:
      片内数据存储器中的单元地址20H ~ 2FH,共16个单元128位,为位寻址区,位地址是0H ~ 7FH

        MOVC     C, 2BH  
      

      可供位寻址的特殊功能寄存器共有11个,实有寻址位83位
      表示方法
      ① 直接使用位地址表示方法
      ② 单元地址加位的表示方法

        88H单元的位5  =>   88H.5 
      

      ③ 特殊功能寄存器符号加位的表示方法

        PSW寄存器的位5   =>   PSW.5  
      

      ⑤ 位名称表示方法,特殊功能寄存器中的一些寻址位是有名称的

        PSW的位5为F0标志位,使用F0表示该位   
      

    总结

    寻址方式寻址空间
    寄存器寻址R0~R7、A、B、CY(bit)、DPTR
    直接寻址内部数据存储器低128字节
    特殊功能寄存器
    寄存器间接寻址内部数据存储器(@R0,@R1,@SP仅PUSH、POP)
    外部数据存储器(@R0,@R1,@DPTR)
    立即寻址程序存储器
    变址寻址程序存储器(@A+PC,@A+DPTR)
    相对寻址程序存储器(PC+位移量)
    位寻址内部数据存储器中有128个可寻址位
    特殊功能寄存器中可位寻址的位

    指令格式

    1. 通常由操作码和操作数两部分组成

      • 操作码用来规定指令完成的操作
      • 操作数表示操作的对象

      ① 单字节指令
       只有一个字节,操作码和操作数在同一个字节中
       共有49条单字节指令
      ② 双字节指令
       双字节指令包括两个字节,一个字节为操作码,另一个为操作符
       共有45条双字节指令
      ③ 三字节指令
       在三字节指令中,操作数(既可能是数据又可能是地址)占2个字节,操作码占1个字节
       共有17条指令

    2. 指令分类

      共111条指令

      • 数据传送类(28)
      • 算数运算类(24)
      • 逻辑运算类(25)
      • 控制转移类(17)
      • 布尔(位)操作类(17)
    3. 符号说明

    符号含义
    Rnn=07,表示当前寄存器组的8个通用寄存器R0R7中的一个
    Rii=0、1,可用作间址寻址的寄存器,只能是R0,R1中的一个
    Direct内部的8位地址,既可指片内数据存储器的低128个单元地址,也可指SFR的地址或符号名称,direct表示直接寻址方式
    #data指令中的8位立即数
    #data16指令中的16位立即数
    addr1616位目的地址,只限于LCALL和LJMP中使用
    addr1111位目的地址,只限于ACALL和AJMP指令使用
    rel相对转移指令中的偏移量,为8位带符号数,为SJMP和所有条件转移指令所使用
    DPTR数据指针
    bit片内数据存储器中的直接寻址位
    A累加器
    BB寄存器
    C进位标志位
    /位地址的前缀标志,表示对该位操作数取反

    数据传送类指令

    • 内部8位数据传送指令
    • 16位数据传送指令(专用于设定地址指针)
    • 程序存储器传送指令
    • 交换指令
    • 堆栈操作指令

    特点
    ① 不影响标志位C、AC、OV,只有一种堆栈操作指令可以直接修改程序状态字(PSW)
    ② 可以进行直接地址到直接地址的数据传送,能把一个并行I/O口中的内容传送到片内数据存储器
    ③ 用R0,R1间址访问片外数据存储器256字节地址及片内数据存储器中的任一单元,用DPTR访问片外全部64KB的数据存储器或I/O
    ④ A能够对Rn寄存器寻址
    ⑤ 能用变址寻址访问程序存储器中的表格

    1. 内部8位数据传送指令

      主要用于内部数据存储器和寄存器之间的数据传送

        MOV <目的字节>, <源字节>  
      

      操作属于拷贝属性

      ① 以累加器A为目的操作数的指令组

      指令目的操作数源操作数功能寻址范围
      MOVARnA <- RnR0~R7
      MOVAdirectA <- direct00~FFH
      MOVA@RiA <- Ri00~FFH
      MOVA#dataA <- #data#00~#FFH

      ② 以寄存器Rn为目的操作数的指令数

      指令目的操作数源操作数功能
      MOVRnARn <- A
      MOVRndirectRn <- direct
      MOVRn#dataRn <- data

      ③ 以直接地址direct为目的操作数的指令组

      指令目的操作数源操作数功能
      MOVdirectAdirect <- A
      MOVdirectRndirect <- Rn
      MOVdirectdirectdirect <- direct
      MOVdirect@Ridirect <- Ri
      MOVdirect#datadierct <- data

      ⑤ 以间接寻址寄存器Ri为目的操作数的指令组

      指令目的操作数源操作数
      MOV@RiA
      MOV@Ridirect
      MOV@Ri#data
    2. 16位数据传送指令

        MOV   DPTR, #data16   ; DPTR <- data16  
      

      数据的高8位送入DPH寄存器,数据低8位送入DPL寄存器

    3. 外部数据传送指令

      ① 采用间址寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式
      ② 采用R0或R1作为间址寄存器时,可寻址256个外部数据存储器单元,8位地址和数据均由P0口分时输入和输出
      ③ 采用16位DPTR作间址可寻址整个64KB片外数据存储空间,低8位(DPL)由P0口进行分时使用,高8位(DPH)由P2口输出

      1. 外部数据存储器或I/O内容送累加器A(读)

          MOVX     A, @Ri  
          MOVX     A, @DPTR  
        

        在P3.7引脚上输出 R D ‾ \overline{RD} RD有效信号,可作为外部数据存储器或I/O的读选通信号

      2. 累加器A内容送外部数据存储器或I/O(写)

          MOVX     @Ri, A   
          MOVX     @DPTR, A  
        

        在P3.6引脚上输出 W R ‾ \overline{WR} WR有效信号,可作为外部数据存储器或I/O的写选通信号

    4. 程序存储器数据传送指令(查表指令)

        MOVC     A, @A+PC  
        MOVC     A, @A+DPTR  
      

      均从程序存储器中读取数据(如表格、常数等)
      累加器A为变址寄存器,而PC、DPTR为基址寄存器
      DPTR为基址寄存器时为远程查表, PC为基址寄存器时为近程查表

    5. 数据交换指令

      1. 字节交换指令XCH组

          XCH      A, Rn  
          XCH      A, direct  
          XCH      A, @Ri  
        

        将累加器A与源操作数的字节内容互换

      2. 半字节交换指令组

          XCH      A, @Ri  
        

        将Ri间址寻址单元的低4位内容与累加器A的低4位内容互换,高4位不变,不影响标志位

          SWAP     A
        

        将累加器A的高、低半字节交换,也可看做4位循环指令

    6. 堆栈操作指令

        PUSH     direct   
        POP      direct   
      

    算数运算类指令

    1. 加法指令

        ADD   A, Rn       ; A + Rn -> A  
        ADD   A, direct   ; A + direct -> A  
        ADD   A, @Ri      ; A + Ri -> A   
        ADD   A, #data    ; A + data -> A  
      

      影响AC、CY、OV、P
      ① 当和的第3位有进位时,AC标志位置位,否则为0
      ② 当和的第7位有进位时,CY标志位置位,否则为0

    2. 带进位加法指令

        ADDC   A, Rn       ; A <- A + Rn + CY  
        ADDC   A, direct   ; A <- A + direct + CY  
        ADDC   A, @Ri      ; A <- A + Ri + CY  
        ADDC   A, #data    ; A <- A + data + CY  
      

      影响AC、CY、OV、P
      ① 和的第3位有进位时,AC将置位
      ② 和的第7位有进位时,CY将置位,表示和溢出

    3. 加1指令

        INC   Rn  
        INC   direct  
        INC   @Ri  
        INC   A  
        INC   DPTR   
      

      不影响标志位

    4. 二-十进制调整指令

        DA    A   
      

      修正方法:
      ① 当累加器低4位大于9或半进位标志AC=1时,进行低4加6修正
      A 0   3 A_{0~3} A0 3 + 6 -> A 0   3 A_{0~3} A0 3
       即 A = A + 06H

      ② 当累加器高4位大于9或进位标志CY=1时,进行低4位加6修正
      A 4   7 A_{4~7} A4 7 + 6 -> A 4   7 A_{4~7} A4 7
       即 A = A + 60H

    5. 带借位减法指令

        SUBB     A, Rn  
        SUBB     A, direct  
        SUBB     A, @Ri  
        SUBB     A, #data  
      

      若第7位有借位则CY置1;若第3位有借位,则AC置1
      若第7位和第5位中有1位需借位而另一位不借位,则OV置1

    6. 减1指令

        DEC   Rn  
        DEC   direct  
        DEC   @Ri  
        DEC   A  
      

      不影响各个标志位

      注意
      执行对并行I/O口的输出内容减1操作,是将该口输出锁存器的内容读出并减1,再写入锁存器

    7. 减法/除法指令

      1. 乘法指令

          MUL   AB   
        

        将A和B中两个无符号数8位二进制相乘,所得16积的低8位存在A中,高8位存在B中
        若乘积大于255,即高位B不为0,OV置位;CY总是清0

      2. 除法指令

          DIV   AB    
        

        将A中无符号8位二进制数除以B中的无符号8位二进制数,所得商的二进制部分存在A中,余数存在B中,并将CY和OV置0

    逻辑运算类指令

    包括:与、或、异或、清除、求反、移位等操作
    助记符有ANL、ORL、XRL、RL、RLC、RR、RRC、CPL、CLR等
    只按位进行逻辑运算,结果不影响PSW中标志位

    1. 逻辑与运算

           ANL A,Rn/direct/@Ri/#data  
      

    将目的地址单元中的数和源地址单元中的数按位相与
    作用:用作清除或屏蔽某些位

    1. 逻辑或运算

           ORL  A,Rn/direct/@Ri/#data   
      

    将目的地址单元中的数和源地址单元中的数按位相或
    作用:给某些位强迫置1,合并两个数中的1

    1. 逻辑异或运算

           XOR   A,Rn/direct/@Ri/#data  
      

    作用:对目的操作数的某些位取反,也可用于判单两个数是否相等,若相等则结果为0

    1. 累加器移位/循环指令
      (1) 循环右移指令

           RR    A    
      

      将累加器的内容逐位循环右移一位,并将A0的内容移到A7,不影响标志位
      (2) 带进位循环右移指令

           RRC   A
      

      将累加器的内容和进位一起循环右移一位,并且A0移入进位位CY,CY的内容移到A7,不影响CY之外的标志位
      (3) 循环左移指令

           RL    A
      

      将累加器的内容逐位循环左移一位,并且A7的内容移到A0
      (4) 带进位循环左移指令

           RLC   A
      

      将累加器的内容和进位位一起循环左移一位,并且A7移入进位位CY,CY的内容移到A0,不影响CY之外的标志位
      (5) 累加器按位取反指令

           CPL   A
      

      对进行累加器的内容逐位取反,结果仍存在A中,此操作不影响标志位
      (6) 累加器清0指令

           CLR   A
      

      对累加器进行清0,此操作不影响标志位

    控制转移类指令

    • 无条件转移指令
    • 条件转移指令
    • 循环转移指令
    • 子程序调用和返回指令
    • 空操作指令

    采用的助记符有:AJMP、LJMP、SJMP、JZ、JNZ、CJNE、DJNZ、ACALL、LACALL、RET、RETI、NOP等

    1. 无条件转移指令
      (1) 短转移指令

           SJMP  rel
      

      其目标地址是由当前PC(程序计数器)值和指令的第二个字节提供的8位带符号的相对地址相加而成
      有以下2种情况
      ① 根据偏移量计算转移的目的地址
      ② 根据目的地址计算偏移量
      (2) 绝对转移指令

           AJMP  addr11 
      

      其目标地址由指向第一个字节的高位A10A8和指令第二个字节的A7A0组成
      目标地址必须包含AJMP后第一条指令的字节在内的2KB范围内
      (3) 长转移指令

           LJMP  addr16  
      

      半酣程序存储器整个64KB的空间
      (4) 间接转移指令

           JMP   @A+DPTR     
      

      A中8位无符号数与DPTR内容相加  
      DPTR固定,A不同则可实现多分支转移

    2. 条件转移指令
      JZ rel
      A = 0,PC = PC+2+rel
      A ≠ 0,PC = PC+2
      JNZ rel
      A = 0,PC = PC+2+rel
      A ≠ 0,PC = PC+2
      数值比较转移指令
      (1) CJNZ A,direct,rel
      (2) CJNZ A,#data,rel
      (3) CJNZ Rn,#data,rel
      (4) CJNZ @Ri,#data,rel

    3. 循环转移指令
      (1) DJNZ Rn,rel
      (2) DJNZ direct,rel
      先将Rn/direct相减,再判别其内容是否为0
      为0,结束循环
      不为0,转向目标地址,继续执行循环程序

    子程序调用

    • ACALL addr11
      无条件调用首地址为addr11的子程序,不影响标志位
      过程
      ① 断点地址压栈,先PCL,后PCH,堆栈指针加2
      ② 将指令提供的11位目标地址送入PC10~PC0,所调用的子程序地址须与ACALL后指令第一个字节在同一个2KB区域内
    • 长调用 LCALL addr16
      过程
      ① 断点地址压栈
      PC+3 -> 获F一条指令地址
      将这16位的地址压栈后,SP <- SP+2
      ② 将指令第二个和第三个字节所提供的16位目标地址送PC15~PC0,程序转向子程序首地址开始执行
    • 返回指令 RET
      返回调用指令ACALL或LCALL的下一条指令
    • 中断返回指令 RETI
      ① 清除内部响应的中断状态寄存器
      ② 中断服务程序须以RETI结束
      ③ CPU执行RETI指令后至少再执行一条指令,才能响应新的中断请求

    布尔(位)操作类指令

    ① 以进位标志CY为位累加器,以内部数据存储器的20H至2FH单元及部分SFR为位存储器
    ② 以P0,P1,P2,P3为位I/O

    1. 布尔(位)传送指令

           MOV   C,bit  
           MOV   bit,C  
      
    2. 布尔(位)状态控制指令

           清除  CLR   C   
                 CLR   bit
           置1   SETB  C   
                 SETB  bit   
           取反  CPL   C   
                 CPL   bit   
      
    展开全文
  • 单片机原理及应用,是基于C51语言的编程,详细介绍了单片机的内部结构,汇编语言和C51语言的格式,并如何使用编程
  • 8051的中断系统中断的概念中断系统的结构 中断的概念 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂停中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕...
  • 80C51单片机介绍

    2018-10-13 17:32:00
    80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点。 增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(CMP)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个...
  • 具体地说就是把中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、中断系统、定时器/计数器以及I/O接口电路等集成在一块芯片上的微型计算机。换一种说法,单片机就是不包括输入输出设备、不带外部设备的...
  • 80C51单片机的基本结构 基本组成 CPU 存储器 RAM ROM 并行I/O口 用于检测和控制 定时器/计数器 定时电路及元件 80C51单片机的引脚及功能 电源与晶振 ​ Vcc:运行与检验时接电源正端 ​ Vss:接地 ...
  • 80C51单片机课件.rar

    2010-11-21 15:48:38
    单片微机的基本结构,80C51单片微机的指令系统,80C51单片微机的程序设计,80C51单片微机的中断系统原理及应用,单片微机定时器, 80C51单片微机的串行口原理及应用,80C51单片微机的系统扩展原理与接口技术,80c51...
  • 80C51单片机复习资料(一)

    千次阅读 2019-06-27 21:20:47
    什么是单片机?其主要特点? 单片机是把CPU、存储器(ram和...80c51单片机的片内、片外程序存储器和片内、片外数据存储器访问如何进行区分? 80c51的(-EA)引脚为访问片内片外程序存储器的选择端。访问片外RAM时需...
  • 80c51单片机指令大全

    2020-12-15 20:25:25
    1 1 ACALL add11 绝对调用子程序 2 2 LCALL add16 长调用子程序 3 2 RET 从子程序返回 1 2 RETI 从中断服务子程序返回 1 2 AJMP add11 无条件绝对转移 2 2 LJMP add16 无条件长转移 3 2 SJMP rel 无条件相对转移 2 2...
  • 介绍一种利用I2C实时时钟芯片HYM8563产生的多种中断方式,唤醒进入掉电状态的80C51系列单片机,由此技术构建的低功耗单片机系统。  The low consumption system of 80C51 series SCM, which was waked up by ...
  • 80C51单片机学习之硬件结构 1.80C51单片机的内部逻辑结构 单片机是把CPU、储存器、输入输出接口、定时/计数器和时钟电路集成到一块芯片上的微型计算机,主要由一下几个部分组成。 (1)中央处理器CPU 包括运算器和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,153
精华内容 461
关键字:

80c51单片机的中断系统