单片机原理及应用项目6:80C51单片机内部结构与实践

作者简介

马荣潇,男,银川科技学院计算机与人工智能学院,2022级计算机科学与技术9班本科生,单片机原理及应用课程第4组。

指导老师:王兴泽

电子邮件:2173393418@qq.com

个人CSDN主页  2201_75434908-CSDN博客

前言

本篇文章是参考《单片机原理及应用(c语言版)第2版》杨居义·编著教材 清华大学出版“ http://www.tup.tsinghua.edu.cn” 编写的笔记 。文章 罗静、李佳泰、张钰轩、张睿睿、马荣潇同学共同完成,其中罗静、张钰轩、张睿睿同学负责笔记总结 ,李佳泰同学负责整理,由马荣潇负责编写排版。

本文章由理论和实践两大部分组成是我们自己的一些总结,欢迎阅读指正!


 

一、工程知识:

1.80C51单片机的结构:

80C51单片机的结构图如图2-2所示。可以看出,在一块芯片上集成了一个微型计算机的主要部件。

80C51单片机包括以下几部分:

  (1)1个8位 CPU。

  (2)时钟电路(振荡电路和时序OSC)。

  (3)4KB程序存储器(ROM/EPROM/Flash),可扩展到64KB。

  (4)128B数据存储器RAM,可外扩展到64KB。

  (5)2个16位定时器/计数器。

  (6)64KB总线扩展控制电路。

  (7)4个8位并行I/O接口 P0~P3。

  (8)1个全双工异步串行 I/O接口。

(9)中断系统有5个中断源,其中包括2个优先级嵌套中断。

图2-2  80C51单片机的结构图

2.80C51单片机的组成:

80C51 单片机由 CPU、存储器、I/O口及 SFR(特殊功能寄存器)等组成,如图2-3所示。

图2-3  80C51单片机的组成

(1)80C51的CPU:

1、80C51有一个8位CPU,它是单片机的核心部件,也是计算机的控制指挥中心。同微型计算机CPU类似,80C51内部CPU由运算器和控制器两部分组成。

(1)运算器。运算器以算术逻辑部件(arithmetic logic unit,ALU)为核心,由暂存器1、暂存器 2、累加器(accumulator,ACC)、寄存器B及程序状态字(program status word,PSW)寄存器组成。它的主要任务是完成算术运算、逻辑运算、位运算和数据传送等操作,运算结果的状态由程序状态字寄存器保存。

(2)控制器。控制器由程序计数器(PC)、PC增1寄存器、指令寄存器(IR)、指令译码器(ID)、数据指针寄存器(DPTR)、堆栈指针(SP)缓冲器及定时控制电路等组成)它的主要任务是完成指挥控制工作,协调单片机各部分正常工作

(2)80C51的片内存储器:

80C51的片内存储器与一般微机的存储器配置不同。一般微机的ROM和RAM安排在同一空间的不同范围(称为普林斯顿结构)。而80C51单片机的存储器在物理上设计成程序存储器和数据存储器两个独立的空间(称为哈佛结构)。

3、80C51单片机的引脚及功能:   

80C51 单片机的封装是采用双列直插式(DIP)封装,引脚图如图所示、示意图如图所示。80C51的40个引脚及功能描述如下。

1)电源引脚

    (1)Vcc(第40脚):电源端,接+5V电源。   

    (2)Vss(第 20脚):接地端

图2-4  引脚图与示意图

2)时钟引脚

    (1) XTAL1(第19脚):晶体振荡器接入的一个引脚。采用外部时钟电路时,此引脚应接地。

    (2) XTAL2(第 18脚):晶体振荡器接入的另一个引脚。使用外部时钟时,此引脚应接

部时钟的输入端。        

 3)控制引脚

    (1)RST/Vpp(第9脚):复位信号输入引脚/备用电源输入引脚。当RST引脚保持两个机器周期的高电平后,就可以使80C51完成复位操作。该引脚的第二功能是VP,即备用电源的输人端.具有掉电保护功能。若在该引脚接+5V备用电源,在使用中若主电源v掉电,可保护片内RAM中的信息不丢失。

    (2)ALE/ PROG(第30脚):地址锁存允许信号输出引脚/编程脉冲输入引脚。在系统扩展时,ALE用于控制把P0引脚输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外.由于ALE是以晶振fose/6的固定频率输出的正脉冲(fosc代表振荡器的频率).因此。可作为外部时钟或外部定时脉冲使用。

