视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
51单片机中断系统和寄存器系统的学习
2025-09-29 02:44:48 责编:小OO
文档
51单片机中断学习

一、中断的概念

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

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

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

 

二、中断源

    在51单片机中有5个中断源

    中断号          优先级                    中断源                    中断入口地址 

       0               1(最高)             外部中断0                      0003H

       1               2                      定时器0                       000BH

       2               3                     外部中断1                      0013H

       3               4                      定时器1                       0018H

       4               5                      串口总段                      0023H

 

三、中断寄存器

    单片机有10个寄存器主要与中断程序的书写控制有关

    1.中断允许控制寄存器IE

    2.定时器控制寄存器TCON

    3.串口控制寄存器SCON

    4.中断优先控制寄存器IP

    5.定时器工作方式控制寄存器TMOD

    6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)

四、寄存器功能与赋值说明

    注:在用到中断时,必须要开总中断EA,即EA=1。  //开总中断

    1.中断允许控制寄存器IE

    

    EX0(EX1):外部中断允许控制位

        EX0=1 外部中断0开关闭合   //开外部0中断

        EX0=0 外部中断0开关断开

    ET0(ET1):定时中断允许控制位

        ET0=1 定时器中断0开关闭合 //开内部中断0

        ET0=0 定时器中断0开关断开

    ES: 串口中断允许控制位     

        ES=1 串口中断开关闭合     //开串口中断

        ES=0 串口中断开关断开

    2.定时器控制寄存器 TCON     //控制外部中断和定时器中断

    

    外部中断:

        IE0(IE1):外部中断请求标志位

            当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,cpu开始响应,处理终端,而当入

        中断程序后由单片机自动置0.

        //外部中断,即外部中断相应的引脚接入低电平或下降沿信号时,中断开始响应。

        IT0(IT1):外部中断触发方式控制位                   //选择有效信号

            IT0(IT1)=1:脉冲触发方式,下降沿有效。

            IT0(IT1)=0:电平触发方式,低电平有效。

    内部中断:

        TF0(TF1):内部定时器/计数器溢出中断标志位

            当定时器、计数器计数溢出的时候,此位由单片机自动置1,cup开始响应,处理中断,而当进入中

        断程序后由单片机自动置0.

     //内部中断实际上就是利用内部的计数器,只不过提供计数的脉冲来自单片机自身。

        TRO(TR1):定时器/计数器启动位                    //启动定时器

        TRO(TR1)=1; 启动定时器/计数器0

        TR0(TR1)=0; 关闭定时器/计数器0

     3.串口控制寄存器SCON

     

     TI:串行口发送中断标志位

          当单片机串口发送完一帧数据后,此位由单片机自动置1,而当进入中断服务程序后是不会自动清0的,

     必须由用户在中断服务中用软件清0.

     RI:串行口接收中断标志位

          当单片机串口接收完一帧数据后,此位由单片机自动置1,而当进入中断服务程序后是不会自动清0的,

    必须由用户在中断服务软件中用软件清0.

     (IP以后补上,TMOD,TL0/TH0 在定时器/计数器中讲)

 

五、中断结构图:

    

 

六、定时器/计数器

    1.计数的定义:

        计数是指对外部事件进行计数,外部事件的发生以输入脉冲的形式表示,因此计数功能的实质就是对外来

    的脉冲进行计数,在单片机中对应引脚T0和T1,两个脉冲输入端。

        外部输入的脉冲在负跳变时有效(即外部脉冲由1变化到0),计数器加1.

    2.定时器:

        定时器是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机的内部,因此定时器的实质是对内

    部脉冲的计数,在单片机中,每个机器周期产生一次计数脉冲,计数器加1.

    3.工作方式控制寄存器TMOD:

        

        TMOD的低半字节(D0,D1,D2,D3)用来控制定时器/计数器0

        TMOD的高半字节(D4,D5,D6,D7)用来控制定时器/计数器1

        对TMOD中的内容说明:

        GATE——门控制。   

          GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。   

             当INT0引脚为高电平时TR0置位,启动定时器T0;   

             当INT1引脚为高电平时TR1置位,启动定时器T1。   

          GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

        C/T——功能选择位   

           C/T=0时为定时功能,C/T=1时为计数功能。     

        M0、M1——方式选择功能   

        由于有2位,因此有4种工作方式 

        

   

  4.根据单片机晶振,所选TMOD的的工作方式,所要定的时间,来确定THO和TLO所要赋予的初值

    (以12M晶振,工作方式1,16位计数器为例,设所定时间为Xus(16为计数器最大数65536,即65536us,若所

      定时间大于65535,则要用if语句控制,现假设X<65535))

     1.时钟周期的时间t=1/12M=1/12 us

     2.机器周期的时间T=12*1/12=1 us

     3.因为每经过一个机器周期计数器+1,所以,计数器+1,经过的时间为 1 us。

     若所定时间为X,则要求经过Xus,中断响应,又因为16为计数器要全部置1(即达到65535)+1后,中断才会

     响应,所以,初值=(65536-X)

     4.将初值转化为16进制码,分别付给THO和TLO

     eg:所定时间5ms

         初值=(65536-5000)=60536=EC78

         TH0=0XEC; TL0=0X78;

     (当工作方式不同时,TH0/TL0的赋值也不同,个人觉得有了16位计数器了,其余的没什么用,不介绍了)

  5.写程序时另一种THO/TLO赋值方法

     TH0=(65536-20000)/256;     

     TL0=(65536-20000)%6;

     这样设置,每经过20ms,发生一次中断,中断时间一般以秒为单位,所以经过n次中断即可。

