文档详情

C51单片机的结构及原理.ppt

san****019
实名认证
店铺
PPT
1.37MB
约90页
文档ID:15670195
C51单片机的结构及原理.ppt_第1页
1/90

第2章 80C51单片机的结构及原理,学习目的 (1)了解80C51的内部结构 (2)掌握80C51引脚信号功能定义 (3)掌握80C51的存储器空间分配及各I/O口的特点 (4)掌握80C51的复位电路、时钟电路及指令时序 学习重点和难点 (1)80C51的结构特点 (2)80C51存储器配置与空间的分布 (3)80C51程序状态寄存器(PSW) (4)80C51的指令时序2.1 80C51单片机的结构与原理 2.1.1 80C51单片机系列 Intel公司推出的80C51是MCS-51系列单片机中以CHMOS为生产工艺的一个典型产品;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列当前常用的80C51系列单片机主要产品有: 1、Intel公司的:80C31、80C51、87C51、80C32、80C52、87C52等 2、ATMEL公司的:89C51、89C52、89C2051、89S51等 3、Philips公司的80C51、80C550、80C552系列 4、Motorola公司M68HC05系列 5、华邦公司的W78C51、W77C51高速低价系列。

6、Maxim公司的DS89C420高速(50MIPS)系列 7、Cygnal公司的C8051F系列高速SOC单片机 8、ADI公司的ADC8xx高精度ADC系列 9、LG公司的GMS90/97低压高速系列2.1.2 80C51单片机的结构 80C51单片机的结构框图如图2-1所示,可以看出,在一块芯片上集成了一个微型计算机的主要部件,它包括以下几部分: (1)8位 CPU 1个 (2)时钟电路(振荡电路和时序OSC) (3)4KB程序存储器(ROM/EPROM/Flsh),可外扩展到64KB (4)128B数据存储器RAM,可外扩展到64KB (5)2个16位定时/计数器 (6)64KB总线扩展控制电路 (7)4个8位并行I/O接口P0P3 (8)1个全双工异步串行I/O接口 (9)中断系统:5个中断源,其中包括2个优先级嵌套中断2.1.3 80C51单片机的内部结构 80C51单片机的内部结构如图2-2所示,它由CPU、存储器、I/O口及SFR(特殊功能寄存器)等组成具体说明如下: 1、80C51 CPU 80C51 CPU即微处理器,是一8位CPU,是单片机的核心部件,是计算机的控制指挥中心。

同微型计算机CPU类似,80C51内部CPU由运算器和控制器两部分组成 (1)运算器 组成:由算术运算/逻辑运算单元ALU(Arithmetic Logic Unit)为核心,由暂存器1、暂存器2、累加器ACC(Accumulator)、寄存器B及程序状态寄存器PSW (Program Status Word)组成 主要任务:是完成算术运算、逻辑运算、位运算和数据传送等操作,运算结果的状态由程序状态寄存器(PSW)保存图2-2 80C51单片机的内部结构,(2)控制器 组成:由程序计数器(PC)、PC增1寄存器、指令寄存器(IR)、指令译码器(ID)、数据指针(DPTR)、堆栈指针(SP)、缓冲器及定时控制电路等组成 主要任务:完成指挥控制工作,协调单片机各部分正常工作 2、80C51的片内存储器 80C51的片内存储器与一般微机的存储器的配置不同一般微机的ROM和RAM安排在同一空间的不同范围(称为普林斯顿结构)而80C51单片机的存储器在物理上设计成程序存储器和数据存储器两个独立的空间(称为哈佛结构)2.1.4 80C51单片机的引脚及功能 80C51单片机的封装是采用双列直插式(DIP)封装,引脚图如图2-3(a)所示。

80C51的40个引脚及功能描述如下: 1、电源引脚(2根) (1)VCC(40脚):电源端,接+5V电源 (2)VSS(20脚):接地端 2、时钟引脚(2根) (1)XTAL1(19脚):晶体振荡器接入的一个引脚采用外部时钟电路时,此引脚应接地 (2)XTAL2(18脚):晶体振荡器接入的另一个引脚使用外部时钟时,此引脚应接外部时钟的输入端 3、控制引脚(4根) (1) RST/VPD(9脚):复位信号输入引脚/备用电源输入引脚 说明:当RST引脚保持两个机器周期的高电平后,就可以使80C51完成复位操作该引脚的第二功能是VPD,即备用电源的输入端,具有掉电保护功能若在该引脚接+5V备用电源,在使用中若主电源VCC掉电,可保护片内RAM中的信息不丢失2)ALE/PROG(30脚):地址锁存允许信号输出引脚/编程脉冲输入引脚 说明:在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离此外,由于ALE是以晶振fosc/6的固定频率输出的正脉冲(fosc代表振荡器的频率),因此,可作为外部时钟或外部定时脉冲使用。

