1天搞定单片机中断——基础知识大全

   日期:2021-04-12     浏览:111    评论:0    
核心提示:Stc89c51/52单片机的P0口为开漏输出,若作为普通I/O口试,需要加上拉电阻,不然输出不了高电平。(注:P1、P2、P3都是准双向输出)其中上拉电阻的作用:1、加大普通IO口的驱动能力。2、起到限流的作用。3、抵抗电磁干扰。单片机时钟时许单位(晶振周期、状态、机器周期、指令周期):单片机最小系统组成5部分:单片机、晶振电路、复位电路、电源电路、下载电路单片机引脚解释:单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。⒈ 电源: ⑴ VCC - 芯片电源,接+5

这篇文章主要针对的是单片机编程中的中断知识。单片机编程其实很简单(就是C语言编程),难的是各种外围器件的学习,以及看懂芯片手册和对芯片进行初试化的操作。因为单片机编程中常常涉及到中断,要对各种寄存器进行操作。所以我统一罗列出来,方便后面编程时查阅。本篇不介绍单片机编程中的基本知识(包括c语言知识、单片机基础知识)。

文章目录

  • 1、单片机时钟时序单位(晶振周期/拍节、状态、机器周期、指令周期):
  • 2、单片机最小系统组成5部分:单片机、晶振电路、复位电路、电源电路、下载电路
  • 3、单片机引脚解释:单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
  • 一、中断简介:
    • 1、89C51的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套。
    • 2、中断寄存器
      • (1)定时器控制寄存器TCON:高位才与定时器有关,低位是外部中断相关的
      • (2)串行口控制寄存器SCON
      • (3)中断允许寄存器IE:
      • (4)中断优先级控制寄存器IP:
      • (5)电源控制寄存器PCON:
  • 二、定时器/计数器篇
    • 1、定时器/计数器中断:用到的寄存器
      • (1)寄存器每位详解:
          • 【注】:在编程中定时器/计数器的使用方法:
  • 三、外部中断篇
    • 1、外部中断:用到的控制寄存器TCON(主要是低四位,高四位与定时器有关):
          • 注:编程时外部中断的使用方法
  • 四、串口中断篇
    • 1、串口中断:用到的相关寄存器
    • 2、波特率计算方法:

注意:
Stc89c51/52单片机的P0口为开漏输出,若作为普通I/O口试,需要加上拉电阻,不然输出不了高电平。(注:P1、P2、P3都是准双向输出)

其中上拉电阻的作用:
1、加大普通IO口的驱动能力。
2、起到限流的作用。
3、抵抗电磁干扰。

1、单片机时钟时序单位(晶振周期/拍节、状态、机器周期、指令周期):

2、单片机最小系统组成5部分:单片机、晶振电路、复位电路、电源电路、下载电路

3、单片机引脚解释:单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

⒈ 电源: 
⑴ VCC - 芯片电源,接+5V;
⑵ VSS - 接地端;
⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,
⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲
① ALE功能:用来锁存P0口送出的低8位地址
② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线
80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

一、中断简介:

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

!!注意:程序中涉及到中断时,这幅图非常有用,对中断的初始化基本就要安照这个图中从左到右进行寄存器的设置。这样中断才会工作。

2、中断寄存器

(1)定时器控制寄存器TCON:高位才与定时器有关,低位是外部中断相关的

IT0:外部中断0触发方式控制位。当IT0=0时,为电平触发方式(低电平有效)。当IT0=1时,为边沿触发方式(下降沿有效)。
IE0:外部中断0中断请求标志位。Cpu检测到外部中断引脚存在中断请求信号时,硬件自动将IE0置1。注意:当IT0选择为边沿触发时,当CPU响应此中断时由硬件将IE0位清零。若IT0选择位电平触发时,则需要在中断服务程序中由软件将IE0清零。
IT1:外部中断1触发方式控制位。同上
IE1:外部中断1中断请求标志位。同上
TR0、TR1是对定时器0/1进行启动控制的
TF0:定时/计数器T0溢出中断请求标志位。当启动T0计数以后,T0从初值开始加1计数,计数器计数到最高位产生溢出时,由硬件自动将TF0置1,并向CPU发中断请求。当CPU响应此中断时,由硬件将TF0位清零。
TF1:定时/计数器T1溢出中断请求标志位。同上 