该引脚的第二功能PROG是对8751内部4KBEPROM编程写入时,作为编程脉冲的输入端。

     (3) EA/VPP(第31脚):片外程序存储器地址允许输入信号引脚/编程电压输入信号引脚。(当EA接高电平时,CPU执行片内ROM指令,当PC值超过0FFFH时,将自动转去执行片外 ROM 指令;)当EA接低电平时,CPU只执行片外ROM指令。

该引脚的第二功能Vpp是对8751片内EPROM编程写人时,作为21V编程电压的输入端。

     (4)PSEN(第29脚):片外ROM读选通信号。在读片外 ROM时,PSEN为低电平(有效),以实现对片外ROM的读操作。

4)并行I/O引脚

    (1) P0.0~P0.7(第32~39脚):一般8位双向I/O口引脚或数据/地址总线低8位复用引脚。PO口引脚既可作为数据/地址总线使用,又可作为一般的I/O口使用。当CPU访问片外存储器时,P0口引脚分时先作为低8位地址总线,后作为双向数据总线,此时,PO口引脚就不能再作为一般I/O口使用。

    (2) P1.0~P1.7(第1~8脚):P1口引脚作为一般的8位准双向I/O口使用。

    (3) P2.0~P2.7(第21~28脚):一般8位准双向I/O口引脚或高8位地址总线引脚, P2口引脚即可作为一般的I/O口使用,也可作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址,可访问2=64KB的存储空间。

(4) P3.0~P3.7(第10~17脚):一般8位准双向I/O口引脚或第二功能引脚。P3口引脚除了作为一般的I/O口使用之外,每个引脚还具有第二功能。P3口的引脚都定义有第二功能,如表所示。

表2-1  P3口引脚与第二功能表


 

4SFR 简介:

     片内高128单元是SFR区,80C51共有21个SFR某中的11个(寄存器名以*开头)还具有位寻址功能,它们的字节地址能被8整除,即十六进制的地址码尾数为0或8如图所示:

表2-4  80C51 SFR中位地址分布表

 

1)运算器有关的特殊功能寄存器

1.累加器。累加器(Accumulator,ACC)为8位寄存器,是最常用的专用寄存器,用于向 ALU 提供操作数,因此,功能较多,地位重要。它即可用于存放操作数,也可用来存放运算的中间结果。80C51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器 。   

2.寄存B。寄存器B是一个8位寄存器,主要用于乘,除运算,也可以作为RAM的一个单元使用。

3.程序状态字。程序状态字(Program Status word,PSW)是一个8位寄存器,用于存放程序运行中的各种状态信息,作为程序查询或判断的条件。PSW有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则使用软件方法设定。PWS的各位状态可以专门指令进行测试,也可以用指令读出。PWS的定义如表所示,各位的定义及使用情况说明如下。

表2-5 80C51 PSW的各位定义表

①进位(借位)标志位:CY(PSW.7)。CY有两个功能,一是存位算术运算的进位(借位)标志,在做加法(减法)运时,如果操作结果的最高位有进位(借位),CY由硬件置1,否则清零;二是在进行位操作时,CY作为累加器C使用,可进行位传送、位与位的逻辑运算等位操作,会影响该标志位。

②辅助进位标志位:AC(PSW.6)。在进行加法(减法)运算中,低4位向高4位进位(借位)时,AC由硬件置1,否则AC位被清零。AC位常用于调整BCD码运算结果。

 ③用户标志位:F0(PSW.5)。F0是留给用户自己定义的标志位,可以根据自己的需要通过软件方法置位或复位F0,用以控制程序的转向。

 ④工作寄存器组选择位:RS1和RS0(PSW.4和PSW.3)。工作寄存器共有4组,对应关系如表2-6所示。RS1和RS0这两位的状态是由软件置1或清零来设置的,被选中的工作寄存器组即为当前工作寄存器组。

表2-6 工作寄存器组选择表