该引脚的第二功能是对8751内部4KB EPROM编程写入时,作为编程脉冲的输入端 (3)EA /VPP(31脚):外部程序存储器地址允许输入信号引脚/编程电压输入信号引脚 说明:当EA接高电平时,CPU执行片内ROM指令,当PC值超过0FFFH时,将自动转去执行片外ROM指令;当EA接低电平时,CPU只执行片外ROM指令 该引脚的第二功能VPP是对8751片内EPROM编程写入时,作为21V编程电压的输入端 (4)PSEN(29脚):片外ROM读选通信号 说明:在读片外ROM时,为低电平(有效),以实现对片外ROM的读操作4、并行I/O引脚(32根,由4个8位口构成) 其中: (1)P0.0P0.7(3932脚):一般的8位双向I/O口引脚或数据/地址总线低8位复用引脚 说明:P0口即可作数据/地址总线使用,又可作一般的I/O口使用当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作一般I/O口使用 (2)P1.0P1.7(18脚):P1口作为一般的8位准双向I/O口使用 (3)P2.0P2.7(2128脚):一般8位准双向I/O口引脚或高8位地址总线引脚。

说明:P2口即可作为一般的I/O口使用,也可作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址,可访问64KB的存储空间 (4)P3.0P3.7(1017脚):一般8位准双向I/O口引脚或第二功能引脚 说明:P3口除了作为一般的I/O口使用之外,每个引脚还具有第二功能,P3的8条口线都定义有第二功能,详见表2-1(a),表2-1 P3口各引脚与第二功能表,2.2 80C51单片机的存储器组织 80C51的存储器在物理结构为哈佛结构,它将程序存储器和数据存储器分开,如图2-4所示 从物理地址空间看,80C51单片机有四个存储器地址空间,即片内数据存储器(简称片内RAM)、片内程序存储器(片内ROM)、片外数据存储器(片外RAM)和片外程序存储器(片外ROM)但从使用的角度来看,80C51的存储器又分为三个逻辑空间,如图2-5所示 1、片内外统一寻址的64KB程序存储器空间,地址范围为0000HFFFFH(访问用指令MOVC) 2、64KB的片外数据存储器空间,地址范围也为0000HFFFFH(访问用指令MOVX) 3、80C51的片内数据存储器RAM只有128B,地址范围为00H7FH;80C52的片内数据存储器RAM为256B,地址范围为00HFFH(访问用指令MOV)。

2.2.1 80C51单片机的程序存储器ROM 80C51内部有4KB的掩膜ROM80C51的片外最多能扩展64 KB程序存储器,片内外的ROM是统一编址的 80C51程序存储器ROM空间地址分布图如图2-6(a)所示对图2-6(a) ROM空间地址分布图作如下说明: 1、80C51片内有4KB的ROM存储单元,地址为0000H0FFFH 2、80C51片外最多可扩60KB的ROM,地址为1000HFFFFH2.2.2 80C51ROM低地址特殊单元 80C51的程序存储器低地址单元中有6个单元具有特殊功能,见图2-6(b)所示,使用时应予以注意其含义 1、0000H0002H:单片机复位后的程序入口地址 (3个单元) 2、0003H000AH:外部中断0的中断服务程序入口地址 (8个单元) 3、000BH0012H:定时器0的中断服务程序入口地址 (8个单元) 4、0013H001AH:外部中断1的中断服务程序入口地址 (8个单元) 5、001BH0022H:定时器1的中断服务程序入口地址 (8个单元) 6、0023H002AH:串行口的中断服务程序入口地址 (8个单元)。

具体应用时注意: 第一组特殊单元是0000H0002H,3个单元不可能安排长程序,因此,系统复位后(PC)=0000H,80C51单片机从0000H单元开始取指令执行程序如果程序不从0000H单元开始,应在这3个单元中存放一条无条件转移指令,以便直接转去执行指定的程序 第二组特殊单元是0003H002AH,共40个单元这40个单元被均匀地分为5段,作为5个中断源的中断地址区中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中应存放中断服务程序但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址2.2.3 80C51单片机的数据存储器RAM 80C51数据存储器RAM主要用来存放运算的中间结果和数据等80C51单片机数据存储器RAM分为片内RAM和片外RAM两大部分,如图2.7所示80C51的片内数据存储器RAM只有128B,地址范围为00H7FH;80C52的片内数据存储器RAM为256B,地址范围为00HFFH片外数据存储器RAM最多可扩至64KB存储单元,地址范围为0000HFFFFH。

说明两点: 80C52的片内RAM地址空间共有256B,又分为两个部分: 低128B(00H7FH) RAM区与80C51的RAM区相同(访问时采用直接或间接寻址方式均可) 高128B(80HFFH)RAM区,在访问这个区只能用寄存器间接寻址需要注意是该地址范围与特殊功能寄存器(SFR)区相重叠,区别是访问特殊功能寄存器区采用直接寻址方式 片内RAM和片外RAM的低端地址0000H007FH区是相重叠的,因此,就需要采用不同的寻址方式来解决访问片内RAM时用指令MOV,而访问片外RAM时用指令MOVX,另外片外RAM不能进行堆栈操作在80C51单片机中,尽管片内RAM的容量不大,但它的功能多,使用灵 活下面分别对低128B RAM区和高128B特殊功能寄存器(SFR)区进行讨论 一、内部数据存储器低128单元 内部数据存储器低128单元是指地址为00H7FH单元,如图2-8所示低128单 元是单片机的真正RAM存储器,按其用途划分为工作寄存器区、位寻址区和用户RAM 区三个区域 1、工作寄存器区 80C51单片机内部RAM的00H1FH地址单元,共32B,分成4组工作寄存 器,每组8个工作寄存单元。