(2)串行口控制寄存器SCON

SM0、SM1:串行口工作方式选择位:

SM2:多级通信控制位。只有当串口工作与方式2/3时,该位才有意义。注意:若SM2=1,则串行口工作与方式2/3,此时只有当接收的第9位数据等于1,即RB8=1时,才将8位数据送入SUBF中去,并由硬件置RI=1产生中断请求,否则将接收的8位数据丢弃。然而当SM2=0时,不管接受的第9数据位为0/1,都将前8位数据送入SBUF,并使RI=1产生中断请求。
REN:允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
TB8:在方式2或方式3中,是发送数据的第9位,可以用用户软件设定。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用到。
RB8:在方式2或方式3中,是接收到数据的第9位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
TI:发送中断标志位。在方式0时,当串行发送第8位数据进入缓冲区SBUF时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
RI:接收中断标志位。在方式0时,当串行接收完第8位数据时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

(3)中断允许寄存器IE:

EX0:外部中断0允许位;//值为0,禁止中断,值为1,允许中断。下面几个都是一样的。
ET0:定时/计数器T0中断允许位; 
EX1:外部中断0允许位;
ET1:定时/计数器T1中断允许位;
ES: 串行口中断允许位;
EA :CPU中断允许(总允许)位。 

(4)中断优先级控制寄存器IP:

PS:串行口优先级控制位;1:高优先级,0:低优先级
PT0/PT1:定时器/计数器0/1中断优先级控制位;1:高优先级,0:低优先级 
PX0/PX1:外部中断管0/1中断优先级控制位;1:高优先级,0:低优先级

注: 默认中断优先级

(5)电源控制寄存器PCON:

SMOD:串行口波特率倍增位。在串口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。系统复位时,SMOD=0。

!!注意:如果以相同的波特率,用波特率加倍的方式比不加倍的方式计算的误差小。

二、定时器/计数器篇

1、定时器/计数器中断:用到的寄存器

(1)两个特殊功能寄存器TH0/TH1(高8位)和TL1/TL0(低8位)
(2)控制寄存器TCON(主要是高四位)

TF1:T1溢出中断请求标志位。
TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止
工作。
TF0:T0溢出中断请求标志位。
TR0:T0运行控制位。

(3)工作方式寄存器TMOD:高四位是定时器T1工作字段,低四位为T0的工作字段

(1)寄存器每位详解:

——寄存器中第三位 C/T 是定时或者计数模式选择位。值等于0时,计数脉冲来自CPU内部,计数脉冲频率为时钟信号频率的12分频(即一个机器周期),为定时模式;值等于1时,计数脉冲来自与p3.4或p3.5相接的外部频率,此时为计数模式。

