MCS-51系列单片机的总体介绍
MCS-51系列单片机是intel公司才采用HMOS技术制造的8位高档微机系列产品。
MCS-51系列单片机特性见表
型号 性能 | 8051 | 80C51 | 8751 | 8031 | 80C31 | 8052 | 8032 |
程序存储器 | 4KB ROM | 4KB ROM | 4KB EPROM | ―― | ―― | 8KB ROM | ―― |
数据存储器 | 128B | 128B | 128B | 128B | 128B | 256B | 256B |
程序存储器扩展 | 64KB | 64KB | 64KB | 64KB | 64KB | 64KB | 64KB |
数据存储器扩展 | 64KB | 64KB | 64KB | 64KB | 64KB | 64KB | 64KB |
最高时钟频率 | 12MHZ | 12MHZ | 12MHZ | 12MHZ | 12MHZ | 12MHZ | 12MHZ |
16位定时/计数器 | 2 | 2 | 2 | 2 | 2 | 3 | 3 |
并行I/O线 | 32 | 32 | 32 | 32 | 32 | 32 | 32 |
串行I/O线 | 同步方式或异步方式 |
中断线 | 5 | 5 | 5 | 5 | 5 | 6 | 6 |
单片机内部结构分析
80C51的内部结构示意图
从图中可以看到,在一个80C51单片机内部有以下一些功能部件:
● 一个8位CPU,用来运算、控制。
● 片内数据存储器RAM,对于51系列单片机而言,容量是128字节。
● 片内程序存储器ROM,对于89C51单片机而言,容量是4K(4096个单元)。
● 4个8位的并行I/O口,分别是P0、P1、P2、P3。
● 2个16位定时/计数器。
● 中断结构。
● 一个可编程全双工通用异步接收发送器UART。
● 一个片内振荡器用于时钟的产生。
● 可寻址64KB外部程序存储器和外部数据存储器的总线扩展结构。
80C51CPU的内部结构与功能。
1.运算器
80C51CPU中的运算器主要包括一个可以进行算术运算和逻辑运算的ALU(算术和逻辑运算单元)、8位暂存器TMP1和TMP2、8位累加器ACC、寄存器B、以及程序状态字PSW等。其中累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。
2.B-8位寄存器
一般情况下,可以做为通用的寄存器来用,但是,在执行乘法和除法运算结时。B就参与其中,存放运算的一个操作数和运算后的一个结果。
3.PSW程序状态字
这是一个八位寄存器,用来存放当前有关指令执行结果的状态标志,因此我们可以了解CPU的当前状态,并作出相应的处理。
程序状态字PSW的各脚功能:
位 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
含义 | CY | AC | F0 | RS1 | RS0 | OV | ――― | P |
各位的功能如下:
(1) CY:进位标志。80C51中的运算器是一种8位的运算器。8位运算器只能表示0~255。如果做加法,两数相加可能会超过255。这样最高位就会丢失,造成运算错误。为解决这个问题,设置一个进位标志。如果运算时超过了255,把最高位就进到这里来,这样就可以得到正确的结果了。
例:78H+97H(01111000+10010111)结果是10F,即100001111一共9位,但是存数的单元只能放下8位,也就是00001111。这样,结果就变成了78H+97H=0FH,显然不对,因此设置了CY位,在运算后,将最高位送到CY。只要在程序中检查CY是1还是0,就能知道结果究竟是0FH还是10FH,避免出错。
(2) AC:半进位标志。
例:57H+3AH(01010111+00111010)结果是91H,即10010001。就整个数而言,并没有产生溢出,所以CY=0。但是这个运算的低4位相加(7+A)却产生了进位,因此,运算之后AC=1。
(3) F0:用户标志位:由编程人员决定什么时候用,什么时候不用。
(4) RS1、RS0:工作寄存器组选择位。
(5) 0V:溢出标志位。
(6) P:奇偶校验位。它用来表示ALU运算结果中二进制数位1的个数的奇偶性。若为奇数,则P=1,否则为0。
例:运算结果是78H(01111000),显然1的个数为偶数,所以P=0。
4.DPTR(DPH、DPL)
由两个8位寄存器DPH和DPL组成16位的寄存器DPTR称之为数据指针,可以用它来访问外部数据存储器中的任一单元。如果用不到这一功能,也可以作为通用寄存器使用。
5.SP――堆盏指针
首先介绍一下堆盏的概念。日常生活中有这样的现象,家里洗的碗,一只一只摞起来,最后洗的碗放在最上面,而最早洗的碗则放在最下面。取时正好相反,先从最上面取,这种现象用一句话来概括:先进后出,后进先出。这种现象在很多场合都有,比如在建筑工地上堆放的材料,仓库里放的货物等,都遵循先进后出,后进先出的规律。
在单片机中,也可以在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规律就是先进后出,后进先出,称之为堆盏。为什么要这样来存放数据呢?存储器本身不是可以按地址来存放数据吗?知道了地址的确就可以知道里面的内容。但如果需要存放一批数据,每一个数据都需要记住其所在的地址单元,比较麻烦。如果规定数据一定是一个接一个地存放,那么只要知道第一个数据所在单元的地址就可以了。
80C51单片机是在内存(RAM)中划一块空间用于堆盏。但是用内存那一块不好确定,因为80C51是一种通用的单片机,做不同的项目时实际需求各不相同,有的需要多一些堆盏,而有的工作则不需要那么多,所以怎样分配都不合适。如何来解决这个问题?分不好就不分了,把分配的权利交给用户(单片机开发者),根据项目的需要去确定所以80C51单片机堆盏的位置是可以变化的,而这种变话体现在SP中值的变化。如果让SP的值等于27H,相当于是一个指针指向27H单元,同样,只要把SP单元中的数据改成其它值,那么这个区域在RAM中的位置马上就改变了。比如把SP中的值改为5FH,那么堆盏就到了RAM区后面的部分,程序中只要改变SP的值即可,很方便。实际的80C51单片机中,堆盏指针所指的位置并非就是数据存放的位置,而是数据存放的前一个位置。例如开始时指针是指向27H单元,那么在进行堆盏操作时,第一个存入数据的位置是28H单元,而不是27H单元,出现这种情况的原因与堆盏指令执行的过程有关,以后将在学习堆盏命令时会学到。
从上图还可以看到,图中有一些如TCON、TH1、TL1等,在单片机中有一些独立的存储单元用来控制这些部件,这些存储单元被称为特殊功能寄存器(SFR)。何谓特殊功能,就是指这些寄存器里面的内容是有特定含义的,不可以随便放数据。例如,有段程序中能这样写 MOV R7,#255,其它程序段里也许会出现MOV R7,#100之类的指令,即R7中可以送入任意数而不必但心出现问题。这类寄存器本身没有特定的用途,它相当于一个货物的中转站,在其中可以放任意内容。而指令MOV P1,#0FEH中的数0FE是有特定含义的,它取决于硬件及所要完成的任务。如要让P1.0所接的LED亮而其P1口其它引脚所接的LED不亮,就一定要送这个数到P1去,也就是说P1这一类的寄存器不能作为中转站来使用,送入其中的数是有特定的含义,称之为特殊功能寄存器.
特殊功能寄存器表
符号 | 地址 | 功能介绍 | 符号 | 地址 | 功能介绍 |
B | F0H | B寄存器 | TL1 | 8BH | 定时/计数器0(高8位) |
ACC | E0H | 累加器 | TL0 | 8AH | 定时/计数器0(低8位) |
PSW | D0H | 程序状态字 | TMOD | 89H | 定时/计数器方式控制寄存器 |
IP | B8H | 中断优先级控制寄存器 |
P3 | B0H | P3口锁存器 | TCON | 88H | 定时/计数器控制寄存器 |
IE | A8H | 中断允许控制寄存器 | DPH | 83H | 数据地址指针(高8位) |
P2 | A0H | P2口锁存器 | DPL | 82H | 数据地址指针(低8位) |
SBUF | 99H | 串行口锁存器 | SP | 81H | 堆盏指针 |
P1 | 90H | P1口锁存器 | P0 | 80H | P0口锁存器 |
TH1 | 8DH | 定时/计数器1(高8位) | PCON | 87H | 电源控制寄存器 |
TH0 | 8CH | 定时/计数器1(低8位) | | | |
6.控制器
80C51CPU中的控制器包括程序计数器PC、指令寄存器、制令译码器、振荡器和定时电路等。其中PC共有16位,因此,80C51单片机一共可以对16为地址线进行管理,即80C51单片机可以对64KB的程序存储器(ROM)进行直接寻址。
控制器的大部分功能对单片机的使用者来说是不可的,所以这里不作详细介绍了。
7.并行I/O口
80C51的32根I/O线分为4个双向并行口P0~P3。每一根I/O线都能独立地用作输入或输出;每一根I/O线均包含锁存器、输出驱动器和输入缓冲器(三态门)
P0口受内部控制信号的控制,可分别切换地址/数据总线、I/O口2种工作状态。
P1口只有I/O口一种工作状态。
P2口受内部控制信号的控制,可以有地址总线、I/O口2种工作状态。
P3口除了用作一般I/O口外,每一根线都可执行与口功能无关的第2种输入/输出功能。
8.串行I/O口
80C51有串行口,通过异步通信方式(UART)与串行传送信息的外部设备相连接,或用于通过标准的异步通信协议进行全双工通信。
9.定时/计数器
80C51内的可编程定时/计数器由控制位C/T来选择其功能。作为定时器,每个机器周期加1(计数频率为时钟频率的1/12);作为计数器时,对应外部事件脉冲的负沿加1(最高计数频率为时钟频率的1/24)。
10.时钟
80C51内部有晶振感抗振荡器。其外接石英晶体形成谐振回路,产生时钟信号。若用外部时钟源,则XTAL1接地,XTAL2接外部时钟。片内时钟发生器将振荡器信号2分频,为芯片提供2相时钟信号。一个机器周期由6个时钟状态组成,每个时钟状态又由2个振荡脉冲组成,因此一个机器周期包括12个振荡脉冲。
80C51基本特性及引脚定义
80C51是8位(数据线是8位)单片机,片内有256BRAM及4KBROM。中央处理器单元实现运算和控制功能。内部数据存储器共256个单元,访问它们的地址是00H~FFH,其中用户使用前128个单元(00H~7FH),后128个单元被特殊功能寄存器占用。内部的2个16位定时/计数器用作定时或计数。并可用定时或计数的结果实现控制功能。80C51有4个8位并行口(P0、P1、P2、P3),用以实现地址输出及数据输入/输出。片内还有一个时钟振荡器,外部只需接入石英晶体即可振荡。
80C51采用40引脚双列直插式封装(DIP)方式。
80C51的引脚排列及逻辑符号
80C51的引脚定义及功能
1.主电源引脚VCC和VSS
VCC:电源端。工作电源和编程校验(+5V)。
VSS:接地端。
2.时钟振荡电路引脚XTAL1和XTAL2
XTAL1和XTAL2分别用作晶体振荡器电路的反相器输入和输出端。在使用内部振荡电路时,这两个端子用来外接石英晶体,振荡频率为晶振频率,振荡信号送至内部时钟电路产生时钟脉冲信号。若采用外部振荡电路,则XTAL2用于输入外部振荡脉冲,该信号直接送至内部时钟电路,而XTAL1必须接地。
3.控制信号引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
RST/VPD:为复位信号输入端。当RST端保持2个机器周期(24个时钟周期)以上的高电平时,使单片机完成了复位操作。第二功能VPD为内部RAM的备用电源输入端。主电源一旦发生断电,降到一定低电压值时,可通过VPD为单片机内部RAM提供电源,以保护片内RAM中的信息不丢失,使上电后能继续正常运行。
ALE/PROG:ALE为地址锁存允许信号。在访问外部存储器时,ALE用来锁存P0扩展地址低8位的地址信号;在不访问外部存储器时,ALE也以时钟振荡频率的1/6的固定速率输出,因而它又可用作外部定时或其它需要。但是,在遇到访问外部数据存储器时,会丢失一个ALE脉冲。ALE能驱动8个LSTTL门输入。第2功能 PROG是内部ROM编程时的编程脉冲输入端。
PSEN:外部程序存储器ROM的读选通信号。当访问外部ROM时,PSEN产生负脉冲作为外部ROM的选通信号;而在访问外部数据RAM或片内ROM时,不会产生有效的PSEN信号。PSEN可驱动8个LSTTL门输入端。
EA/VPP:访问外部程序存储器控制信号。对80C51而言,它们的片内有4KB的程序存储器,当EA为高电平时,CPU访问片内程序存储器有两种情况:第1种是,访问地址空间在0~4KB范围内,CPU访问片内程序存储器;第2种是,访问的地址超出4KB时,CPU将自动执行外部程序存储器的程序,即访问外部ROM。当EA接地时,只能访问外部ROM。第2种功能VPP为编程电源输入。
4.4个8位I/O端口P0、P1、P2和P3
P0口(P0。0~P0。7)是一个8位漏极开路型的双向I/O口。第2功能是在访问外部存储器时,分别提供低8位地址线和8位双向数据总线。在对片内ROM进行编程和校验时,P0口用于数据的输入和输出。
P1口(P1。0~P1。7):是一个内部带提升电阻的准双向I/O口。在对片内ROM编程校验时,P1口用于接收低8位地址信号。
P2口(P2。0~P2。7):是一个内部带提升电阻的8位准双向I/O口。第2功能是在访问外部存储器时,输出高8位地址信号。在对片内ROM进行编程和校验时,P2口用作接收高8位地址和控制信号。
P3口(P3。0~P3。7):是一个内部带提升电阻的8位准双向I/O口。在系统中,这8个引脚都有各自的第2功能。见下表
P3口的各引脚 | 第2功能 |
P3。0 | RXD(串行口输入) |
P3。1 | TXD(串行口输出) |
P3。2 | INT0(外部中断0输入) |
P3。3 | INT1(外部中断1输入) |
P3。4 | T0(定时/计数器的外部输入) |
P3。5 | T1(定时/计数器的外部输入) |
P3。6 | WR(片外数据存储器写选通控制输出) |
P3。7 | RD(片外数据存储器读选通控制输出) |
80C51的存储器和寄存器
MCS-51系列单片机内集成有一定数量的程序存储器和数据存储器。对80C51来说,片内有256B的数据存储器及4KB的程序存储器。
1.程序存储器
程序存储器用于存放编写好的程序或常数。EA引脚接高电平,即可从内部程序存储器中(4KB)读取指令,超过4KB后,CPU自动转向外部ROM执行程序;EA引脚接低电平,则所有的读取指令操作均在外部ROM中。读取程序存储器中的常数表格用MOVC指令。
程序存储器的寻址空间为64KB,其中有7个单元具有特殊功能(中断入口地址),见下表
中断入口地址
地址 | 事件名称 |
0000H | 系统复位 |
0003H | 外部中断0 |
000BH | 定时器0溢出中断 |
0013H | 外部中断1 |
001BH | 定时器1溢出中断 |
0023H | 串行口中断 |
80C51被复位后,程序计数器PC的内容为0000H,因此系统必须从0000H单元开始取指令执行程序。一般在该单元中存入一条跳转指令,而用户设计的程序从跳转后的地址开始存放。AT89C51的内部程序存储器(4KB ROM)足可存放2000条双字节指令,AT89C52就更不用说了,因此很少用外部扩展ROM,也就用不到MOVX这条指令。
2. 内部数据存储器
数据存储器分为外部数据存储器和内部数据存储器。访问内部数据存储器用MOV指令,访问外部数据存储器用MOVX指令。
80C51的内部数据存储器分成2块:00H~7FH和80H~FFH。后128B用作特殊功能寄存器(SFR)空间,21个特殊功能寄存器离散分布在80H~FFH的地址空间内。具体请看(AT89C52内部寄存器一览表)
>
单片机教程,五系列(55讲)电子书全集下载论坛精选:
单片机学习,C51单片机入门经典30课 前言
http://bbs.huazhoucn.com/Topic.aspx?id=2694
单片机学习,C51单片机入门经典30课 第一课
http://bbs.huazhoucn.com/Topic.aspx?id=2695
单片机学习,C51单片机入门经典30课 第二课
http://bbs.huazhoucn.com/Topic.aspx?id=2696
单片机学习,C51单片机入门经典30课 第三课
http://bbs.huazhoucn.com/Topic.aspx?id=2697
单片机学习,C51单片机入门经典30课 第四课
http://bbs.huazhoucn.com/Topic.aspx?id=2698
单片机学习,C51单片机入门经典30课 第五课
http://bbs.huazhoucn.com/Topic.aspx?id=2699
单片机学习,C51单片机入门经典30课 第六课
http://bbs.huazhoucn.com/Topic.aspx?id=2700
单片机学习,C51单片机入门经典30课 第七课
http://bbs.huazhoucn.com/Topic.aspx?id=2701
单片机学习,C51单片机入门经典30课 第八课
http://bbs.huazhoucn.com/Topic.aspx?id=2702
单片机学习,C51单片机入门经典30课 第九课
http://bbs.huazhoucn.com/Topic.aspx?id=2703
单片机学习,C51单片机入门经典30课 第十课
http://bbs.huazhoucn.com/Topic.aspx?id=2704
单片机学习,C51单片机入门经典30课 第十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2705
单片机学习,C51单片机入门经典30课 第十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2706
单片机学习,C51单片机入门经典30课 第十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2707
单片机学习,C51单片机入门经典30课 第十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2708
单片机学习,C51单片机入门经典30课 第十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2709
单片机学习,C51单片机入门经典30课 第十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2710
单片机学习,C51单片机入门经典30课 第十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2711
单片机学习,C51单片机入门经典30课 第十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2712
单片机学习,C51单片机入门经典30课 第十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2713
单片机学习,C51单片机入门经典30课 第二十课
http://bbs.huazhoucn.com/Topic.aspx?id=2556
单片机学习,C51单片机入门经典30课 第二十一课
http://bbs.huazhoucn.com/Topic.aspx?id=2715
单片机学习,C51单片机入门经典30课 第二十二课
http://bbs.huazhoucn.com/Topic.aspx?id=2716
单片机学习,C51单片机入门经典30课 第二十三课
http://bbs.huazhoucn.com/Topic.aspx?id=2717
单片机学习,C51单片机入门经典30课 第二十四课
http://bbs.huazhoucn.com/Topic.aspx?id=2718
单片机学习,C51单片机入门经典30课 第二十五课
http://bbs.huazhoucn.com/Topic.aspx?id=2719
单片机学习,C51单片机入门经典30课 第二十六课
http://bbs.huazhoucn.com/Topic.aspx?id=2720
单片机学习,C51单片机入门经典30课 第二十七课
http://bbs.huazhoucn.com/Topic.aspx?id=2721
单片机学习,C51单片机入门经典30课 第二十八课
http://bbs.huazhoucn.com/Topic.aspx?id=2722
单片机学习,C51单片机入门经典30课 第二十九课
http://bbs.huazhoucn.com/Topic.aspx?id=2723
单片机学习,C51单片机入门经典30课 第三十课
http://bbs.huazhoucn.com/Topic.aspx?id=2724
单片机学习,C51单片机入门经典30课 附录
http://bbs.huazhoucn.com/Topic.aspx?id=2731