寄存器0组:地址00H07H(R0R7) 寄存器1组:地址08H0FH(R0R7) 寄存器2组:地址10H17H(R0R7) 寄存器3组:地址18H1FH(R0R7) 各组都以R0R7作工作寄存单元编号由于它们的功能及使用不作预先 规定,因此称之为通用寄存器4组通用寄存器在任一时刻,CPU只能使用其 中的一组工作寄存器,并且把正在使用的那组寄存器称之为当前寄存器组 到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定图2-8 80C51片内RAM的配置,,2、位寻址区 内部RAM的20H2FH地址单元,既可作为一般RAM单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区位寻址区共有16个RAM单元,计128位,地址为00H7FH,见表2-2程序设计时,常将程序状态标志、位控制变量设在位寻址区内这种位寻址能力是80C51的一个重要特点 3、用户RAM区 地址为30H7FH,共计80个字节,这就是供用户使用的一般RAM区这个区域的操作指令非常丰富,数据处理方便灵活对用户RAM区的使用没有任何规定或限制,但在一般应用中常把堆栈设置在此区中。

表2-2 片内RAM及位寻址区的位地址表,二. 内部数据存储器RAM高128单元 在80C51内部RAM的高128单元是供给专用寄存器使用的,它们分布在其单元地址为80HFFH的空间因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register),也可称为特殊功能寄存器(简称为SFR寄存器)访问SFR寄存器只允许使用直接寻址方式 1、特殊功能寄存器(SFR)简介 80C51共有21个特殊功能寄存器(SFR),其中的11个SFR还具有位寻址功能, 见表2-3用“*”表示的现把其中部分SFR简单介绍如下: 1)与运算器有关的特殊功能寄存器有3个 (1) 累加器ACC(Accumulator)累加器为8位寄存器,是最常用的专用寄存器,用于向ALU提供操作,因此,功能较多,地位重要它既可用于存放操作数,也可用来存放运算的中间结果表2-3 80C51 SFR中位地址分布表,(2) B寄存器B寄存器是一个8位寄存器,主要用于乘、除运算也可以作为RAM的一个单元使用 (3) 程序状态字PSW(Program Status Word)程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息,作为程序查询或判断的条件。

PSW有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则使用软件方法设定 PSW的各位定义见表2-4 各位的定义及使用作如下说明: CY(PSW.7)进位(借位)标志位其功能有二:一是存放算术运算的进位()时,CY由硬件置“1”,否则清“0”;二是在进行位操作时,CY作为累加器借位)标志,在作加法(减法)运算时,如果操作结果的最高位有进位(借位C使用,可进行位传送、位与位的逻辑运算等位操作,会影响该标志位 AC(PSW.6)辅助进位标志位在进行加法(减法)运算中,当低4位向高4位进位(借位)时,AC由硬件置“1”,否则AC位被清“0” AC位常用于调整BCD码运算结果F0(PSW.5)用户标志位这是一个留给用户自己定义的标志位,可以根据自己的需要通过软件方法置位或复位F0位,用以控制程序的转向 RS1和RS0(PSW.4,PSW.3)工作寄存器组选择位工作寄存器共有4组,对应关系见表2-5RS1和RS0这两位的状态是由软件置“1”或清“0”来设置的,被选中的工作寄存器组即为当前工作寄存器组 注意:当单片机上电或复位后,RS1 RS0=00,选中第0组 OV(PSW.2)溢出标志位。

在带符号数的算术运算时,如果运算结果超出了8位二进制数所能表示的符号数有效范围(-128 +127),这产生了溢出OV=1,表示运算结果是错误的;否则,OV=0即无溢出产生,表示运算结果正确 PSW.1位保留未用 P(PSW.0)奇偶标志位表明运算结果累加器A中内容的奇偶性如果A中有奇数个“1”,则P置“1”,否则置“0” 凡是改变累加器A中内容的指令均会影响P标志位 注意:P标志位对串行通信中的数据传输有重要的意义在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性2)与指针有关的特殊功能寄存器有3个 (1)数据指针DPTR数据指针为16位寄存器,用来存放16位地址DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即: DPHDPTR高8位字节 DPLDPTR低8位字节 DPTR通常在访问片外RAM或ROM存储器时作地址指针使用,用间接寻址或变址寻址可对片外的64KB范围的RAM或ROM数据进行操作 (2)堆栈指针SP(Stack Pointer)SP是一个8位寄存器,它总是指向栈顶80C51单片机在编程序时常将堆栈设在内部RAM 30H7FH中。

80C51单片机系统复位后,SP的内容为07H,从而复位后堆栈实际上是从08H单元开始的但08H1FH单元分别属于工作寄存器13组,如程序要用到这些区,最好把SP值改为1FH或更大的值 (3) 程序计数器PC(Program Counter)PC是一个16位的计数器,它的作用是控制程序的执行顺序其内容为将要执行指令的地址,寻址范围达64 KBPC有自动加1功能,从而实现程序的顺序执行3)与接口有关的特殊功能寄存器有7个 (1)并行I/O口P0、P1、P2、P3(4个),均为8位;可实现数据在接口输入/输出 (2)串行口数据缓冲器SBUF(详见串行口章节) (3)串行口控制寄存器SCON(详见串行口章节) (4)串行通讯波特率倍增寄存器PCON(详见串行口章节) 4)与中断相关的寄存器(2个) (1)中断允许控制寄存器IE(详见中断章节) (2)中断优先级控制寄存器IP(详见中断章节) 5)与定时器/计数器相关的寄存器(6个) (1)定时/计数器T0的两个8位计数初值寄存器TH0、TL0,它们可以构成16位的计数器,TH0存放高8位,TL0存放低8位(详见定时/计数器章节) (2)定时/计数器T1的两个8位计数初值寄存器TH1、TL1,它们可以构成16位的计数器,TH1存放高8位,TL1存放低8位(详见定时/计数器章节)。