单片机寄存器

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

    在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下:

1、ACC---是累加器,通常用A表示

  这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器

  在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

  这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:

下面我们逐一介绍各位的用途

CY:进位标志。

  8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0

  例:78H+97H(01111000+10010111)

AC:辅助进、借位(高半字节与低半字节间的进、借位)。

  例:57H+3AH(01010111+00111010)

F0:用户标志位

  由用户(编程人员)决定什么时候用,什么时候不用。

RS1、RS0:工作寄存器组选择位

  通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。

0V:溢出标志位

  运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P:奇偶校验位

  它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。

  例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL)--------数据指针

  可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作K字节范围内的数据操作。

5、P0、P1、P2、P3--------输入输出口(I/O)寄存器

  这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器。它里面的内容对应着管脚的输出。

6、IE-----中断充许寄存器

可按位寻址,地址:A8H

∙EA (IE.7):EA=0时,所有中断禁止(即不产生中断);EA=1时,各中断的产生由个别的允许位决定 

∙- (IE.6):保留 

∙ET2(IE.5):定时2溢出中断充许(8052用) 

∙ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止) 

∙ET1(IE.3):定时1中断充许 

∙EX1(IE.2):外中断INT1中断充许 

∙ET0(IE.1):定时器0中断充许 

∙EX0(IE.0):外部中断INT0的中断允许 

7、IP-----中断优先级控制寄存器

   可按位寻址,地址位B8H

∙- (IP.7):保留 

∙- (IP.6):保留 

∙PT2(IP.5):定时2中断优先(8052用) 

∙PS (IP.4):串行口中断优先 

∙PT1(IP.3):定时1中断优先 

∙PX1(IP.2):外中断INT1中断优先 

∙PT0(IP.1):定时器0中断优先 

∙PX0(IP.0):外部中断INT0的中断优先 

8、TMOD-----定时器控制寄存器

不按位寻址,地址H

∙GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。 

∙C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。 

∙M1 、M0:T0、T1工作模式选择位 

9、TCON-----定时器控制寄存器

可按位寻址,地址位88H

∙TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。 

∙TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。 

∙TR1:T1充许计数控制位,为1时充许T1计数。 

∙TR0:T0充许计数控制位,为1时充许T0计数。 

∙IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE1(边沿触发方式)。 

∙IT1:外部中断源1触发方式控制位。IT1=0,外部中断1程控为电平触发方式,当INT1(P3.3)输入低电平时,置位IE1。 

∙IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE0(边沿触发方式)。 

∙IT0:外部中断源0触发方式控制位。IT0=0,外部中断1程控为电平触发方式,当INT0(P3.2)输入低电平时,置位IE0。 

10、SCON----串行通信控制寄存器

  它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:

    

(1)SM0、SM1:串行口工作方式控制位。

  SM0,SM1    工作方式

     00      方式0-波特率由振荡器频率所定:振荡器频率/12

     01      方式1-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

     10      方式2-波特率由振荡器频率和SMOD所定:2SMOD ×振荡器频率/

     11      方式3-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

(2)SM2:多机通信控制位。< br>    多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。

工作于方式0时,SM2必须为0。

(3)REN:允许接收位。< br>    REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。

(4)TB8:发送接收数据位8。< br>    在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

(5)RB8:接收数据位8。

在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

(6)TI:发送中断标志位。

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。

(7)RI:接收中断标志位。

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

11、PCON-----电源管理寄存器

   PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:

 在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。

12、T2CON-----T2状态控制寄存器

∙TF2:T2溢出中断标志。TF2必须由用户程序清“0”。当T2作为串口波特率发生器时,TF2不会被置“1”。 

∙EXF2:定时器T2外部中断标志。EXEN2为1时,当T2EX(P1.1)发生负跳变时置1中断标志DXF2,EXF2必须由用户程序清“0”。 

∙TCLK:串行接口的发送时钟选择标志。TCLK=1时,T2工作于波特率发生器方式。 

∙RCLK:串行接口的接收时钟选择标志位。RCLK=1时,T2工作于波特率发生器方式。 

∙EXEN2:T2的外部中断充许标志。 

∙C/T2:外部计数器/定时器选择位。C/T2=1时,T2为外部事件计数器,计数脉冲来自T2(P1.0);C/T2=0时,T2为定时器,振荡脉冲的十二分频信号作为计数信号。 

∙TR2:T2计数/定时控制位。TR1为1时充许计数,为0时禁止计数。 

∙CP/RL2:捕捉和常数自动再装入方式选择位。为1时工作于捕捉方式,为0时T2工作于常数自动再装入方式。当TCLK或RCLK为1时,CP/RL2被忽略,T2总是工作于常数自动再装入方式。 

下面对T2CON的D0、D2、D4、D5几位主要控制T2的工作方式,下面对这几位的组合关系进行总结

下载本文
显示全文
专题