当单片机上电或复位后,RS1RS0=00,选中第0组。

⑤ 溢出标志位:OV(PSW.2)。在进行带符号数的算术运算时,如果运算结果超出了8位二进制数所能表示的符号数有效范围(-128~+127),就产生了溢出OV=1,表示运算结果错误;否则OV=0,即无溢出产生,表示运算结果正确。

⑥保留未用:F1(PSW.1)。

⑦奇偶标志位:P(PSW.0)。表明运算结果累加器A中内容的奇偶性。如果A中有奇数个1,则P置1,否则置0。凡是改变累加器A中内容的指令均会影响P标志位。P标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

2)指针有关的特殊功能寄存器。

   (1)数据指针。据指针寄存器(DPTR)为16位寄存器,用来存放16位地址。DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,DPH表示DPTR高8位字节,DPL表示DPTR低8位字节。DPTR通常在访问片外RAM或ROM存储器时作为地址指针使用,用间接寻址或变址寻址可对片外64KB范围的RAM或RONM数据进行操作。

  (2)堆栈指针。堆栈指针(StackPointe,SP)是一个8位寄存器,它总是指向栈顶80C51单片机在编程时常将堆栈设在片内RM30H~7FH处。堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。80C51单片机系统复位后,SP的内容为07H,从而复位后堆栈实际上是从08H单元开始的。但08H~1FH单元分别属于工作寄存器1~3组,如程序要用到这些区,最好把SP值改为1FH或更大的值。一般在片内RAM的30H~7FH单元中开辟堆栈。SP的内容一经确定,堆栈的位置也就跟着确定下来,由于SP可设置为不同值,因此堆栈位置是浮动的。

   (3)程序计数器。程序计数器(ProgramCounter,PC)是一个16位的计数器,它的作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64KB。PC有自动加1功能,从而实现程序的顺序执行。PC没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。因地址不在SFR(专用寄存器)之内,一般不算作专用寄存器。

3)接口有关的特殊功能寄存器

     (1)并行I/O口P0、P1、P2、P3(4个),均为(8位)可实现数据在接口输入输出。

     (2)串行口数据缓冲器SBUF。

     (3)串行口控制寄存器SCON。

     (4)串行通信波特率倍增寄存器PCON。

4)中断相关的特殊功能寄存器

     (1)中断允许控制寄存器IE。

     (2)中断优先级控制寄存器IP。

5)定时器/计数器相关的特殊功能寄存器

     (1)定时器/计数器T0的两个8位计数初值寄存器TH0、TLO,它们可以构成16位的计数器,THO存放高8位,TLO存放低8位。

     (2)定时器/计数器T1的两个8位计数初值寄存器TH1、TL1,它们可以构成16位的计数器,TH1存放高8位,TL1存放低8位。

     (3)定时器/计数器的工作方式寄存器TMOD(4)定时器/计数器的控制寄存器TCON。

 

二、基础项目实践:

1、任务描述 :

     设计单片机P2口连接8个发光二极管(LED1~LED8)只点亮P2.0、P2.2、P2.4、P2.6,其余灯不点亮。P2口输出低电平。

 2、程序设计:

 先建立文件夹DPJ3,然后建立工程项目DPJ3,最后建立源程序文件DPJ.c(在工程里再生成一下HEX文件),输入程序如下:

方法一:

#include<reg51.h>     //包含51单片机寄存器定义的头文件

 void main(void)     //两个void表示没有返回值和参数传递

 {

      P2=0Xaa;      //P2=1010 1010B,即P2引脚输出低电平

 }

 方法二:(位操作)

#include<reg51.h>     //包含51单片机寄存器定义的头文件

  sbit D1=P2^0;                      //位操作

  sbit D2=P2^2;

  sbit D3=P2^4;

  sbit D4=P2^6;

 void main(void)

 {

     D1=0;

     D2=0;                          //P2引脚输出低电平

     D3=0;

     D4=0;

 }

 选择编译完后生成的HEX文件

 成功按要求点亮了二极管

 

总结: 

           虽然这是80C51单片机一次简单点亮不同二极管的项目,但是却涉及到二进制转十六进制等等进制之间转换的方法,还需要巩固自己的基本知识。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值