3)定时/计数器的工作方式寄存器TMOD(详见定时/计数器章节) (4)定时/计数器的控制寄存器TCON(详见定时/计数器章节) 注意:在80C52子系列中,高128字节RAM和SFR的地址是重叠的,究竟访问哪一块可通过不同的寻址方式加以区分,访问高128字节RAM采用寄存器间址,访问SFR则只能采用直接寻址,访问低128字节RAM时,两种寻址均可采用2.3 80C51的并行输入/输出端口结构与操作 80C51单片机有4个8位并行I/O端口,称为P0、P1、P2和P3口,每个端口都各有8条I/O口线,每条I/O口线都能独立地用作输入或输出每个口都包含一个锁存器、一个输出驱动器和输入缓冲器实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能 2.3.1 80C51 P0P3接口功能简见 大多数口线都有双重功能,介绍如下: 1、P0口具有双重功能: (1) 作为通用I/O,外接I/O设备 (2) 作为地址/数据总线在有片外扩展存储器的系统 中,低8位地址和数据由P0口分时传送 2、P1口是唯一的单功能口: 作为输入/输出口,P1口的每一位都可作为输入/输出口 3、P2口具有双重功能: (1) 作为输入/输出口。

(2) 作为高8位地址总线在有片外扩展存储器的系统 中,高8位地址由P2口传送 4、P3口具有双重功能: (1)作第一功能使用时,其功能为输入/输出口 (2)作第二功能使用时,每一位功能定义如表2.1所示 80C51单片机的4个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,但又各具特点,以下将分别介绍之2.3.2 P0口 P0口某一位的结构图如图2-9所示,由图可见,电路是由一个输出锁存器(D触发器)、两个三态输入缓冲器(1和2)、一个转换开关MUX、一个输出驱动电路(T1和T2)、一个与门及一个反向器组成 1、P0口用作通用I/O口 当系统不扩展片外的ROM和不扩展片外RAM时,P0用作通用I/O口CPU发控制电平“0”封锁与门,使上拉场效应管T1处于截止状态因此,输出驱动级工作在需外接上拉电阻的漏极开路方式同时使MUX开关同下面的触点接通,使锁存器的端与T2栅极接通 (1)P0口用作输出口时 CPU在执行输出指令时,内部数据总线的数据在“写锁存器”信号的作用下,由D端进入锁存器,经锁存器的端送至场效应管T2,再经T2反向,在P0.X引脚出现的数据正好是内部总线的数据。

由于输出驱动级是漏极开路电路(因T1截止),在作I/O口使用时应外接10K的上拉电阻图2-9 P0口某位的结构,(2) P0口用作输入口时 数据可以读自端口的锁存器,也可以读自端口的引脚,这要看输入操作执行的是“读锁存器”指令还是“读引脚”指令 读引脚:CPU在执行“MOV”类输入指令时(如:MOV A , P0),内部产生的操作信号是“读引脚”P0.X引脚上的数据经过三态输入缓冲器2读入到内部总线 注意:在读引脚时,必须先向电路中的锁存器写入1,使场效应管T2截止,P0.X引脚处于悬浮状态,可作为高阻抗输入否则,在作为输入方式之前若向锁存器输出过“0”,则T2导通会使引脚箝位在“0”电平,使输入高电平“1”无法读入所以,P0口在作为通用I/O口时,属于准双向口 读锁存器:CPU在执行“读修改写”类输入指令时(如:ANL P0, A ),内部产生的操作信号是“读锁存器”,锁存器中的数据经过三态输入缓冲器1送到内部总线,然后与A的内容进行逻辑“与”,结果送回P0的端口锁存器并出现在引脚除了MOV类指令外,其他的读口操作指令都属于这种情况3) P0口用作地址/数据总线 当系统需要扩展片外的ROM或扩展片外RAM时,P0口就作地址/数据总线用。

CPU及内部控制信号为“1”,使转换开关MUX打向上面的触点, 使反相器的输出端和T2管栅极接通若地址/数据线为1,则T1导通,T2截止,P0口输出为1;反之T1截止,T2导通,P0口输出为0当数据从P0口输入时,读引脚使三态缓冲器2打开,端口上的数据经缓冲器2送到内部总线 P0口作为地址/数据总线使用时是一个真正的双向口 (4) P0口小结 P0口既可作地址/数据总线使用,也可作通用I/O口使用当P0口作地址/数据总线使用时,就不能再作通用I/O口使用了 P0口作输出口使用时,输出级属漏极开路,必须外接上拉10K电阻,才有高电平输出 P0口作输入口读引脚时,应先向锁存器写1,使V2截止,不影响输入电平P1口某一位的结构图如图2-10所示,由图可见,电路是由一个输出锁存器(D触发器)、两个三态输入缓冲器(1和2)、一个输出驱动电路(T和上拉电阻)组成 P1口作为通用I/O口使用由于在其输出端接有上拉电阻,故可以直接输出而无需外接上拉电阻 当P1口作输入口时,必须先向锁存器写“1”,使场效应管T截止图 2-10 P1口 某位 的结构,2.3.3 P1口,2.3.4 P2口 P2口某一位的结构图如图2-11所示,由图可见,电路是由一个输出锁存器(D触发器)、两个三态输入缓冲器(1和2)、一个转换开关MUX、一个反向器、一个输出驱动电路(T和上拉电阻)组成。

