MCS-51单片机

MCS-51中断系统:5个中断源(两个外部中断, 两个定时器, 一个串口),2个优先级

MCS-51 单片机的中断系统

中断相关概念

中断:当CPU正在处理某件事情时,单片机外部或内部发生的某一紧急事件请求CPU立即去处理,于是,CPU暂时中止当前的工作,转去处理这个紧急事件,待处理完毕后,再回到原来被中止的地方,继续原来的工作。

中断过程

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

中断响应和中断服务:CPU暂时中断当前的工作,转去处理事件B(B的优先级要高于A);

中断返回:待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A ;

中断源(中断请求源):能够向CPU发出中断申请的部件。

中断系统结构

MCS-51 单片机的中断系统

外部中断0和1:低电平或者脉冲下降沿时产生中断请求;

定时器/计数器0和1:计数值由FF变为00时产生中断请求;(定时功能:计数脉冲来源于片内;计数功能:计数脉冲来源于片外);

串行口:发送或者接受1字节数据时产生中断请求;

中断控制

4个特殊功能寄存器来实施中断控制:
  •   中断允许寄存器 IE
  •   中断优先级寄存器 IP
  •   定时/计数器及外部中断控制寄存器 TCON
  •   串口控制寄存器 SCON

中断允许寄存器 IE

MCS-51 单片机的中断系统

EA 中断允许总控制位。0禁止,1允许。

ES 串行中断允许控制位。0禁止,1允许。

ET1 定时计数器1中断允许控制位。0禁止,1允许。

EX1 外部中断1允许控制位。0禁止,1允许。

ET0 定时计数器0中断允许控制位。0禁止,1允许。

EX0 外部中断0允许控制位。0禁止,1允许。

中断优先级寄存器 IP

MCS-51 单片机的中断系统

PX0 外部中断0的优先级控制位。1为高,0为低

PT0 定时中断0的优先级控制位。1为高,0为低

PX1 外部中断1的优先级控制位。1为高,0为低

PT1 定时中断0的优先级控制位。1为高,0为低

PS 串行中断的优先级控制位。1为高,0为低

串行口控制寄存器 SCON

MCS-51 单片机的中断系统

TI:串口发送中断标志,响应中断时用软件将TI标志清零

RI:串口接收中断标志,响应中断时用软件将RI标志清零

定时/计数器的控制寄存器 TCON

MCS-51 单片机的中断系统

外部中断触发方式位 IT0、IT1(ITx)

ITx = 0 低电平触发,响应中断后IEx不自动清0
ITx = 1 脉冲下降沿触发,响应中断后IEx自动清0

外部中断请求0/1的中断请求标志位IE0、IE1

定时器/计数器T0/T1的溢出中断请求标志位TF0/TF1(TFx)

启动T0/T1计数后,从初值加1计数,直到最高位产生溢出时,硬件将TFx置“1”,向CPU请求中断。 响应中断后TFx自动清0;

TR0,TR1与中断无关,仅与定时器/计数器T0/T1有关;

中断响应

中断响应就是CPU对中断源发出的中断请求做出的响应。

中断响应条件

CPU开中断,即中断允许寄存器IE中的中断允许总控制位EA = 1;
中断源发出中断请求;
中断源的中断允许位为1;
没有同级或者高级的优先级中断正在执行;

中断响应的过程

由硬件根据中断源的类型自动生成一条长调用指令LCALL addr16。
CPU执行LCALL addr16。

中断响应的时间

响应时间在3~8个机器周期之内;
最短响应时间:查询中断请求标志位(T)+LCALL(2T);

中断响应的过程

将相应优先级状态触发器置1(阻断后来同级或低级中断 )
执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC)
执行中断服务程序
PS:编写中断服务程序注意:中断服务程序入口存放指令LJMP或AJMP;现场保护与现场恢复。

中断返回

最后指令为RETI,功能为:

将断点从堆栈弹送PC,CPU从原断点继续执行
将相应优先级状态触发器清0,恢复原来工作状态

8051中断程序设计

中断服务程序基本流程

1. 关中断:为了防止此时有高一级的中断进入,以免现场保护的执行过程被中断。

2. 现场保护:所谓现场是指中断时刻单片机中某些寄存器和存储器单元中的数据或状态。为了不让中断服务程序的执行破坏这数据或状态,以免中断返回后影响主程序的运行,需要将他们送入堆栈保存起来。

3. 开中断:为了允许有更高级的中断进入。这样一来,除了现场保护和现场恢复外,中断处理的过程仍允许中断嵌套的功能。

4. 中断处理

5. 关中断:为了防止此时有高一级的中断进入,以免现场恢复的执行过程被中断。

6. 现场恢复:中断处理结束后,在返回主程序前,把保存的现场的内容从堆栈中弹出,以恢复那些寄存器和存储单元中的原有内容

