单片机C语言编程与Proteus仿真技术(含光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-06 14:34:41

点击下载

作者:徐爱钧

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

单片机C语言编程与Proteus仿真技术(含光盘1张)

单片机C语言编程与Proteus仿真技术(含光盘1张)试读:

前言

8051是目前国内外工业测量控制领域内使用极为广泛的一类8位单片机。它在一块芯片上同时集成CPU、ROM、RAM及多种外围功能接口,具有体积小、价格低、功能强、可靠性高、使用方便灵活等特点,以单片机为核心设计各种智能化电子设备,周期短,成本低,易于更新换代,维修方便,已成为电子设计中最为普遍的应用手段。世界上许多大半导体厂商,如Atmel、Analog Device、Infineon、NXP、TI、SiLAB等公司都推出了各具特色的8051系列单片机。

早期,单片机应用开发大多采用汇编语言编程,编程效率不高,程序不易移植和维护。随着Keil C51编译器的流行,现在已经普遍采用C语言进行单片机应用编程。C语言具有类似自然语言的特点,既能直接操作机器硬件,又可以进行方便灵活的高级语言编程。在单片机应用系统开发过程中,除了编程工具之外,硬件平台也必不可少。目前,各种单片机开发平台层出不穷,英国Labcenter公司推出的Proteus软件是一款极好的单片机虚拟硬件平台,以其特有的仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用PC机进行虚拟仿真实现单片机系统的软、硬件设计。Proteus虚拟硬件平台可以与Keil C51完美结合,在原理图中直接进行单片机C语言程序的源代码仿真调试,实现对系统性能的综合评估,验证各项技术指标。Proteus平台涵盖了8051等多种微处理器模型及各种常用电子元器件,包括74系列、CMOS4000系列集成电路、A/D和D/A转换器、键盘、LCD显示器、LED显示器,2还提供示波器、逻辑分析仪、通信终端、电压/电流表、IC/SPI终端等各种虚拟仪表,可以直接用于虚拟仿真,结合原理图和源码级程序调试,能够立即观察到单片机应用系统的输入、输出效果,极大地提高了应用系统的设计效率。

本书在构思及选材上符合单片机应用发展要求,突出先进性和实用性,对C51应用编程方法、Proteus虚拟仿真技术等进行详尽阐述,给出了大量单片机C语言程序和Proteus仿真设计范例。所有范例均已在Proteus平台上调试通过,可以直接运行。

全书共9章:

第1章阐述8051单片机基本组成、存储器结构、CPU时序、并行I/O端口及指令系统。

第2章阐述Proteus虚拟硬件平台,介绍在ISIS集成环境中绘制原理电路图、与Keil C51联机实现源代码仿真调试的方法。

第3章阐述Keil C51应用程序设计,介绍C51的基本语句、数据类型、Keil C51对ANSI C的扩展、与汇编语言程序接口及C51库函数等。

第4章阐述单片机片内资源应用,介绍C51编程的基本原则方法,给出中断系统、定时器/计数器、串行口等功能部件的C语言应用编程实例。

第5章阐述系统扩展与低功耗应用,介绍存储器、并行I/O端口的扩展及单片机低功耗应用方法,给出并行接口扩展芯片和低功耗工作方式的C语言应用编程实例。

第6章阐述键盘与显示器接口应用,介绍矩阵接盘、数码管、点阵字符和图型液晶显示器等与单片机的接口方法,给出C语言应用编程实例。

第7章阐述数模与模数转换接口应用,介绍传统并行及新型串行D/A、A/D转换器芯片及其与单片机的接口方法,给出C语言应用编程实例。22

第8章阐述IC总线接口应用,介绍IC总线结构与数据传输,给2出IC接口存储器芯片、A/D-D/A转换芯片及时钟芯片的C语言应用编程实例。

第9章给出5个单片机Proteus虚拟仿真设计实例及其完整的C51源程序。

本书在编写过程中得到广州风标电子技术有限公司(http://www.windway.cn)匡载华总经理的大力支持和热情帮助,电子工业出版社柴燕、富军编辑提出了许多宝贵意见,徐阳、彭秀华等参加了部分章节的编写和程序调试工作,在此一并表示感谢。

由于作者水平有限,书中难免会有错误和不妥之处,恳请广大读者批评指正,读者可通过电子邮件:ajxu@tom.com、ajxu41@sohu.com直接与作者联系。Proteus的DEMO软件可到官方网站http://www.labcenter.co.uk下载,或者与国内代理商广州风标电子技术有限公司联系购买正版软件。徐爱钧 于长江大学

第1章 8051单片机基础

1.1 8051单片机的特点与基本结构

8051系列单片机是在美国Intel公司于20世纪80年代推出的MCS—51系列高性能8位单片机的基础上发展而来的。它在单一芯片内集成了并行I/O口、异步串行口、16位定时器/计数器、中断系统、片内RAM和片内ROM及其他一些功能部件。现在8051系列单片机已经有了很大的发展,除了Intel公司之外,Philips、Siemens、AMD、Fujutsu、OKI、Atmel、SST、Winbond等公司都推出了以8051为核心的新一代8位单片机。这种新型单片机的集成度更高,在片内集成了更多的功能部件,如A/D、PWM、PCA、WDT及高速I/O口等。不同公司推出的8051具有各自的功能特点,但它们的内核都是以Intel公司的MCS—51为基础的,并且指令系统兼容,从而给用户带来了广阔的选择范围,同时又可以采用相同的开发工具。

8051系列单片机在存储器的配置上采用所谓“哈福”结构,即在物理上具有独立的程序存储器和数据存储器,而在逻辑上则具有相同的地址空间,利用不同的指令和寻址方式可分别访问64kB程序存储器空间和64kB数据存储器,共有111条指令。其中包括乘除指令和位操作指令。有5个中断源,分为2个优先级。8051单片机在片内RAM中开辟了4个工作寄存区,每个区有8个通用寄存器,可以适用于多种中断或子程序嵌套的情况。在片内RAM中还开辟了1个位寻址区,利用位操作指令可以对位寻址区中每个单元的每一个位进行操作,特别适合于解决各种开关控制和逻辑问题。8051单片机在单芯片应用方式下,其4个并行I/O口P0~P3都可以作为输入、输出,在扩展应用方式下可采用P0和P2口作为片外扩展地址总线。8051单片机内部集成了两个16位定时器/计数器,可进行定时或计数操作,还集成了1个全双工的异步串行接口,为单片机之间相互通信或与上位机通信带来极大的方便。

8051单片机的基本组成如图1.1所示。一个单片机芯片内包括中央处理器CPU。它是单片机的核心,用于产生各种控制信号,并完成对数据的算术逻辑运算和传送。片内数据存储器RAM用于存放可以读/写的数据。片内程序存储器ROM用于存放程序指令或某些常数表格。四个8位的并行I/O接口P0、P1、P2和P3,每个口都可以用作输入或者输出。两个定时器/计数器T0和T1用于外部事件计数器,也可用于定时。内部中断系统具有5个中断源,两个优先级的嵌套中断结构,可实现二级中断服务程序嵌套,每一个中断源都可编程设定为高优先级或低优先级中断。一个串行接口电路可用于异步接收发送器。内部时钟电路,其晶体和微调电容需要外接,振荡频率可以高达40MHz。以上各部分通过内部总线相连接。图1.1 8051单片机的基本组成

8051单片机没有单独的片外地址和数据总线,而是通过并行I/O端口的分时复用形成。P0口分时复用为低8位地址线和8位数据线。P2口则作为高8位地址线,从而形成16位地址线和8位数据线。一定要建立一个明确的概念,单片机在进行外部扩展时的地址线和数据线都不是独立的,而是与并行I/O端口公用的。这是8051单片机结构上的一个特点。

图1.2为8051单片机内部结构框图。其中,中央处理器CPU包含运算器和控制器两大部分;运算器完成各种算术和逻辑运算;控制器在单片机内部协调各功能部件之间的数据传送和运算操作,并对单片机外部发出若干控制信息。

1.运算器

运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存寄存器TMP和程序状态字寄存器PSW等组成。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算结果的判断影响程序状态字寄存器PSW中有关位的状态。累加器ACC是一个8位的寄存器(在指令中一般写为A),通过暂存寄存器TMP与ALU相连。ACC的工作最为繁忙,因为在进行算术逻辑运算时,ALU的一个输入多为ACC的输出,而大多数运算结果也需要送到ACC中,在做乘除运算时,B寄存器用来存放一个操作数,也用来存放乘除运算后的一部分结果,若不做乘除操作时,B寄存器可用作通用寄存器。程序状态字寄存器PSW也是一个8位寄存器,用于存放运算结果的一些特征,格式如下:

其中各位的意义如下:

CY:进位标志。在进行加法或减法运算时,若运算结果的最高位有进位或借位,则CY=1,否则CY=0,在执行位操作指令时,CY作为位累加器。图1.2 8051单片机内部结构框图

AC:辅助进位标志。在进行加法或减法运算时,若低半字节向高半字节有进位或借位,则AC=1,否则AC=0,AC还作为BCD码运算调整时的判别位。

F0:用户标志。用户可根据自己的需要对F0赋以一定的含义,如可以用软件来测试F0的状态以控制程序的流向等。

RS1和RS0:工作寄存器组选择,可以用软件来置位或复位。它们与工作寄存器组的关系见表1.1。表1.1 RS1和RS0与工作寄存器组的关系

OV:溢出标志。当两个带符号的单字节数进行运算,结果超出-128~+127的范围时,OV=1,表示有溢出,否则OV=0,表示无溢出。

PSW中的D1位为保留位。

P:奇偶校验标志。每条指令指行完毕后,都按照累加器A中“1”的个数来决定P值,当“1”的个数为奇数时,P=1,否则P=0。

2.控制器

控制器包括定时控制逻辑、指令寄存器、指令译码器、程序计数器PC、数据指针寄存器DPTR、堆栈指针SP、地址寄存器和地址缓冲器等。它的功能是对逐条指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号协调各部分的工作。下面简单介绍其中主要部件的功能。

程序计数器PC:用于存放下一条将要执行指令的地址。当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动增量,即指向下一条指令。

堆栈指针SP:用来指示堆栈的起始地址。8051单片机的堆栈位于片内RAM中,而且属于“上长型”堆栈,复位后,SP被初始化为07H,使得堆栈实际上由08H单元开始。必要时可以给SP装入其他值,重新规定栈底的位置。堆栈中数据操作规则是“先进后出”,每往堆栈中压入一个数据,SP的内容自动加1,随着数据的压入,SP的值将越来越大,当数据从堆栈弹出时,SP的值将越来越小。

指令译码器:当指令送入指令译码器后,由译码器对该指令进行译码,即把指令转变成所需要的电平信号,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。

数据指针寄存器DRTR:是一个16位寄存器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64kB的数据RAM区进行读写操作。

采用40引脚双列直插DIP封装的8051单片机引脚分配图如图1.3所示。图1.3 8051单片机引脚分配图

各引脚功能如下:

RST/VPD(9):RST是复位信号输入端。当此输入端保持两个机器周期(24个振荡周期)的高电平时,就可以完成复位操作。第二功能是VPD,即备用电源输入端,当主电源发生故障,降低到规定的低电平以下时,VPD将为片内RAM提供备用电源,以保证存储在RAM中的信息不丢失。

XTAL2(18)和XTAL1(19):在使用单片机内部振荡电路时,这两个端子用来外接石英晶体和微调电容(图1.4(a))。在使用外部时钟时,用来输入时钟脉冲,但对NMOS和CMOS芯片接法不同,图1.4(b)为NMOS芯片8051外接时钟,图1.4(c)为CMOS芯片8051外接时钟。图1.4 8051单片机的时钟接法

Vss(20):接地。

Vcc(40):接+5V电源。(31):访问外部存储器的控制信号。当为高电平时,访问单片机片内程序存储器,当程序计数器PC的值超过0FFFH(对8051)或1FFFH(对8052)时,将自动转向执行单片机片外程序存储器内的程序。当保持低电平时,只访问外部程序存储器,不管是否有片内程序存储器。第二功能 为对 片内EPROM的21伏编程电源输入。(30):ALE是地址锁存允许信号,在访问外部存储器时,用来锁存由P0口送出的低8位地址信号。在不访问外部存储器时,ALE以振荡频率1/6的固定速率输出脉冲信号。因此它可用作对外输出的时钟。但要注意,只要外接有存储器,则ALE端输出的就不再是连续的周期脉冲信号了。第二功能是用于对8751片内EPROM编程的脉冲输入端。(29):外部程序存储器ROM的读选通信号。在执行访问外部ROM指令的时候,会自动产生信号,而在访问外部数据存储器RAM或访问内部ROM时,不产生信号。

P1.0~P1.7(1~8):双向I/O口P1。P1口能驱动(吸收或输出电流)4个LS型TTL负载。在对EPROM编程和程序验证时,接收低8位地址。在8052单片机中,P1.0还用作定时器2的计数触发输入端T2,P1.1还用作定时器2的外部控制端T2EX。

P3.0~P3.7(10~17):双向I/0口P3,P3口能驱动(吸收或输出电流)4个LS型TTL负载。P3口的每条引脚都有各自的第二功能。

P0.0~P0.7(39-32):双向I/O口P0。第二功能是在访问外部存储器时,可分时用作低8位地址和8位数据线,在对8751编程和校验时,用于数据的输入和输出。P0口能以吸收电流的方式驱动8个LS型TTL负载。

P2.0~P2.7(21~28):双向I/O口P2。P2口可以驱动(吸收或输出电流)4个LS型TTL负载。第二功能是在访问外部存储器时,输出高8位地址。在对EPROM编程和校验时,它接收高位地址。

1.2 8051单片机的存储器结构

图1.5为8051单片机的存储器结构图。在物理上,它有3个存储器空间:程序存储器(CODE空间)、片内数据存储器(IDATA和DATA空间)、片外数据存储器(XDATA空间)。访问不同存储器空间时须采用不同的指令。图1.5 8051单片机的存储器结构图

程序存储器ROM

8051单片机程序存储器ROM空间大小为64KB,地址范围为0000H~FFFFH,用于存放程序代码和一些表格常数,称为CODE空间。8051单片机专门提供一个引脚来区分片内ROM和片外ROM。引脚接高电平时,单片机从片内ROM中读取指令,当指令地址超过片内ROM空间范围后,就自动转向片外ROM读取指令;引脚接低电平时,所有的取指操作均对片外ROM进行。程序存储器的某些地址单元是保留给系统使用的:0000H~0002H单元是所有执行程序的入口地址,复位后,CPU总是从0000H地址开始执行程序;0003H~002BH单元均匀地分为5段,用于5个中断服务程序的入口,产生某个中断时,将自动进入其对应入口地址开始执行中断服务程序,一些新型8051单片机增加了更多的中断源,它们的中断入口地址也相应增加。

片外数据存储器RAM

8051单片机片外数据存储器RAM空间大小为64 KB,地址范围为0000H~FFFFH,称为XDATA空间。在XDATA空间内进行分页寻址操作时,称为PDATA区。

8051单片机采用所谓“哈福”结构的存储器配置,即在物理上具有独立的ROM存储器和片外RAM数据存储器,而在逻辑上则采用相同的地址空间,其地址范围都是0000H~FFFFH,但是需要采用不同的指令和寻址方式来访问,从而可分别寻址64KB的ROM程序存储器和64KB的片外RAM数据存储器。

片内数据存储器RAM

8051单片机片内数据存储器RAM的空间最大为256 B,用于存放程序执行过程的各种变量及临时数据,整个片内RAM的地址范围00H~FFH被称为IDATA空间。片内RAM低128个字节(00H~7FH)被称为DATA空间。它既可用直接寻址访问,也可用间接寻址访问,而片内RAM高128个字节(80H~FFH)则只能采用间接寻址访问。片内RAM中00H~1FH地址范围被称为工作寄存器区,平均分为4组,每组都有8个工作寄存器R0~R7,在某一时刻,CPU只能使用其中的一组工作寄存器,究竟选择哪一组工作寄存器,则由程序状态字寄存器PSW中RS0和RS1的状态决定,见表1.1。片内RAM中,20H~2FH地址范围被称为位寻址区(又称BDATA区)。其中每个存储器单元的每一位称为一个bit,可以用位处理指令直接操作。片内RAM中的位地址分配如图1.6所示。图1.6 片内RAM中的位地址分配

8051单片机在与IDATA空间高128个字节(80H~FFH地址范围)安排了一个重叠空间被称为特殊功能寄存器区(又称SFR区),地址也为80H~FFH,但在使用时,可通过指令加以区别。有些特殊功能寄存器是可以位寻址的,其可寻址位被称为sbit。表1.2为8051单片机特殊功能寄存器地址及符号表。表中带*号的为可位寻址的特殊功能寄存器。片内RAM中的各个单元都可以通过其地址来寻找。对于工作寄存器,一般使用R0~R7表示,对于特殊功能寄存器,也是直接用其符号名较为方便。需要指出的是,8051单片机的堆栈必须使用片内RAM,而片内RAM空间十分有限,因此要仔细安排堆栈指针SP的值,以保证不会发生堆栈溢出而导致系统崩溃。表1.2 8051单片机特殊功能寄存器地址及符号表

1.3 CPU时序

8051单片机内部有一个高增益反向放大器,用于构成振荡器,反向放大器的输入端为XTAL1,输出端为XTAL2,分别是8051的19脚和18脚。在XTAL1和XTAL2之间接一个石英晶体及两个电容就可以构成稳定的自激振荡器,如图1.7所示。晶体振荡器的振荡信号经过片内时钟发生器进行2分频,向CPU提供两相时钟信号P1和P2。时钟信号的周期被称为状态时间S。它是振荡周期的2倍,在每个状态的前半周期P1信号有效,在每个状态的后半周期P2信号有效,CPU就以这两相时钟信号为基本节拍指挥单片机各部分协调工作。

CPU执行一条指令所需要的时间是以机器周期为单位的。8051单片机的一个机器周期包括12个振荡周期,分为6个S状态:S1~S6。每个状态又分为2拍,即前面介绍的P1和P2信号。因此一个机器周期中的12个振荡周期可表示为S1P1,S1P2,S2P1,…,S6P1,S6P2。当采用12MHz的晶体振荡器时,一个机器周期为1μs。CPU执行一条指令通常需要1~4个机器周期,指令的执行速度与其需要的机器周期数直接有关,所需机器周期数越少,速度越快,8051单片机只有乘、除两条指令,需要4个机器周期,其余均为单周期或双周期指令。

图1.8为几种典型的取指令和执行时序。从图中可以看到,在每个机器周期之内,地址锁存信号ALE两次有效,第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。单周期指令的执行从S1P2开始,此时操作码被锁存在指令寄存器内。若是双字节指令,则在同一机器周期的S4状态读第2个字节。若是单字节指令,则在S4状态仍进行读,但操作无效,且程序计数器PC的值不加1。图1.7 8051片内振荡器及时钟发生电路图1.8 几种典型的取指和执行周期时序

图1.8(a)和图1.8(b)分别为单字节单周期和双字节单周期指令的时序,它们都在S6P2结束时完成操作。

图1.8(c)为单字节双周期指令的时序,在两个机器周期内进行4次操作,由于是单字节指令,所以后面的3次操作无效。

图1.8(d)为CPU访问片外数据存储器指令“MOVX”的时序,是一条单字节双周期指令,在第一个机器周期的S5状态开始送出片外数据存储器的地址进行数据的读/写操作。在此期间没有ALE信号,所以在第二个周期不会产生取指操作。

1.4 复位信号与复位电路

8051单片机与其他微处理器一样,在启动时需要复位,使CPU和系统的各个部件都处于一种确定的初始状态。复位信号从单片机的RST引脚输入,高电平有效,其有效电平应维持至少两个机器周期,若采用6MHz的晶体振荡器,则复位信号至少应持续4µs以上,才可以保证可靠复位。

复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。其电路如图1.9(a)所示。只要电源Vcc电压上升时间不超过1ms,通过在Vcc和RST之间加一个22µF的电容,RST和Vss引脚(即地)之间加一个1kΩ的电阻,就可以实现上电自动复位。

按键手动复位电路如图1.9(b)所示。它是在上电自动复位电路的基础上增加一个电阻R1和一个按键RESET实现的。它不仅具有上电自动复位功能,而且在按下RESET按钮后,电容C通过R1放电,同时电源Vcc通过R1和R2分压,而R2的阻值要比R1的阻值大很多,大部分电压都降落在R2上,从而使RST端得到一个高电平,导致单片机复位。图1.9 复位电路

上述电路中的电阻、电容参数适用于6MHz的外接晶振,能保证复位信号持续两个机器周期的高电平。复位电路虽然简单,但其作用非常重要,一个实际单片机应用系统能否正常工作,首先要检查能否产生正确的复位信号。复位以后,单片机内部各寄存器的状态见表1.3。复位不影响片内RAM的内容。表1.3 单片机内部各寄存器的状态

1.5 并行I/O端口结构

8051单片机有四个并行I/O端口,称其为P0、P1、P2、P3。每个端口都有8根引脚,共有32根I/O引脚。它们都是双向通道,每一条I/O引脚都能独立地用作输入或输出,作为输出时数据可以锁存,作为输入时数据可以缓冲。

图1.10为P0~P3各口中的一位逻辑图。P0~P3口各有一个锁存器,分别对应4个特殊功能寄存器地址:80H、90H、A0H、B0H。这四个I/O口的功能不完全相同,负载能力也不相同,P1、P2、P3都能驱动四个LSTTL门电路,并且不需外加电阻就能直接驱动MOS电路。P0口在驱动TTL电路时能带动8个LS型TTL门电路,若作为地址/数据总线,则可直接驱动;而作为I/O口时,则需外接上拉电阻才能驱动MOS电路。

P0为三态双向口,可作为输入、输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P0口内部有一个2选1的MUX开关,当8051以单芯片方式工作而不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器,此时P0口作为双向I/O端口,由于P0口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力。当8051需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址/数据线,此时P0口在ALE信号的控制下分时输出低8位地址和8位数据信号。

P1口为准双向口,它的每一位都可以分别定义为输入或输出使用。P1口作为输入口使用时有两种工作方式,即所谓“读端口”和“读引脚”。读端口时,实际上并不从外部读入数据,而只把端口锁存器中的内容读入到内部总线,经过某种运算和变换后,再写回到端口锁存器,属于这类操作的指令很多,如对端口内容取反等。读引脚时才真正地把外部的输入信号读入到内部总线。逻辑图中各有两个输入缓冲器,CPU根据不同的指令分别发出“读端口”或“读引脚”信号,以完成两种不同的操作。在读引脚,也就是从外部输入数据时,为了保证输入正确的外部输入电平信号,首先要向端口锁存器写入一个“1”,再进行读引脚操作,否则,端口锁存器中原来状态有可能为“0”,加到输出驱动场效应管栅极的信号为“1”,该场效应管导通,对地呈现低阻抗。这时即使引脚上输入的是“1”信号,也会因端口的低阻抗而使信号变化,使得外加的“1”信号写入时不一定是“1”。若先执行置“1”操作,则可使驱动场效应管截止,引脚信号直接加到三态缓冲器,实现正确的写入。正是由于P1口在进行输入操作之前需要有这样一个附加准备动作,故称之为“准双向口”。P1作为输出口时,如果要输出“1”,则只要将“1”写入P1口的某一位锁存器,使输出驱动场效应管截止。该位的输出引脚由内部上拉电阻拉成高电平,即输出为“1”。要输出“0”时,将“0”写入P1口的某一位锁存器,使输出驱动场效应管导通,该位的输出引脚被接到地端,即输出为“0”。图1.10 P0~P3各口中的一位逻辑图

P2口也是一个准双向口,有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。P2口内部结构与P0口类似,也有一个2选1的MUX开关,P2口作为I/O端口使用时,内部控制信号使MUX开关接通到锁存器,此时P2口的用法与P1口相同。P2口作为外部地址总线使用时,内部控制信号使MUX开关接通到内部地址线,此时P2口的引脚状态由所输出的地址决定。需要特别指出的是,只要进行了外部系统扩展,则由于对片外地址的操作是连续不断的,故此时P0口和P2口就不能再用作I/O端口了。

P3口为多功能口,除了用作通用I/O端口之外,它的每一位都有各自的第二功能,见 表1.4。P3口作为通用I/O端口时,其使用方法与P1口相同,P3口的第二功能可以单独使用,即不用第二功能的引脚仍可以作为通用I/O口线使用。表1.4 P3口的第二功能定义

8051单片机没有独立的对外地址、数据和控制“三总线”,当需要进行外部扩展时,需要采用I/O端口的复用功能,将P0、P2口用作地址/数据总线,P3口用其第二功能,形成外部地址、数据和控制总线,如图1.11所示。图1.11 单片机与外部存储器、I/O端口的连接

P0口在进行外部扩展时分时复用,在读/写片外存储器时,P0口先送出低8位地址信号。该信号只能维持很短的时间,然后P0口又送出8位数据信号。为了在整个读/写片外存储器期间都存在有效的低8位地址信号,必须在P0口上外接一个地址锁存器,在ALE信号有效期间将低8位地址锁存于锁存器内,再从这个锁存器对外输出低8位地址。P2口在进行外部扩展时只用作高8位地址线,在整个读写期间,P2口输出信号维持不变,因此P2口不需外接锁存器。一般在片外接有存储器时,P0和P2口不能再用作通用I/O端口,此时只有P1口可作为通用I/O端口,P3口没有使用第二功能的引脚还可以用作I/O端口线。另外还要注意,外接程序存储器ROM的读写选通信号为,而外接数据存储器RAM的读/写选通信号为和,从而保证外部ROM和外部RAM不会发生混淆。

1.6 指令系统

指令系统是一套控制单片机执行操作的编码,是单片机能直接识别的命令。指令系统在很大程度上决定了单片机的功能和使用是否方便灵活。指令系统对于用户来说也是十分重要的,只有详细了解了单片机的指令功能才能编写出高效的软件程序。指令本身是一组二进制数代码,记忆起来很不方便,为了便于记忆,将这些代码用具有一定

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载