1、P2用作通用I/O口 当系统不在片外扩展程序存储器ROM时,只扩展256B的片外RAM时,仅用到了地址线的低8位,P2口仍可以作为通用I/O口使用图2.11中的控制信号C决定转换开关MUX的位置:当C=0时,MUX拨向下方,P0口为通用I/O口 P2口在作为通用I/O口时,属于准双向口 2、P2用作地址总线 当系统需要在片外扩展程序存储器ROM或扩展RAM的容量超过256字节时,单片机内硬件自动使控制C=1,MUX开关接向地址线,这时P2.X引脚的状态正好与地址线的信息相同 在实际应用中,P2口通常作为高8位地址总线使用图2-11 P2口某位的结构,2.3.5 P3口 P3口某一位的结构图如图2-12所示,由图可见,电路是由一个输出锁存器(D触发器)、3个三态输入缓冲器(1、2和3)、一个与非门和一个输出驱动电路(T和上拉电阻)组成 1、P3用作第一功能(通用I/O口) P3口用作通用I/O口时,第二输出功能信号W=1,P3口的每一位都可定义为输入或输出,其工作原理同P1口类似 P3口作为通用I/O口时,属于准双向口 2、P3用作第二功能使用 当CPU不对P3口进行字节或位寻址时,内部硬件自动将口锁存器的Q端置1。

这时,P3口作为第二功能使用在真正的应用电路中,P3口的第二功能显得更为重要 图2-12 P3口某位的结构,2.3.6 P0P3口使用时应注意事项 1、如果80C51单片机内部程序存贮器ROM够用,不需要扩展外部存贮器和I/O接口,80C51的四个口均可作I/O口使用 2、四个口在作输入口使用时,均应先对其写“1”,以避免误读 3、P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必 4、P2可某几根线作地址使用时,剩下的线不能作I/O口线使用5、P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用2.3.7 I/O端口带负载能力 1、P0、P1、P2、P3口的电平与CMOS和TTL电平兼容 2、P0口的每一位能驱动8个LSTTL负载在作为通用I/O口使用时,输出驱动电路是开漏的,所以,驱动集电极开路(OC门)电路或漏级开路电路需外接上拉电阻当作为地址/数据总线使用时(T1可以提供上拉电平),口线不是开漏的,无需外接上拉电阻 3、P1P3口的每一位能驱动4个LSTTL负载它们的输出驱动电路有上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏级开路电路所驱动,而无需外接上拉电阻。

