目录
2.1 MCS-51单片机的结构
2.1.1 MCS-51单片机的内部结构
80C51单片机的内部资源主要包括:
CPU(Central Processing Unit )
2.1.2 MCS-51引脚及功能
封装
80C51单片机的40只引脚
2.2 MCS-51的存储器结构
2.2.1 存储器划分方法
计算机存储器地址空间
80C51哈佛结构
2.2.2 程序存储器(ROM)
2.2.3 数据存储器(RAM)
(1)片内256B 的RAM
(2)片外64KB 的RAM
2.3 单片机的复位、时钟与时序
2.3.1 复位与复位电路 (条件、状态、原理、图示)
2.3.2 时钟电路(电路、频率典型取值)
2.3.3 单片机时序 (时序图,四个周期的概念与关系)
1. 时序的概念
2. 单片机时序
2.4 并行I/O口
前言
作用(4个)
2.4.1 P1口
P1口介绍
P1.n的通用I/O口三种工作方式:
P1口驱动能力
P1口的要点
2.4.2 P3口
结构
P3.n通用I/O口工作方式
P3口的第二功能方式
P3口第二功能定义
编辑
P3口驱动能力(同P1口)
P3口的要点
2.4.3 P0口
结构
作用
漏极开路与上拉电阻的概念编辑
P0.n的通用I/O口工作方式
P0.n的地址/数据分时复用方式
P0口的驱动能力
P0口的要点
2.4.4 P2口
结构编辑
P2.n的通用IO口方式
P2.n的地址输出口方式
P2口的驱动能力
P2口的要点
总结
本章小结
2.1 MCS-51单片机的结构
MCS-51系列单片机分为51和52两个系列,但是考虑到产品的代表性,以后都将以80C51为例进行介绍。
2.1.1 MCS-51单片机的内部结构
MSC-51单片机的内部结构包含了作为微型计算机所必须的基本功能部件,如CPU、RAM、ROM、定时/计数器和可编程并行I/O口、可编程串行口。这些功能部件通常都挂靠在单片机内部总线上,通过内部总线传送数据信息和控制信息。
80C51单片机的内部资源主要包括:
1个8位中央处理器(CPU)——,可以见“2.2.1MCS-51单片机的内部结构”,通常是单核的,它会使用8位来存储数据,但是会用16位(两个8位)来存储地址1个片内振荡器和时钟电路——可以见“2.3.2 时钟电路”4KB片内程序存储器(ROM)——可以见“2.2.2 程序存储器”,4KB的空间可以用十六进制0~0FFFH来表示,这只是片内ROM,空间不够可以在外面添加256字节的片内RAM——可以见“2.2.3 数据存储器”,256字节的空间可以用十六进制0~0FFH来表示,这只是片内RAM,空间不够可以在外面添加;这个256字节的片内RAM分为两个部分:前128B和后128B,其中包含着特殊功能存储器SFR2个16位定时/计数器T/C(T0、T1)——可以见“第6章 单片机的定时/计数器”,分为定时器和计数器,其中定时器:多为12MHz,也可以为6MHz、24MHz等,甚至可以为11.0592MHz;计数器:通常是受时沿影响;52系列的还有T2可寻址64KB外部程序存储器和64KB数据存储空间的控制电路——64KB的空间可以用十六进制0~0FFFFH来表示,是使用16位来存储地址4个8位双向I/O口——可以见“2.4 并行I/O口”,P0~P31个全双工串行口UART——可以见“第7章 单片机的串行口及应用”5个中断源INT——可以见“第5章 单片机的中断系统”,有2个外中断和3个内中断,其中外部中断可以通过按键来进行,内部中断可以通过串行口和2个定时/计数器来进行其中,教材结构可以见我写的专栏中的“单片机_介绍”。
SCM——将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统(单片机诞生后大体经历了SCM、MCU和SoC三大阶段)
SCM = CPU+OSC+ROM+RAM+T/C+INT+ BEC+I/O+UART
CPU(Central Processing Unit )
单片机内部资源中最核心的部分是CPU,它是单片机的大脑和心脏。CPU的主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传送、数据运算、逻辑运算等处理。·
CPU = 控制器 + 运算器
控制器
控制器的作用:对取自程序存储器的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的信号。
控制器的用途:统一指挥和控制各单元协调工作
控制器的任务:从ROM中取出指令→译码→执行指令
控制器的组成:程序计数器PC、数据指针寄存器DPTR、指令寄存器IR、指令译码器ID(主要讲PC和DPTR)
(1)程序计数器(Program Counter——PC)(不属于特殊功能寄存器SFR)
指向ROM存储单元的地址指针(引导程序运行)
16位寄存器(寄存器:放置于CPU内的存储器)→可寻址范围2^16(= 65536B= 64KB)
永远存放着下一条指令的首地址,即PC内容决定着程序的运行轨迹
当CPU要取指令时,PC的内容就会出现在地址总线上;取出指令后,PC的内容可自动加“1” ,以保证程序按顺序执行(即没有分支,不是循环,不是跳转)
具有可被指令修改(如汇编语言:MOV A,@A+PC)功能(不能读写)→跳转运行程序功能
复位时,PC初值=0,即0000H →复位后程序从0000H地址处的指令开始运行
PC不属于特殊功能寄存器SFR(可以见之后的“2.2.3 数据存储器”中的“SFR的名称及其分布”)
PC中的计数值可被编程指令修改
PC不可寻址RAM,只可以寻址ROM
(2)数据指针寄存器(Data Pointer ——DPTR)
指向ROM或RAM存储单元的地址指针(引导数据传送)
16位的专用地址指针寄存器,可寻址范围2^16(64KB)
可拆为2个8位的独立寄存器DPL(DPTR的低8位)和DPH(DPTR的高8位)
DPTR既可以作为一个16位寄存器来使用,但也可以作为两个独立的8位寄存器来使用。
具有可被指令修改功能→可变更数据地址
例如,将地址2000H放入DPTR中
方法1(C语言):DPH=0x20; DPL=0x00;
方法2(汇编语言):MOV DPTR, #2000H
DPTR可以用来存放片内ROM的地址,也可以用来存放片外RAM和片外ROM的地址(即不能存放片内RAM的地址)。
运算器
运算器的用途:对数据进行算术运算和逻辑操作
运算器的任务:计算缓存器内容→结果暂存→修改运行标志
运算器的组成:累加器ACC、算术逻辑部件ALU、程序状态字寄存器PSW等。
为了提高数据处理速度,片内还增加了一个通用寄存器B和一些专用寄存器与位处理逻辑电路。
(1)累加器(Accumulator——A或ACC)
存放操作数或中间运算结果的寄存器
8位寄存器,简称为A,通过暂存器与ALU相连
其值可由指令修改
是最繁忙的寄存器
(2)程序状态字寄存器(Program State Word——PSW)——存放程序运行过程中的各种状态信息的寄存器
存放程序运行过程中的各种状态信息的寄存器
8位寄存器,各位都具有特殊含义
状态值可由硬件形成或由指令修改
CY(PSW.7)——进位标志
在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。
用途:1、可根据CY判断有无进位或借位;2、可作为位操作中的位累加器用。
位操作:是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器 上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。
包括取反(NOT)、按位或(OR)、按位异或(XOR)、按位与(AND)等。
AC(PSW.6)——辅助进位标志
在进行加或减运算时,如果操作结果的低四位数向高四位产生进位或借位时,将由硬件置“1”,否则清“0”。
用途:1、根据AC判断加减运算时有无半进位或半借位;2、在BCD码调整运算中要用到AC标志
F0(PSW.5)和F1(PSW.1)——用户标志位
用途: 由用户置位或复位,可做为用户指定的状态标志
置位/复位
简单来讲就是:复位就是清0,置位就是置1。
触发器可以理解为一个执行机构(有两个状态,执行或不执行),复位的时候不执行,置位的时候执行。
RS触发器它的输出在复位的时候为0,置位的时候输出为1,这个RS触发器有两个控制输出状态的引脚R(复位)跟S(置位),R脚为1时,RS触发器强制输出0(在满足输入信号符合高低电平的要求下,不管S脚什么状态),如果R脚为0时,S脚为1,RS触发器被触发,输出1,触发后,只要R脚一直是0,不管S脚怎样变化,RS触发器输出都不变,为1。(与数字模拟电路有关)
置位需要强制性给定一个输入。而复位却可以在循环程序里使用。举个例子。你可以把输入全置1。但复位却可以无限次的把输入置1。只要不跳出循环,当预定义的置位值和复位置等价,那复位可以看成无限次的自动置位。
RS1(PSW.4)和RS0(PSW.3)——工作寄存器组指针
用途:用于指定CPU的当前工作寄存器组
OV(PSW.2)——溢出标志
在有符号数加减运算或无符号数乘除运算中(没有“无符号数的加减运算”)若有异常结果,OV硬件置1,否则硬件清0。
用途:判断运算的结果是否正确,正确 = 0;出错 = 1
简便方法:OV=C6Y异或C7Y
P(PSW.0)——奇偶标志位
该位始终跟踪累加器A中含“1”个数的奇偶性
如果A中有奇数个“1”,则P置“1”,否则置“0”,其实在两数相加时,也是求PSW.7-PSW.1的奇偶个数
举例若A =1001 1111,则P=0
若A =1100 0001,则P=1
用途:串行通讯中的数据校验,判断是否存在传输错误。
2.1.2 MCS-51引脚及功能
封装
51系列单片机一般采用HMOS制作工艺的40只引脚的双列直插式(DIP——Dual In-line Package)封装结构
除DIP封装外, 51单片机还采用44只引脚的方形扁平(QFP——Quad Flat Package) 封装方式(4只引脚无用)。
80C51单片机的40只引脚
功能划分
电源及晶振引脚(共4只)
电源引脚(CPU必须,有源器件)
VCC (40脚):+5V电源引脚(直流电,测示波器)
VSS (20脚): 接地引脚
晶振引脚
XTAL1 (19脚);外接晶振引脚(内置放大器输入端)
XTAL2 (18脚):外接晶振引脚(内置放大器输出端)
是CPU所必须的,没有正负极区分
晶振分为有源晶振和无源晶振,有无正负极也是有区别的:
1、无源晶振只有两个引脚,没有所谓的正负极。
2、有源晶振需要接电源才能工作,一般有四个引脚,其中有两个电源输入引脚,有正负极之分。
晶体振荡器是指从一块石英晶体上按一定方位角切下薄片,简称为晶片,石英晶体谐振器,简称为石英晶体或晶体、晶振;而在封装内部添加IC组成振荡电路的晶体元件称为晶体振荡器。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装。
应用:
1、通用晶体振荡器,用于各种电路中,产生振荡频率;
2、时钟脉冲用石英晶体谐振器,与其它元件配合产生标准脉冲信号,广泛用于数字电路中;
3、微处理器用石英晶体谐振器;
4、CTVVTR用石英晶体谐振器;
5、钟表用石英晶体振荡器。
控制引脚(共4只)
RST/VPD(9):复位/ 备用电源引脚
复位端RST:电源上机后,其内部各寄存器都处于随机状态。若在该引脚上输入满足复位时间要求(系统时钟振荡周期建立时间再加2个机器周期时间)的高电平,将使单片机复位。(可以见“2.3.1 复位与复位电路”)
备用电源端V PD:在主电源掉电期间,可利用该引脚处外接的+5V备用电源为单片机片内RAM供电,保证片内RAM信息不丢失,以便电压恢复正常后单片机能正常工作。
ALE/PROG(30):地址锁存使能输出/ 编程脉冲输入
地址锁存使能输出ALE(该引脚为高电平时起作用)
当单片机访问外部存储器时,外部存储器的16位地址信号由P0口输出低8位,P2口输出高8位,ALE可用作低8位地址锁存控制信号。
当不用作外部存储器地址锁存控制信号时,该引脚仍以时钟脉冲频率的1/6(即ALE在每个机器周期内输出两个脉冲)固定输出正脉冲。
编程脉冲输入端PROG(该引脚为低电平时起作用):对含有EPROM的单片机(如87C51型),在进行片内EPROM编程时需要由此输入编程脉冲。
EPROM由以色列工程师Dov Frohman发明,是一种断电后仍能保留数据的计算机储存芯片——即非易失性的(非挥发性)。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦编程完成后,EPROM只能用强紫外线照射来擦除。通过封装顶部能看见硅片的透明窗口,很容易识别EPROM,这个窗口同时用来进行紫外线擦除。可以将EPROM的玻璃窗对准阳光直射一段时间就可以擦除。
PSEN (29):输出访问外部ROM读选通信号
EA/ VPP (31):外部ROM允许访问/ 编程电源输入
外部ROM允许访问EA:(可以见“2.2.2 程序存储器”)·
低电平时,选用片外程序存储器;
高电平或悬空时选用片内程序存储器。
端口引脚(共32只)
P0.0~P0.7(39~32脚)——P0口:通用I/O口,外扩存储器作为八位数据线和低八位地址线。
P1.0~P1.7(1~8脚)——P1口:通用I/O口
P2.0~P2.7(21~28脚)——P2口:通用I/O口,外扩存储器作为高八位地址线。
P3.0~P3.7(10~17脚)——P3口:通用I/O口,第二功能
当单片机访问外部存储器时,外部存储器的16位地址信号由P0口输出低8位,P2口输出高8位,ALE可用作低8位地址锁存控制信号。
8只/组×4 组= 32 只引脚
P0口~P3口是单片机对外联络的重要通道
P0~P3口都可以作为通用输入/输出(I/O)口使用。此外,P0和P2还具有单片机地址/数据总线口作用,P3具有第二功能口作用。
2.2 MCS-51的存储器结构
2.2.1 存储器划分方法
计算机存储器地址空间
两种结构形式:普林斯顿结构和哈佛结构。
普林斯顿结构,也称冯·洛伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构,即ROM和RAM位于同一存储空间的不同物理位置处(统一编址)。由于指令和数据具有相同的宽度,CPU可以使用相同指令访问ROM和RAM。
哈佛结构,是一种将程序指令存储器和数据存储器分开设置的存储器结构,即ROM和RAM位于不同的存储空间。ROM和RAM中的存储单元可以有相同的地址(独立编址),CPU需采用不同的访问指令加以区别。哈佛结构有利于减轻程序运行时的访存瓶颈。
80C51哈佛结构
物理地址
51单片机采用哈佛结构(存在地址重叠),共有4个物理存储空间:片内RAM(256B)、片内ROM(4KB)、片外RAM(64KB)、片外ROM(64KB)
逻辑地址
51单片机的4个物理存储空间仅相当于3个逻辑存储空间。其中,片内、片外程序存储器ROM是统一编址的(即普林斯顿结构)。
外部ROM允许访问EA:(可以见“2.2.2 程序存储器”)·
低电平时,选用片外程序存储器(只使用64KB的片外ROM存储器);
高电平或悬空时选用片内程序存储器(即先使用4KB的片内ROM存储器,再使用4KB以后的片外ROM存储器)。
编程指令
为区别不同存储空间的存储单元,需要使用不同的编程指令。
MOV指令用于访问片内数据存储器
MOVC指令用于访问片内、片外程序存储器
MOCX指令用于访问片外数据存储器
补充:存储器数字含义
例6264:62——RAM,64——8KB*8(片外RAM)
例2764:27——ROM,64——8KB*8(片外ROM)
2.2.2 程序存储器(ROM)
作用:存放程序、表格或常数,具有非易失性
特点:片内ROM与片外ROM可有2种组合方案
方案1 : 4 KB以内的地址在片内ROM,大于4KB的地址在片外ROM中(图中折线),两者共同构成64KB空间;(EA引脚接高电平时)(此时不访问片外ROM的前4KB)
方案2 :片内ROM被禁用,全部64KB地址都在片外ROM中(图中直线)。(EA引脚接低电平时)
2种组合方案由EA引脚的电平状态决定:EA=1时为方案1,EA=0时为方案2。
EA引脚接高电平时,可同时使用2种ROM (片外ROM可以缺省);
EA引脚接低电平时,仅使用片外ROM(片外ROM不可缺省) 。
由于片内、外ROM是统一编址的(普林斯顿结构),故只能算作1个逻辑存储空间。(可以见“2.2.1 存储器划分方法”的“80C51哈佛地址”中的“逻辑地址”)
如果用户使用80C51型单片机且程序需长度不超过4KB,则无须拓展片外ROM,仅使用片内ROM即可,但必须使EA引脚接V(CC)或使其悬空(默认为高电平状态)
ROM有6个特殊存储器单元——用于程序引导
专为复位和中断功能而设计的
0000H是程序的首地址(可以见“2.3.1 复位与复位电路”),单片机复位后程序将从这个单元开始运行,一般在该单元中存放一条跳转指令跳转至用户设计的主程序
中断程序执行过程(具体见“第5章 单片机的中断系统”):某一突发事件→相应中断入口地址自动装入PC→引导两次跳转→执行相应中断服务程序
有中断需要时,主程序一般应安排在0030H地址以后,因为0000H-0030H中的部分地址(如上图)被中断源占了
2.2.3 数据存储器(RAM)
作用:存放运算中间结果、标志位、待调试的程序
数据存储器由RAM构成,一旦掉电,其数据将丢失
字长:8位
数据存储器在物理上和逻辑上都占有两个地址空间:
(1)片内256B 的RAM
数量:128B+128B(80C51)
低128B( 00H~7FH )为普通RAM区
①工作寄存器区(00H~1FH)
区共有32个存储单元;32个单元分为4组(第0 ~ 第3组),每个单元有1个寄存器名称(R0~R7)
每个单元都有1个8位地址(字节地址),但是不会进行位寻址
CPU复位后RS1和 RS0(分别位于PSW的位4、位3,RS1在高位)默认值为0,即默认第0组为当前工作寄存器组。
CPU只能选一组为当前工作寄存器组,当前工作寄存器组取决于PSW的设置
②可位寻址区(20H~2FH)
共有16个存储单元;
每个单元都有一个字节地址
每个单元都有8个不同的位地址
可以字节地址和位地址两种方式存取数据
区共有128个位地址,编址为00H-7FH
③用户RAM区(又名“堆栈与数据缓冲区”)(30H~7FH)
区共有80个存储单元;
每个单元都有一个字节地址,但没有位地址,也没有寄存器名。
此区可作为堆栈区和中间数据存储区使用——用户RAM区
堆栈区可以安排在RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置(即用户RAM区)。系统复位后,SP中的内容为07H(具体内容可以见本章的“2.3.1 复位与复位电路 (条件、状态、原理、图示)”),在程序设计中,常用指令对SP的复位值进行修改,将堆栈开辟在用户RAM区(即30H-7FH)。
①区和③区只能按字节进行数据存取操作,②区则可按字节和位两种方式存取操作。
高128B (80H~FFH)为特殊功能寄存器区
每个存储单元都有一个字节地址,但只离散地分布有其中21个单元可以使用,作为特殊功能寄存器SFR,并有相应寄存器名称。
虽然其中的空闲单元占了很大比例,但对它们进行读/写操作是无意义的
其中字节地址能被8整除的特殊功能寄存器还具有位地址,可进行位寻址
SFR的名称及其分布
B寄存器为布尔型, R 和 K 寄存器为数字数据, S 寄存器是可变长度字符串数据位置。 当 R 寄存器作为字符、字节、字、短整型、BCD、长整型、双字型、双长整型、四字型或 LBCD 引用时,它将通过每次读取时递增 1 的方式来模拟不断更改的数据。
SFR承担着51单片机内部资源的管理工作
(2)片外64KB 的RAM
2.3 单片机的复位、时钟与时序
2.3.1 复位与复位电路 (条件、状态、原理、图示)
复位——使单片机恢复原始默认状态的操作(通常用于开机时以及死机时)。
复位时片内各寄存器的初始值
复位条件:
说法一:在RST(复位端)引脚端出现复位时间要求的高电平状态,该时间等于系统时钟振荡周期建立时间再加2个机器周期时间(一般不小于10ms)
说法二:在RST/VPD引脚端出现≥10ms时间的高电平(≥3V)状态
复位方式(仿真多采用上电复位,实际多采用复合复位)
2.3.2 时钟电路(电路、频率典型取值)
单片机执行指令的过程,能够可分为取指令、分析指令和执行指令三个步骤
单片机需要统一的时钟控制,其时钟系统可有两种方案:内部OSC +外部时钟电路,或内部OSC +外部时钟脉冲
内部时钟方式
利用单片机芯片内部的振荡电路实现的,此时需通过单片机的XTAL1和XTAL2引脚外接定时元件。
定时元件一般用晶体振荡器和电容组成并联谐振回路。
电容C1和C2一般取30pF左右,主要作用是帮助振荡器起振,晶体的振荡频率范围在1.2~24MHz。
晶振的取值:1.2M-24M
C1、C2的取值:20PF-100PF,一般取30pF左右
C1、C2的位置:尽量靠近XTAL1,XTAL2,减少寄生电容
晶体振荡频率越高,则系统的时钟频率也越高,单片机运行速度也就越快、
MCS-51的时钟频率一般为6~12MHz,也存在11.0592MHz(用于串行通信)。
外部时钟方式
在由多片单片机组成的系统中,为使各单片机之间的时钟信号严格同步,应当采用公用外部脉冲信号作为各单片机振荡脉冲。
此时,外部脉冲信号要经XTAL2引脚注入。
2.3.3 单片机时序 (时序图,四个周期的概念与关系)
1. 时序的概念
时序是按照时间顺序显示的对象(或引脚、事件、信息)的序列关系。
时序可以用状态方程、状态图、状态表和时序图4种方法表示,其中时序图最为常用。
时序图亦称为波形图或序列图,纵坐标表示不同对象的电平,横坐标表示时间(从左往右为时间正向轴,即时间在增长),通常坐标轴可省略。
举例芯片LCD1602的时序图
分析
(1) 最左边是引脚的标识,表示该图反映了RS(命令)、R/W(读写)、E(使能端)、D0~D7(数据端)四类引脚的序列关系。
(2) 交叉线部分表示电平的变化,如高电平和低电平。
(3) 封闭菱形部分表示数据有效范围(偶尔使用文字Valid Data)。
(4) 水平方向的尺寸线表示持续时间的长度。
时序关系
RS和R/W端首先变为低电平;
随后D0~D7端出现有效数据;
R/W低电平tsp1之后,E端出现宽度为tpm的正脉冲;
E脉冲结束并延时tHD1后,RS和R/W端恢复高电平;
E脉冲结束并延时tHD2后,D0~D7端的本次数据结束;
随后D0~D7端出现新的数据,但下次E脉冲应在tc时间后才能出现。
根据这些信息便可以进行相应的软件编程了。
时序与时钟的关系——时序要受时钟节拍的制约
时钟的度量单位:
时钟周期(或节拍)P、状态周期S、机器周期、指令周期
时钟周期(或振荡周期或节拍)P:晶振或外加振荡源的振荡周期称为时钟周期,又称为节拍,用P表示。时钟周期是单片机中最小的时序单位,晶振频率的倒数(/1fosc)
状态周期S:振荡脉冲二分频,1个状态周期等于2个时钟周期,即由节拍1和节拍2组成,用S表示。
机器周期:CPU完成一种基本操作所需要的时间。1个机器周期等于6个状态周期(或12个节拍)组成。
指令周期:CPU取出一条指令至该指令执行完(执行一条汇编语言指令)所需要的时间。1个指令周期由1~4个机器周期组成(依具体指令而定),指令周期是MCS-51单片机中最大的时序单位。
2. 单片机时序
单片机时序——CPU在执行指令时所需控制信号的时间顺序。
1、用于片内各功能部件的逻辑控制(不作介绍)
2、用于片外RAM访问或总线方式控制(内容在“8.2.1 单片机的系统总线”,大家可以在“单片机_介绍”中下载课件自己看,这里及以后我不做介绍)
单片机常用时序逻辑元件——D触发器(或边沿D触发器)(与数字电子技术有关)
正边沿D触发器
正边沿D触发器特性:只在时钟脉冲CLK上升沿到来的时刻,才采样D端的输入信号,并据此立即改变Q和/Q端的输出状态。而在其它时刻,D与Q是信号隔离的。
负边沿D触发器
负边沿D触发器工作特性:只在时钟脉冲CLK下降沿到来的时刻,才采样D端的输入信号,并据此立即改变Q和/Q端的输出状态。而在其它时刻,D与Q是信号隔离的。
D触发器的这一特性被广泛用于数字信号的锁存输出。
2.4 并行I/O口
前言
51单片机有32只I/O引脚,分属于4个端口(P0~P3)。
作用(4个)
可作为并行I/O输入通道(例如,按键/开关连接通道)——时钟电路、EA、按钮
可作为并行I/O输出通道(例如,数码管显示器连接通道)——时钟电路、EA、排阻、共阴极数码管
可作为外部设备的连接通道(例如,存储器扩展通道)——总线
可作为串行通信通道(例如,双机通讯的连接通道)
由于工作任务不同, 4个端口的内部结构也不同。但每个端口都包含一个同名的特殊功能寄存器、一个输出驱动口和输入缓冲器。对并行I/O口的控制是通过对同名的特殊功能寄存器的控制实现的。
了解4类端口的内部结构对于正确使用这些I/O端口非常重要。
以下按照先易后难的原则进行学习,即P1→P3→P0→P2
2.4.1 P1口
P1口介绍
P1口包含P1.0~P1.7共8个相同结构的电路
P1.n = 1个锁存器 + 1个场效应管驱动器V + 2个三态门缓冲器
P1.0~P1.7中的8个锁存器共同组成P1特殊功能寄存器(字节地址为90H)
场效应管V与上拉电阻R组成输出驱动器,以增大P1口带负载能力
三态门1和2在输入和输出时作为缓冲器使用
P1.n的通用I/O口三种工作方式:
P1.n的通用I/O口输出方式
单片机执行向P1口写数据指令时,如 P1=0x12; 时,P1口工作于输出方式。
P1.n的通用I/O口读引脚方式
当单片机执行从P1口读数据并存到变量val指令时,如val=P1;,P1口工作于读引脚方式。
为避免这一错误出现,只要在读引脚前先执行一条写1指令强迫V截止,引脚P1.n电平便不会再读错了,即读入内部总线的值与引脚P1.n保持一致。可见,P1口作为输入口是有条件的,要先写1。而作为输出口是无条件的,因此,P1口被称为准双向口。
(准双向口)P1作为输入口是有条件的,锁存器原来寄存的数据为1
P1.n的通用I/O口读锁存器方式
当单片机执行“读-改-写”类指令时,如P1++;,P1口工作于读锁存器方式。
此时在“读锁存器”控制下,Q端电平经过三态门2读入内部总线→在运算器中进行+1运算→结果重新写到Q端(同时也输出到P1.n)。可见,读锁存器与读引脚的效果是不同的,读锁存器是为了获得前次的锁存值,而读引脚则是为了获得引脚上的当前值。
P1口驱动能力
P1口的要点
1、 P1口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能;
2、 P1口为准双向通用口,作为通用输入口时应先使P1.n→1,作为通用输出口时是无条件的。
2.4.2 P3口
P3.n与P1.n 的差别:第二功能控制单元→双功能
结构
P3.0~P3.7中的8个锁存器构成了P3口锁存器(即特殊功能寄存器P3)(字节地址为B0H)
与P1口相比,P3口结构中多了与非门B和缓冲器T两个原件
P3.n通用I/O口工作方式
P3口的第二功能方式
P3口第二功能定义
P3口驱动能力(同P1口)
P3口的要点
1、 P3口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能;
2、 P3口为准双向通用口,作为通用输入口时应先使P3.n→1,作为通用输出口时应先使第二输出端→1 ;
3、 P3口具有第二功能方式,可实现第二输出和第二输入两种功能。
2.4.3 P0口
P0.n与P1.n 差别:输出控制电路、 输出驱动电路→总线功能
结构
P0.0~P0.7中的8个锁存器构成了P0口特殊功能寄存器(字节地址为80H)
P0口的输出驱动电路由上拉场效应管V2和驱动场效应管V1组成
控制电路包括1个与门A、1个非门X和一个多路开关MUX
其余组成与P1口相同
作用
P0口即可以作为通用I/O口进行数据的输入和输出,也可以作为单片机系统的地址/数据线使用
在CPU控制信号的作用下,多路转接电路MUX可以分别接通锁存器输出或地址/数据输出
漏极开路与上拉电阻的概念
P0.n的通用I/O口工作方式
P0.n的地址/数据分时复用方式
地址/数据输出的条件:控制端→1
数据输入时,CPU自动使Q端→1,控制端→0,故分时复用方式为无条件的真双向口
地址/数据输出时V1和V2交替导通,无需外接上拉电阻
P0口的驱动能力
P0口的输出级能以吸收(不能输出)电流的方式驱动8个LS TTL负载,即灌电流不大于800uA(没有输入)。
P0口的要点
1、P0口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能;
2、P0口为准双向通用口,作为通用输入口时应先使P0.n→1,作为通用输出口时应先使第二输出端→1 ;
3、作为通用I/O口方式时,需要外接上拉电阻;
4、P0口具有地址/数据分时复用方式,可实现地址/数据输出、数据输入两种功能(地址不能输入);
5、地址/数据分时复用方式时无需外接上拉电阻;
6、分时复用方式的数据输入时无需程序写1操作。
2.4.4 P2口
P2.n与P1.n差别:输出控制单元,锁存信号由Q端输出
结构
P2.0~P2.7中的8个锁存器构成了P2口特殊功能寄存器(字节地址为A0H)
与P1口相比,P2口多了一个多路开关MUX,可以实现通用I/O口和地址输出(不能输入)两种功能
P2.n的通用IO口方式
P2.n的地址输出口方式
注意:P2口做输出口时,内部数据经过锁存器送到P20---P27上。
由于内部有上拉电阻,所以P2口作输出口使用时,不用外接上拉电阻。
P2口的驱动能力
P2口的负载能力和P1口相同,能驱动4个LS TTL负载。
P2口的要点
1、P2口具有通用I/O口方式,可实现输出、读引脚(输入)和读锁存器三种功能;
2、P2口为准双向通用口,作为通用输入口时应先使P2.n→1,作为通用输出口时应先使控制端→1 ;
3、作为通用I/O口方式时,无需外接上拉电阻;
4、P2口具有地址输出方式,可实现地址输出功能。
总结
结构与功能
其他(见本章小结第3点)
本章小结
1. 单片机的CPU由控制器和运算器组成,在时钟电路和复位电路的支持下,按一定的时序工作。单片机的时序信号包括时钟周期、状态周期、机器周期和指令周期。
2. 51单片机采用哈佛结构存储器,共有3个逻辑存储空间和4个物理存储空间。片内低128字节RAM中包含4个工作寄存器组、128个位地址单元和80个字节地址单元;片内高128字节RAM中离散分布有21个特殊功能寄存器。
3.PO~P3口都可作为准双向通用IO口,其中只有PO口需要外接上拉电阻;在需要扩展片外设备时,P2口可作为其地址线接口,PO口可作为其地址线/数据线复用接口,此时它是真正的双向口。