7. 开中断:为了允许有更高级的中断进入。现场恢复后,仍允许中断嵌套的功能。

8. 中断返回:必须是返回指令RETI。CPU执行完这条指令后,把响应中断时所置“1”的优先级状态触发器清“0”,然后从堆栈中弹出栈顶上的两个字节的断点地址送到程序计数器PC,弹出的第一个字节送入PCH,第二个字节送入PCL,CPU从断点处重新执行被中断的主程序。

实例

ORG 0000H ;程序开始
LJMP START ;= LJMP 1000H
ORG 0003H ;外部中断0入口地址

LJMP INT
ORG 1000H ;主程序入口
START: MOV P1, #0AAH ; #0AAH=10101010B
SETB EX0 ;允许外部中断0
SETB PX0 ;设置外部中断0为高优先级
SETB IT0 ;设置外部中断0为脉冲下降沿触发
SETB EA ;开中断
SJMP $ ;原地跳转,等待中断

INT: CLR EA ;关中断
PUSH PSW ;现场保护
PUSH ACC ;
SETB EA ;开中断

CPL A ;对累加器A按位取反
MOV P1, A ;累加器A值送P1端口

CLR EA ;关中断
POP ACC ;现场保护
POP PSW ;
SETB EA ;开中断
RETI ;
```

本文转自:博客园 - Ryanjie,转载此文目的在于传递更多信息,版权归原作者所有。
原文链接:https://www.cnblogs.com/ryanjan/p/8719295.html

围观 405

8051是MCS-51系列单片机的典型产品,其特性与我们实验的STC89C52RC完全相同,这里以8051为例简介一下单片机的基本知识。

8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:

中央处理器:

中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。

MCS-51单片机内部结构
图1

数据存储器(RAM):

8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。

程序存储器(ROM):

8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。

定时/计数器(ROM):

8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。

并行输入输出(I/O)口:

8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。

全双工串行口:

8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。

中断系统:

8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。

时钟电路:

8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。

单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与 数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的 MCS-96系列单片机则采用普林斯顿结构。

下图是MCS-51系列单片机的内部结构示意图。

MCS-51单片机内部结构
图2

MCS-51的引脚说明:

MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源 和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:

MCS-51单片机内部结构
图3

·Pin20:接地脚。

·Pin40:正电源脚,正常工作或对片内EPROM烧写程序时,接+5V电源。

·Pin19:时钟XTAL1脚,片内振荡电路的输入端。

·Pin18:时钟XTAL2脚,片内振荡电路的输出端。

8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12MHz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。

MCS-51单片机内部结构
图4

·输入输出(I/O)引脚:

Pin39-Pin32为P0.0-P0.7输入输出脚,Pin1-Pin1为P1.0-P1.7输入输出脚,Pin21-Pin28为P2.0-P2.7输入输出脚,Pin10-Pin17为P3.0-P3.7输入输出脚,这些输入输出脚的功能说明将在以下内容阐述。

·Pin9:RESET/Vpd复位信号复用脚:

当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向 0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址 开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态如下表:

8051的复位方式可以是自动复位,也可以是手动复位,见下图。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。

MCS-51单片机内部结构
图5

MCS-51单片机内部结构
图6

·Pin30:ALE/nPROG当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一 个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一 个脉冲。

如果单片机是EPROM,在编程其间,将用于输入编程脉冲。

·Pin29: nPESN当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。

·Pin31:EA/Vpp程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于 4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内 部无程序存储器的8031,EA端必须接地。

在编程时,EA/Vpp脚还需加上21V的编程电压。

转自:顶顶顶顶

围观 244

1.前言

MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间。

MCS-51单片机在物理结构上有四个存储空间

1、片内程序存储器(片内ROM)
2、片外程序存储器(片外ROM)
3、片内数据存储器(片内RAM)
4、片外数据存储器(片外RAM)

在逻辑上(即从用户的角度上)MCS-51单片机有三个存储空间

1、片内外统一编址的64K的程序存储器(ROM)地址空间(MOVC)
2、256B的片内数据存储器(片内RAM)的地址空间(MOV)
3、以及64K片外数据存储器(片外RAM)的地址空间(MOVX)

注:在访问三个不同的逻辑空间时,应采用不同形式的指令以产生不同的存储器空间的选通信号。

2.存储空间划分

2.1 片内RAM

MCS-51单片机存储地址空间划分
图:片内AM地址空间划分

地址范围是00H到7FH (52系列延伸到FFH),为8位地址,所以最大可寻址的范围为256个单元地址

• 00H到1FH
共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7。
对此区域,可以使用 R0~R7 来操作,代码短捷,但是,只有一个当前工作区是可以这样读写的。
对此区域,也可以使用字节地址,来读写。

• 20H-2FH
共16字节,是位寻址区,共有128个“位”,位地址:00~7FH。
此区域,也可按照字节寻址,来读写。

• 30H-7FH
没有什么特色,只进行字节寻址。

• 80H-FFH
共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写。
(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写)。

注:对上述空间读写,必须使用 MOV 指令。

2.2 片外RAM

片外RAM的地址范围是0000H到FFFFH,容量即为64KB。对片外RAM读写,必须使用 MOVX 指令。

对片外RAM采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。

也就是说在寻址片外RAM时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。

2.3 ROM

ROM的地址范围是0000H到FFFFH,容量即为64KB,地址长度16位,作用是 存放程序及程序运行时所需的常数。

其中0000~0FFFH,即4K,在片内,其它在片外。

EA = 1,寻址内部ROM;EA = 0,寻址外部ROM
对ROM读出,必须使用 MOVC 指令。

3. 参考文献

[1] http://blog.163.com/asm_c/blog/static/24820311320112208130269/

转自: jasonactions

围观 693

学习内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份:

计算机的五个组成部份:

运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行;

控制器:是计算机的控制指挥部件,使计算机各部份能自动协调的工作;

存储器:用于存放程序和数据;(又分为内存储器和外存储器,内存储器就如我们电脑的硬盘,外存储器就如我们的U盘)

输入设备:用于将程序和数据输入到计算机(例如我们电脑的键盘、扫描仪);

输出设备:输出设备用于把计算机数据计算或加工的结果以用户需要的形式显示或保存(例如我们的打印机)。

注:
1、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。
2、通常把外存储器、输入设备和输出设备合在一起称之为计算机的外部设备。
51单片机的内部又有些什么部件组成呢?

下图就是我们要研究学习的对象,51单片机结构图了。大家看看图,中间的一条双横线就是51单片机的内部总线了。其它的部件都是通过内部的总线与CPU相联接的,在第一节课时我们已跟大家讲述过,8051单片机是总线结构的。下面我们就51单片机内部的单个部件与大家进行讲解。

mcs-51单片机是由哪些部分组成的?

中央处理器(CPU):

刚跟大家讲过,需要提醒的是的CPU能处理8位二进制数或代码。CPU是单片机的主要核心部件,在CPU里面包含了运算器、控制器以及若干寄存器等部件给成。

内部数据存储器(RAM):

MCS-51单片机芯片共有256个RAM单元,其中后128单元被专用寄存器占用(稍后我们详解),能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00H~FFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。

内部程序存储器(ROM):

在前面也已讲过,MCS-51内部有4KB/8KB字节的ROM(51系列为4KB,51系列为8KB),用于存放程序、原始数据或表格。因此称之为程序存储器,简称内部RAM。地址范围为0000H~FFFFH(64KB)。

定时器/计数器

51系列共有2个16位的定时器/计数器(52系列共有3个16位的定时器/计数器),以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。

并行I/O口

MCS-51共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。具体功能在后面章节中将会详细论述。

串行口

MCS-51有一个可编程的全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。

中断控制系统

MCS-51单片机的中断功能较强,以满足不同控制应用的需要。51系列有5个中断源(52系列有6个中断源),即外中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级别,优先级别的设置我们也将在后面进行详细的讲解。

定时与控制部件

MCS-51单片机内部有一个高增益的反相放大器,基输入端为XTAL1输出端为XTAL2。MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。

转自: 快易购

围观 506

布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。

在物理结构上,MCS-51单片机有一个布尔处理机,它以进位标志做为累加位,以内部RAM可寻址的128个为存储位。

既然有布尔处理机功能,所以也就有相应的布尔操作指令集,下面我们分别谈论。

[1]. 位传送指令

位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。

MOV C,bit ;bit→CY,某位数据送CY
MOV bit,C ;CY→bit,CY数据送某位

[2]. 位置位复位指令

这些指令对CY及可寻址位进行置位或复位操作,共有四条指令。

CLR C ; 0→CY,清CY

CLR bit ; 0→bit,清某一位

SETB C ; 1→CY,置位CY

SETB bit ; 1→bit,置位某一位

[3]. 位运算指令

位运算都是逻辑运算,有与、或、非三种指令,共六条。

ANL C,bit ;(CY)∧(bit)→CY

ANL C,/bit ;(CY)∧( bit)→CY

ORL C,bit ;(CY)∨(bit)→CY

ORL C,/bit ;(CY)∧( /bit)→CY

CPL C ;(/bit )→CY

CPL bit ;(/bit )→bir

[4].位控制转移指令

位控制转移指令是以位的状态作为实现程序转移的判断条件,介绍如下:

JC rel ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。

JNC rel ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。

JB bit, rel ; 位状态为1转移。

JNB bit, rel ; 位状态为0转移。

JBC bit, rel ; 位状态为1转移,并使该位清“0”。

后三条指令都是三字节指令,如果条件满足,(PC)+3+rel→PC,否则程序往下执行,(PC)+3→PC。

整理自: eeworld.com

围观 547
订阅 RSS - MCS-51单片机