4、对于80C51单片机(CHMOS),端口只能提供几毫安的输出电流,故当作输出口去驱动一个普通晶体管的基极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流80C51单片机带负载能力,1、最大灌电流 每个P口平均10mA P0口26mA; P1、 P2、 P3口15mA 2、拉电流80 A2.3.8 P口应用实例,【例1】点亮LED0灯 用C语言实现 方法1: #include //包含51单片机寄存器定义的头文件 void main(void) P1=0 xfe; //P1=1111 1110B,即P1.0输出低电平 方法2:用位操作 #include //包含51单片机寄存器定义的头文件 Sbit D1=P10; //位操作 void main(void) D1=0; //P1.0=0 ,即P1.0输出低电平 ,,【例2】点亮LED0灯用汇编语言实现,方法1: ORG 0000H MOV P1,#0FEH;即P1.0输出低电平 END 方法2:用位操作 ORG 0000H SETB P1.0;即P1.0输出低电平 END,【例3】点亮LED0LED7灯用C语言实现 #include //包含51单片机寄存器定义的头文件 void main(void) //两个void意思分别为无需返回值,没有参数传递 P1=0 x00; //P1=0000 0000B,即P1口输出低电平 用汇编语言实现 ORG 0000H MOV P1,#00H;即P1口输出低电平 END,//实例4:用单片机控制一个灯LED0闪烁:认识单片机的工作频率,#include //包含单片机寄存器的头文件 /**************************************** 函数功能:延时一段时间 *****************************************/ void delay(void) //两个void意思分别为无需返回值,没有参数传递 unsigned int i; //定义无符号整数,最大取值范围65535 for(i=0;i<20000;i++) //做20000次空循环 ; //什么也不做,等待一个机器周期 /******************************************************* 函数功能:主函数 (C语言规定必须有也只能有1个主函数) ********************************************************/ void main(void) while(1) //无限循环 P1=0 xfe; //P1=1111 1110B, P1.0输出低电平 delay(); //延时一段时间 P1=0 xff; //P1=1111 1111B, P1.0输出高电平 delay(); //延时一段时间 ,//实例5:将 P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能,#include //包含单片机寄存器的头文件 /******************************************************* 函数功能:主函数 (C语言规定必须有也只能有1个主函数) ********************************************************/ void main(void) while(1) //无限循环 P1=0 xf7;// P1=1111 0111B,灯亮LED3其余熄灭 P0=P1;// 将 P1口状态送入P0口 P2=P1; // 将 P1口状态送入P2口 P3=P1; // 将 P1口状态送入P3口 ,,//实例6:使用P3口流水点亮8位LED #include //包含单片机寄存器的头文件 /**************************************** 函数功能:延时一段时间 *****************************************/ void delay(void) unsigned char i,j;定义无符号字符型变量,单字节数据,值域0255 for(i=0;i<250;i++) for(j=0;j<250;j++) ; /*******************************************************,,函数功能:主函数 ********************************************************/ void main(void) while(1) P3=0 xfe; //第一个灯亮 delay(); //调用延时函数 P3=0 xfd; //第二个灯亮 delay(); //调用延时函数 P3=0 xfb; //第三个灯亮 delay(); //调用延时函数 P3=0 xf7; //第四个灯亮 delay(); //调用延时函数 P3=0 xef; //第五个灯亮 delay(); //调用延时函数 P3=0 xdf; //第六个灯亮 delay(); //调用延时函数 P3=0 xbf; //第七个灯亮 delay(); //调用延时函数 P3=0 x7f; //第八个灯亮 delay(); //调用延时函数 ,,/实例7:通过对P3口地址的操作流水点亮8位LED #include //包含单片机寄存器的头文件 sfr x=0 xb0; //P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作 /**************************************** 函数功能:延时一段时间 *****************************************/ void delay(void) unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ; //利用循环等待若干机器周期,从而延时一段时间 ,,/***************************************** 函数功能:主函数 ******************************************/ void main(void) while(1) x=0 xfe; //第一个灯亮 delay(); //调用延时函数 x=0 xfd; //第二个灯亮 delay(); //调用延时函数 x=0 xfb; //第三个灯亮 delay(); //调用延时函数 x=0 xf7; //第四个灯亮 delay(); //调用延时函数 x=0 xef; //第五个灯亮 delay(); //调用延时函数 x=0 xdf; //第六个灯亮 delay(); //调用延时函数 x=0 xbf; //第七个灯亮 delay(); //调用延时函数 x=0 x7f; //第八个灯亮 delay(); //调用延时函数 ,【例】 设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED 亮、 开关打开,LED熄灭。

分析:根据题意设计电路如图2-13如示 开关接在P1.1口线,LED接P1.0口线,当开关断开时,P1.1为+5V,对应数字量为“1”,开关合上时P1.1电平为0V,对应数字量为“0”,这样就可以用JB指令对开关状态进行检测 LED正偏时才能发亮,按电路接法,当P1.0输出“1”,LED正偏而发亮,当P1.0 输出“0” ,LED 的两端电压为 0 而熄灭图2-13,仿真链接,编程如下: ORG 0000H LJMP MAIN ORG 1000HMAIN: CLR P1.0 ;使发光二极管灭LOOP: SETB P1.1 ;先对P1口写入“1” JB P1.1,L1 ;开关开,转LIG SETB P1.0 ;开关合上,二极管亮 SJMP AGAL1: CLR P1.0 ;开关开,二极管灭 SJMP LOOP END 注意:在上述电路图中二极管亮度不够,按下面两种电路接法,增加了驱动能力,二极管更亮些1、接成灌电流形式:,2、加驱动电路:,,2.4 80C51时钟电路与时序 2.4.1 时钟电路 80C51单片机的时钟信号用来提供单片机内各种微操作时间基准。

80C51单片机的时钟信号通常有两种电路形式:内部振荡方式和外部振荡方式 1、内部振荡方式 在引脚 XTAL1和 XTAL2外接晶体振荡器(简称晶振)如图2-14所示 电容器C1、C2起稳定振荡频率、快速起振的作用电容值一般为 530PF(常用30PF)晶振的振荡频率范围在1.2MHZ12MHZ(一般取12MHZ或6MHZ)由于单片机内部有一个高增益运算放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲图2.14内部振荡方式,2、外部振荡方式 是把已有的时钟信号引入单片机这种方式适宜用于使单片机的时钟与外部信号保持一致外部振荡方式如图2-15所示对HMOS的单片机(8051)外部时钟信号由XTAL2引入,对于CHMOS的单片机(80C51),外部时钟由XTAL1引入外部时钟信号为高电平持续时间要大于20ns,且频率低于12MHz的方波图2.15 外部振荡方式,2.4.2 时序 80C51的时序就是80C51在执行指令时所需控制信号的时间顺序80C51单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期 1、时钟周期 把晶振周期定义为节拍(用P表示)。