——GATE是启动方式控制位,值为1,则定时器启动由TCON寄存器中的TR0/TR1位和芯片的引脚INT0或INT1共同控制(双保险)。而值为0,则只受TCON寄存器中的TR0/TR1位控制。
*
注:定时器初值计算方法:TC=M-(T/TCY),其中M:定时器/计数器的最大次数(与工作方式有关),T:我们需要定时器定时的时间。TCY:计数器计数脉冲的周期(晶振周期的12倍或者一个机器周期,若单片机晶振为12Mhz,则机器周期=((1/12Mhz)12=1us)。TC:定时器需要预置的初值,当然从公式中知当TC=0时,即从预置初值0开始计数,定时时间T最大,最大TMAX为TCTCY。

**从而可以得出各种工作方式定时器的最大定时时间为:
工作方式0:Tmax=2^13 * 1us=8.192ms //其中的1us就是计数脉冲周期(机器周期)
工作方式1:Tmax=2^16 * 1us=65.536ms
工作方式2/3:Tmax=2^8 * 1us=0.256ms

所以在编程时,我们选择定时器时,要看是否在当前所选工作方式的量程内,不要出现这种情况:你要我1ms进入一次定时中断,而你又选择的工作方式2/3,这样超过它的量程。这样是不行的。
**

【注】:在编程中定时器/计数器的使用方法:
1.对TMOD赋值,以确定T0和T1的工作方式。
2.根据要定时的时间,由公式计算初值,并将其写入TH0、TL0或TH1、TL1。
3.	中断方式时,打开定时器中断(ET0/ET1)及总中断EA。
4.	使TR0或TR1置位,启动定时/计数器定时或计数

三、外部中断篇

1、外部中断:用到的控制寄存器TCON(主要是低四位,高四位与定时器有关):

1、IT0:外部中断0触发方式控制位。当IT0=0时,为电平触发方式(低电平有效)。当IT0=1时,为边沿触发方式(下降沿有效)。
2、IE0:外部中断0中断请求标志位。Cpu检测到外部中断引脚存在中断请求信号时,硬件自动将IE0置1。注意:当IT0选择为边沿触发时,当CPU响应此中断时由硬件将IE0位清零。若IT0选择位电平触发时,则需要在中断服务程序中由软件将IE0清零。
3、IT1:外部中断1触发方式控制位。同上
4、IE1:外部中断1中断请求标志位。同上

注:编程时外部中断的使用方法
1、设置IT0或IT1确定外部中断的触发方式;

2、打开外部中断(EX0/EX1)及总中断EA。

四、串口中断篇

1、串口中断:用到的相关寄存器

(1)串口控制寄存器SCON,每位具体说明见前面分析。

(2)电源控制寄存器PCON,分析见前面。

注意:
1、 方式0总共8位(8位数据位);方式1总共10位(1位起始位、8位数据位、1位停止位);方式2和方式3总共11位(1位起始位、9位数据位(包括有一位TB8或RB8,需提前置好)、1位停止位)。如果有停止位,在串口调试助手中就要选择!
2、 串口中双方通信,就要确定好一个传送速率(波特率),波特率的计算要涉及到定时器的参与。所以在串口中断编程中既要设置串口的寄存器,还要设置选择的定时器的寄存器。
3、 一个小知识:除了往SBUF中发送数据给串口外,还可以使用printf的方式(前提引入#include<stdio.h>的头文件)

4、 编程操作流程:

a)	设置串口的工作方式(SCON)。
b)	设置计数器工作方式(TMOD)。
c)	确定波特率是否加倍(PCON)。
d)	根据波特率的计算公式,求出定时器/计数器的计数初值(TH0、TL0或TH1、TL1)。

5、 中断方式时,打开定时器中断(ET0/ET1)及总中断EA。
6、 使TR0或TR1置位,启动定时/计数器定时或计数。

实例

注:上图中,因为定时器工作在方式2/方式3时,是8位自动重装,通常对TLX、THX初始化时装入相同的定时器/计数器初值,以便以相同的初值进行连续计数/定时。

2、波特率计算方法:

串口通信中引入:波特率的计算与串口的工作方式有关。

方式0的波特率 =  fosc/12   //(fosc为晶振频率)
方式2的波特率 =((2*SMOD)/64)· fosc 
方式1的波特率 =((2*SMOD)/32)·(T1溢出率)
方式3的波特率 =((2*SMOD)/32)·(T1溢出率)

T1 溢出率 = fosc /{12×(256-X)}   //X表示定时器/计数器1的计数初值。

注:当串行口工作工作于方式1或3时,通常以定时器/计数器1工作于方式2,即8位重装计数初值方式,作为串口工作于方式1或3的波特率发生器。

溢出率为溢出周期的倒数。若计数初值为X(即从X开始计数),那么以工作在方式2的8位自动重装计数,则可以计数256,从而需要计数的位数为:256-X。这么多位数需要多少个机器周期呢? 1/fosc易知为一个晶振周期(也就是拍节),12/fosc也就是一个机器周期(因为单片机中一个机器周期为12个晶振周期)。所以溢出的周期为:(12/fosc)*(256-X)。溢出率也就出来了。

通常使用定时器/计数器1工作与方式2作为波特率发生器,串口工作与方式1。是因为该方式具有自动重装计数初值功能,可避免反复重装计数初值带来的定时误差,使波特率更加稳定。按上述公式可以推得计数初值为:X=2^8-((fosc *2^SOMD)/(32 * 12 * 波特率))

小知识点:
无源和有源蜂鸣器的区别:

无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。
正是根据无源蜂鸣器的这一特点,可以通过控制给蜂鸣器引脚输入高低电平的时间,使蜂鸣器发出“哆啦咪法索拉稀”的声音,而有源蜂鸣器则不可以控制音频。

CH340芯片–>用于usb转串口;DS1302–低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。

未完待续!。。。。。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服