晶振脉冲经过二分频后,就是单片机的时钟周期(即一个时钟周期是晶振周期的2倍),时钟周期也称为状态(用S表示) 这样,一个状态就包含两个节拍,具前半周期对应的拍节叫节拍1(P1),后半周期对应的节拍叫节拍2(P2) 2、状态周期 状态周期(或状态S)是晶振周期的两倍,它分为P1节拍和P2节拍3、机器周期 80C51采用定时控制方式, 因此它有固定的机器周期规定一个机器周期的宽度为6个状态,并依次表示为S1S6由于一个状态又包括两个节拍,因此,一个机器周期总共有12个节拍,分别记作S1P1、S1P2、、S6P2由于一个机器周期共有12个晶振周期, 因此机器周期就是晶振脉冲的十二分频 当晶振脉冲频率为12 MHz时,一个机器周期为1s;当晶振脉冲频率为6 MHz时,一个机器周期为2s 4、指令周期 指令周期是最大的时序定时单位, 执行一条指令所需要的时间称为指令周期它一般由若干个机器周期组成不同的指令,所需要的机器周期数也不相同通常,包含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令 指令的运算速度与指令所包含的机器周期有关,机器周期数越少的指令执行速度越快。

80C51单片机通常可以分为单周期指令、双周期指令和四周期指令等三种四周期指令只有乘法和除法指令两条,其余均为单周期和双周期指令单片机执行任何一条指令时都可以分为取指令阶段和执行指令阶段80C51的取指/执行时序如图2-16所示 由图2.16可见,ALE引脚上出现的信号是周期性的,在每个机器周期内出现两次高电平第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间ALE信号每出现一次,CPU就进行一次取指操作,但由于不同指令的字节数和机器周期数不同,因此取指令操作也随指令不同而有小的差异 按照指令字节数和机器周期数,80C51的111条指令可分为6类,分别是:单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令,可以参见附录A 图2-16(a),(b)所示分别给出了单字节单周期和双字节单周期指令的时序单周期指令的执行始于S1P2,这时操作码被锁存到指令寄存器内若是双字节,则在同一机器周期的S4读第二字节若是单字节指令,则在S4仍有读操作,但被读入的字节无效,且程序计数器PC并不增量 图2-16(c)给出了单字节双周期指令的时序,两个机器周期内进行4次读操作码操作。

因为是单字节指令,所以,后三次读操作都是无效的图2-16 80C51的典型时序,,5、80C51单片机的时序小结 晶振周期:晶振的振荡周期,又称时钟周期,为最小的时序单位 状态周期:振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期因此,一个状态周期包含2个晶振周期 机器周期(MC):1个机器周期由6个状态周期及12个晶振周期组成是计算机执行一种基本操作的时间单位 指令周期:执行一条指令所需的时间一个指令周期由14个机器周期组成,依据指令不同而不同 4种时序单位中,晶振周期和机器周期是单片机内计算其他时间值(例如,波特率、定时器的定时时间等)的基本时序单位 例:单片机外接晶振频率12MHZ时的各种时序换算: 晶振周期=1/fosc=1/12MHZ=0.0833us 状态周期=2/fosc=2/12MHZ=0.167us 机器周期=12/fosc=12/12MHZ=1us 指令周期=(14)机器周期=14us 2.5 80C51复位电路 2.5.1 80C51复位电路 80C51单片机复位的目的是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第一个单元取指令。

80C51单片机复位的条件是:必须使RST端(9脚)加上持续两个机器周期(即24个晶振周期)的高电平例如,若时钟频率为12 MHz,每机器周期为1s,则只需2s以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位单片机常见的复位电路如图2-17(a)、(b)所示 图2-17(a)为上电复位电路,它是利用电容充电来实现的在接电瞬间,RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降只要保证RST为高电平的时间大于两个机器周期,便能正常复位图2-17(b)为按键复位电路该电路除具有上电复位功能外,若要复位,只需按图2-17(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平电路中通常选择:C=10f ,R=10K图2-17复位电路,(a)上电自动复位,(b) 按键手动复位,2.5.2 80C51单片机复位后的状态 80C51单片机的复位功能是把PC初始化为0000H,使CPU从0000H单元开始执行程序;复位操作同时使SFR寄存器进入初始化,但内部RAM的数据是不变的 几个主要特殊功能寄存器复位状态归纳如表2-6。

对个别特殊功能寄存器作如下说明: PC=0000H: 程序计数器为零表明单片机复位后程序从0000H地址单元开始执行 A=00H: 表明累加器已被清零 PSW=00H: 表明选寄存器0组为工作寄存器组 SP=07H: 表明堆栈指针指向片内RAM 07H单元,根据堆栈操作的先加后压法则,第一个被压入的数据被写入08H单元中, 一般需重新设置SP值 P0P3=FFH: P0P3口用作输入口时,必须先写入“1”单片机在复位后,已使P0P3口每一端线为“1”,为这些端线用作输入口做好了准备其中,表示无关位 记住一些特殊功能寄存器复位后的主要状态,对于熟悉单片机操作,减短应用程序中的初始化部分是十分必要的表2-6主要特殊功能寄存器复位状态,2.6 常用8位单片机系列介绍 2.6.1 AT系列单片机 Atmel公司是美国著名的高性能,低功耗,非易失性存储器和数字集成电路的一流半导体制造公司AT系列单片机主要有AT89、AT90、AT91和智能IC卡等四种产品系列产品主要特点是:E2PROM存储技术和Flash闪速存储器技术世界领先 一、AT89系列单片机 AT89系列8位单片机可分为标准型、低档型和高档型三类。

低档型单片机有AT89C51和AT89C2051两种型号;标准型单片机有AT89C51、AT89LV51、AT89C52、AT89LV52、AT89C55、AT89LV55六种型号;高档型单片机有AT89S53、AT89S8252和AT89S4D12等型号其中,数字9表示内含Flash存储器,C表示CMOS工艺,LV表示低电压,S表示含有串行下载Flash存储器,51、52和8252等表示型号 AT89系列的主要单片机性能指标见表2-7所示表2-7 AT89系列的主要单片机性能指标,二、AT90系列单片机 AT90系列单片机是 Atmel 公司 1997 年推出的 RISC (精简指令系统计算机)8位单片机,也称为AVR系列单片机 AVR片机的 I/O 接口具有很强的驱动能力,灌电流可直接驱动继电器、LED等器件,从而省去驱动电路,节约系统成本 AVR单片机除具有低功耗、高密度的特点外,还支持低电压的联机 Flash,EEPROM 写入功能 AVR单片机还支持 Basic、C 等高级语言编程 AVR单片机系列齐全,可适用于各种不同场合的要求 AT90S系列: 主要有AT90S1200/2313/4414/8515/8535等。

见表2-8所示表28 AT90系列单片机特性表,2.6.2 Motorola公司的8位单片机 一、Motorola公司的8位单片机 Motorola公司于1979年推出真正的单片机M6801,采用NMOS工艺,内含2.5万只晶体管 Motorola的M6805系列,M68HC05系列和M68HC11系列单片机是国际上应用最广泛的8位主流机型之一,约占8位市场的30%份额 M68HC05系列单片机的基本结构和M6805相似,但功能更为强大M68HC05比M6805增加了乘法和低功耗控制制指令,指令执行速度比M6805要快34倍 M68HC11系列单片机是Motorola公司的8位高性能单片机,1984年推出,采用HCMOS工艺制造,具有灵活的CPU、大量面向控制的外围接口以及更加复杂的I/O功能,工作温度范围广、可靠性高、抗干扰能力强,内部资源丰富其主要特点为: (1)CPU有两个8位或一个16位累加器和两个16位变址寄存器,新增了可用于16位变址运算、16位乘除运算、位操作和功耗操作等指令,共有指令91条,总线速度高达4MHZ (2)片内ROM存储器为032KB,片内RAM存储器为1921250B,EPROM容量为432KB,E2PROM为02KB。

(3)片内I/O功能丰富而且灵活 (4)片内定时器具有输入捕捉和输出比较功能,Watchdog功能 (5) 4路DMA可以加速存储器和外部设备间的数据传送,一个MMU可以使原来寻址64KB的物理空间扩展到1MB二、Motorola公司单片机命名的方法,2.6.3 Microchip(微芯)PIC系列单片机 PIC是由美国Microchip(微芯)公司推出的8位高性能单片机,该系列单片机是业内首先采用RISC结构的单片机系列,其总线结构采用指令线和数据线分离的哈佛(Harvard)结构 ,使之具有很高的流水处理速度 PIC8位系列单片机的主要特点:精简了指令集,使得指令少,执行速度快,内部采用双总线的哈佛结构,便于实现双流水线或多流水线以提高处理速度同时PIC系列单片机的功耗低,驱动能力强,有的型号单片机还具有I2C和SPI串行总线端口,有利于用单片机串行总线来扩充外围器件PIC系列单片机的产品分高、中、基本三个档次PIC系列单片机的特性见表2-9所示表2-9 PIC系列单片机的特性,2.6.4 台湾Winbond(华邦)公司W78E51系列单片机 W78E系列单片机是台湾Winbond(华邦)公司推出的CMOS型单片机系列,它具有较好的性价比、功能强、型号多等可满足不同的应用场合的需求。

华邦的系列单片机分为标准系列型、宽工作电压系列型、涡轮-51系列型和工作级别系列型四个档次 1、标准型系列单片机片内程序存储器采用闪存EPROM,容量从4KB64KB不等;片内数据存储器容量从128B1KB;I/O口线有32位、36位及40位;23个定时计数器,中断源58个;具有CMOS通用功能、可多次编程、可编程、4流水线功能、具有特殊的I/O端口、外部中断增加了个, ;外部存储器可从64KB1MB 2、宽工作电压系列型,其工作电压可从1.8V5.5V范围内工作涡轮-51系列型工作电压从2.7V5.5V范围,4时钟/机器周期,提供了两个UART接口和两个DPTR寄存器,提供了等待状态信号WDT等特殊功能 3、工作级别系列型有3个定时计数器和看门狗等多种功能 4、标准型系列单片机的性能参数见表2-10,表2-10 华邦W78标准型系列单片机性能指标,2.7 16位单片机介绍 16位单片机内部的CPU是16位的,它对数据处理的能力通常比8位单片机强下面介绍Intel和Motorola两家公司的16位单片机 2.7.1 Intel公司的16位单片机 Intel公司于1984年推出16位高性能MCS96系列单片机,该系列包括8096BH、8096和8098三个子系列。

主要性能有:一个16位CPU可以直接面向256字节寄存器空间;16位乘16位和32位除以16位的乘除操作速度为6.25 微秒;8路10位A/D转换器;9个中断源和5个8位I/O口;一个8KB和ROM存储器;一个全双工串行口,一个专用串行口;两个16位定时器/计算器,一个16位监视定时器,四个16位软件定时器;高速输入(HSI)和高速输出(HSO)。

下载提示
相关文档
正为您匹配相似的精品文档