第2章 51单片机的基本结构_第1页
第2章 51单片机的基本结构_第2页
第2章 51单片机的基本结构_第3页
第2章 51单片机的基本结构_第4页
第2章 51单片机的基本结构_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章51单片机的基本结构80C51系列单片机的基本结构2.180C51单片机基本组成与内部结构2.2

80C51单片机的引脚功能2.380C51单片机的存储器的配置2.480C51单片机的并行输入/输出端口2.580C51单片机的CPU时序80C51系列单片机芯片型号及制造工艺型号片内ROM片内RAMI/O口线备注80C31无128B+SFR8×4DIP40脚80C51掩膜4KB128B+SFR8×4DIP40脚87C51EPROM4KB128B+SFR8×4DIP40脚89C51FLASH4KB128B+SFR8×4DIP40脚89C2051FLASH2KB128B+SFR15简化DIP20脚8XC5528K256B+SFR8×6增强多功能型返回80C51单片机内部基本组成

时钟电路4KROM程序存储器RAM数据存储器2X16位定时/计数器CPU处理器中断系统可编程并行I/O端口P0-3可编程串行口TXDRXDT0T1P0P1P2P3内部总线/INT0/INT180C51单片机的各个模块的基本功能CPU:运算器+控制器内部程序存储器ROM:4KB的存储容量;内部数据存储器RAM:256B(128B的RAM+128B的SFR)设4个寄存器区,每个区有R0~R7八个工作寄存器;4个8位并行输入/输出端口:P0、P1、P2和P3;定时/计数器:2个16位的定时/计数器;串型口:全双工的端口(RXD:接收端,TXD发送端);中断系统:设有5个中断源;堆栈:设在RAM单元中,区域可以浮动,堆栈指针SP确定堆栈的位置(复位时SP=07H);布尔处理机:配合布尔运算(位运算)指令进行逻辑运算;指令系统:111条指令。按功能可分为5大类。 数据传送; 算术运算; 逻辑运算; 控制转移; 布尔操作;CPU:运算器+控制器1运算器功能:算术和逻辑运算组成:ALU,ACC,TMP,B,PSWCPU:运算器+控制器2控制器(1)功能: 对指令译码; 通过定时和控制电路,发出内、外部控制信号,协调各功能模块之间的工作。CPU:运算器+控制器(2)控制器组成: 程序计数器PC,指令寄存器,指令译码器,数据指针DPTR,堆栈指针SP、定时控制逻辑等 程序计数器PC:存放下一条将要执行的指令代码所在ROM单元的地址,长度16位。 自动増量功能 指令译码器:对指令译码 数据指针DPTR:对片外RAM+I/O端口寻址的指针,长度为16位。 堆栈指针SP:初始化时指示堆栈的起始地址;向上生长型堆栈-入栈后,SP增量51单片机外型图(DIP封装)51单片机的逻辑符号图VCCRSTXTAL1

P0口XTAL2/EA/PSENALE

P1口RXDTXD/INT0/INT1P2口T0T1P3口/WR/RDGND87C51EPROM型AT89C51ATMELFLASH型2.280C51单片机的引脚功能1,电源引脚:Vcc(+5V---40脚)和Vss(GND20脚);2,外接晶体引脚:XTAL1(19脚)、XTAL2(18脚)

引脚图引脚功能介绍51内部有一个高增益反相放大器,与外接石英晶体(或陶瓷谐振器)一起构成稳定的自激震荡器(见A),单片机的工作频率取决于石英晶体的固有谐振频率。如果使用外部震荡器信号,其外来的时钟脉冲信号加在XTAL1的引脚上(CMOS型,见B)。XTAL2XTAL1NC外时钟B使用外部时钟时的电路连接(CMOC型51)XTAL1XTAL230P30P返回A使用单片机内部震荡电路连接3,控制线(4条):功能、引脚方向、有效电平(及持续时间)

RST/Vpd(第9脚):

①RST

单片机复位输入端,高电平有效。 通过在该引脚上施加持续2个机器周期以上的高电平,使系统达到复位的目的。 为了使单片机系统可靠复位,需要外加复位电路(如图)。复位状态下: SFR的内容全变为“0”, RAM内容不变。 并行端口输出“1”。

51RSTVcctVT上电自动复位电路RCRST端上电电压曲线

VCC51RSTVcc具有上电自动复位/按键手动复位功能复位电路RST/Vpd(第9脚):②Vpd

备用电压输入端。当单片机的主电源因故障而下降到某一个临界值时,RST/VPD上的电源可自动与片内RAM连接以确保RAM内的信息不丢失。

ALE/PROG(第30脚):

①当单片机访问外部存储器时,输出地址锁存信号。用以锁存P0口送出的低八位地址(P0口的数据/地址分时复用)不访问外部存储器时,以系统时钟fosc/6的频率周期性输出正脉冲。 ②对于EPROM型的单片机,此脚用于烧写程序(编程)时,输入编程脉冲。

/PSEN(29脚):

外部程序程序存储器的读选通信号。 当单片机使用外部程序存储器ROM时,此脚在一个机器周期内产生两次负脉冲。 注意:访问内部ROM或外部RAM时,不产生此信号。

/EA/Vpp(31脚):

① /EA-访问外部程序存储器的控制信号,输入;

只使用外部的程序存储器(内部无ROM或内部有ROM不用)将/EA=“0”电平,外部程序存储器编址从0000H单元开始。 只有内部的程序存储器将/EA=“1”电平 既使用内部程序存储器(4K字节)又使用外部程序存储器:将/EA=“1”电平先使用单片机内部的程序存储器,地址为0000H-0FFFH;当程序计数器PC的值超过0FFFH(4K)时,单片机将自动转向外部程序存储器,外部程序存储器编址从1000H单元开始。

②Vpp-对于EPROM型的单片机,此脚用于写程序时,加入21伏的编程电压。4,并行输入/输出端口引脚(P0-P3)P0.0-P0.7P0端口线(39-32脚):

①8位漏极开路型准双向并行I/O端口, 输出能力最强,可以驱动8个LSTTL门电路-吸收电流方式。

②如果系统使用外接存储器,该口作为低八位地址/数据的复用总线。 此种情况下,P0口不再作I/O端口。P2.0–P2.7P2端口线(21–28脚):

①带有内部上拉电阻的8位准双向并行I/O端口; 负载能力为4个LSTTL门电路

②当系统使用外接存储器时,该口作为高八位地址总线。 在这种情况下,P2口不再作I/O端口。P1.0-P1.7P1端口线(1–8脚):

带有内部上拉电阻的8位准双向并行I/O端口, 负载能力为4个LSTTL门电路。P3.0–P3.7P3端口线(10–17脚):

①带有内部上拉电阻的8位准双向并行I/O端口;

负载能力为4个LSTTL门电路。

②具有第二功能。口线定义说明口线定义说明P3.0RXD串行数据输入口P3.4T0计数器0外部输入信号P3.1TXD串行数据输出口P3.5T1计数器1外部输入信号P3.2INT0外部中断0输入口P3.6/WR外部数据存储器写信号P3.3INT1外部中断1输入口P3.7/RD外部数据存储器读信号P3口第二功能表返回/PSEN/WR

/RD

P2口80C51

P0口

ALED7Q7∶∶D0Q0/CP/WR/RDA15∶∶A8

64K

A7RAMD0∶∶A0D7/OEA15∶∶A8

64KA7ROMD0∶∶A0D7A7…A0A15…A8D0…D780C51单片机片外并行扩展时的三总线提供2.380C51单片机的存储器的配置2.3.080C51单片机的存储器的配置特点2.3.1程序存储器ROM(片内与片外)2.3.2内部数据存储器RAM2.3.3外部数据存储器RAM2.3.080C51单片机的存储器的配置特点物理分区 四个存储空间: 片内ROM、RAM 片外ROM、RAM

内部集成 --4K的程序存储器(ROM) --256B的数据存储器(RAM)片外扩展 --64K的程序存储器 --64K的数据存储器单片机系统的存储器结构图-物理结构

(四个部分)

51单片机片内ROM4K片内RAM256B片外RAM64K片外ROM64K000HFFFH0000HFFFFH0FFFH1000H逻辑分区(用户编程的角度) 三个存储空间:片内RAM,片外RAM和ROM。掌握80C51单片机的存储器逻辑分区:片内RAM功能分区、

各逻辑空间的寻址方式、访问指令 是80C51单片机编程的关键。

单片机系统的存储器结构图-逻辑空间2.3.1程序存储器ROM(片内与片外)程序存储器功能:存放编好的程序、常数表格。寻址范围:0000H-FFFFH寻址指针:PC,DPTR程序存储器的访问:1程序指令的自主操作:PC2表格的查表操作: MOVC指令:使用的指针DPTR、PC系统只使用片外的ROM:/EA=0

片外ROM编址从0000H开始系统只使用片内的4KROM来存储程序:/EA=1内部带有ROM的51芯片,如果要使用片内ROM,且在片外扩展部分ROM:/EA=1

先使用单片机内部的程序存储器:地址为0000H-0FFFH;程序计数器PC的值超过0FFFH(4K):单片机将自动转向外部程序存储器,且从片外ROM的1000H单元开始执行程序。注意:片外扩展ROM的编址应从1000H开始。程序存储器六个特殊的单元在程序存储器中,有六个单元具有特定功能。编程者不能随便使用。0000H单元:上电复位时,程序计数器PC所指向的单元0003H单元:/INT0外部中断0的入口地址;000BH单元:定时器T0溢出中断的入口地址;0013H单元:/INT1外部中断1的入口地址;001BH单元:定时器T1溢出中断的入口地址;0023H单元:串行口接收、发送中断的入口地址;返回程序框架格式

ORG0000H LJMPMAIN ORG0023H LJMPSERV_S ORG0100HMAIN:MOVSP,#60H …… ……SER_S:CLREA CLRRI …… RETI0100HSER_INT0SER_T0SER_S0000H0003H000BH0013H001BH0023HLJMP0100H…LJMPSER_INT0…LJMPSER_T0…LJMPSER_INT1…LJMPSER_T1…LJMPSER_S…MOVSP,#60H……什么是中断入口地址?符号地址2.3.2内部数据存储器RAM数据存储器无论在物理上还是逻辑上都分为两个地址空间:内部的数据存储空间 外部的数据存储空间访问内部数据存储器单元时:MOV

指令;

访问外部数据存储器单元时:MOVX指令。51单片机片内、片外数据存储器示意图

特殊功能寄存器SFR通用数据存储器80H7FH00HFFH片内数据存储器片外数据存储器256B64KB片外数据存储器64KB0000HFFFFH注意:1,访问片内RAM20H存储单元;MOVA,20H2,访问片外RAM存储单元;MOVR0,#20hMOVXA,@R03,尽管片内与片外的RAM单元的00H-FFH地址相重叠但由于指令的不同不会发生地址混乱。内部数据存储器RAM分块内部数据存储器空间256B,从功能上分为二个不同的块:1低128B的RAM块:

工作寄存器区、位寻址区、通用数据存储区2高128B的SFR(SpecialFunctionRegister)高128B的SFR区中仅仅使用了21个RAM单元(51系列),其它单元未定义不能使用。SFR高128B低128B0FFH80H7FH00H片内RAM1片内RAM低128B功能分区图

位寻址区3区2区1区0区通用区08H07H00H7FH30H2FH20H1FH18H17H10H0FH四个工作寄存器区每区包含八个工作寄存器:R0-R7位寻址区16个单元20H-2FH,共有128个可位寻址位。位地址:00H-7FH注意:位地址与字节地址的区别通用的RAM区(包含栈区)地址:30H-7FH0区工作寄存器区结构图R7R6R5R4R3R2R1R0RAM地址07H06H05H04H03H02H01H00H返回上一次片内RAM(20H-2FH)中的位寻址区结构图7F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837262524232221202F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002FH20H字节地址位地址位寻址区内的地址是位地址。共有00-7FH(共128个位);区分字节地址和位地址: ①从物理的角度:每一个字节地址内包含了8个位,既:

D7,D6,D5,D4,D3,D2,D1,D0 (我们提到的RAM地址一般都是指字节地址)。

②从逻辑的角度:字节地址和位地址是靠不同类型的指令来 区分的。如,

MOVA,20h;将RAM的20单元内容送字节累加器A;MOVC,20h;将RAM位寻址区中20H位送位累加器CY中。第一条指令为字节传送指令,既20H为字节地址;第二个指令为位操作指令,20H为位地址。返回2特殊功能寄存器SFR

(SpecialFunctionRegister)特殊用途寄存器的集合,不作普通的RAM单元使用。

功能-作用于单片机内部功能模块

①特定功能的设定: 用来设定单片机内部各个功能模块的工作方式:中断方式的设定、定时器工作模式的设定;

②存放相关模块的状态、标志等。查寻相关模块的工作状态,以便进行后续处理操作:查询串行口发送或接收是否结束等等。SFR高128B低128B0FFH80H7FH00H特殊功能寄存器SFR在片内RAM中的位置片内RAM

标识符名称直接地址ACCBPSWSPDPTRP0P1P2P3IPIETMODTCON累加器B寄存器程序状态字堆栈指针数据指针(包括DPH,DPL)口0锁存器口1锁存器口2锁存器口3锁存器中断优先级控制寄存器中断允许控制寄存器定时/计数器方式控制寄存器定时/计数器控制寄存器0E0H0F0H0D0H81H83H,82H80H90H0A0H0B0H0B8H0A8H89H88H特殊功能寄存器SFR(表一)SFR(表二)

标识符名称地址TH0TL0TH1TL1SCONSBUFPCON定时/计数器0初值寄存器高8位定时/计数器0初值寄存器低8位定时/计数器1初值寄存器高8位定时/计数器1初值寄存器低8位串行口控制寄存器串行口数据缓冲器(接收,发送)电源控制寄存器8CH8AH8DH8BH98H99H97H注:表中黄色的单元为可按位寻址的字节特殊功能寄存器SFR说明累加器ACC

:

最常用的专用寄存器,大多数的指令,操作数中的一个都来自累加器A。所有的算术运算指令的运算结果都暂存在A中。B寄存器:乘除法指令使用的专用寄存器。数据指针DPTR:

16位的寄存器.由高八位DPH和低八位DPL构成.1DPTR主要用来存放片外RAM的地址. 单片机通过间接寻址的方式来访问片外的RAM。

例:片外RAM3000H单元中有一个数x,试将其送到累加器A中。

MOVDPTR,#3000H ;DPTR←3000H MOVXA,@DPTR;A←x2访问ROM ROM中存放了一个表格,首单元地址为:LEDTAB MOVDPTR,#LEDTAB MOVA,#3 MOVCA,@A+DPTR程序状态字PSW:

8位寄存器.表征当前指令执行后的状态信息。CY(PSW.7)进位标志:

在加法运算中,累加器A的最高位A7有进位,则CY=1,否则CY=0. 在减法运算中,如果A7有借位,则CY=1.CY往往作为无符号数运算是否有溢出的标志。AC(PSW.6):辅助进位位: 用来判断加减法运算时,低四位是否向高四位进位或借位(既A3的进位或借位). 用来判断压缩的BCD码的运算处理.F0(PSW.5)用户标志位:

完全由用户来定义和使用。RS1,RS0工作寄存器区选择位: 确定工作寄存器R0-R7在哪个区中. 单片机在上电或复位后RS1、RS0=00。可通过指令修改RS1,RS0的值来改变工作寄存器区的位置。CYACF0RS1RS0OV-POV(PSW.2)溢出标志位:

判断符号数加减法运算时是否溢出.OV=1表明有溢出。OV的结果可以用一个算法来表示:OV=CP⊕CS

其中:CP为A7的进位;CS为A6的进位。

P(PSW.0)奇偶标志位:

用来对累加器A中的数据做偶校验当A中1的个数为奇数个时,P=1

10010001A1P当A中1的个数为偶数个时,P=010010011A0PSP堆栈指针: 8位寄存器,指示堆栈的当前位置。 在51单片机的设计中,片内RAM区为堆栈的可用空间。 上电或复位时,SP被初始化为07H,应重新初始化SP: MOVSP,#60H

进栈:PUSHACC指令(设SP=60H)1,SP+1送SP,SP=61H;2,FFH送RAM的61H单元;SP=60H(执行前61HRAMFFH累加器A堆栈操作示意图SP始终指向有意义的单元FFHSP=61H(执行后60H

出栈:

POPACC(设SP=61H)1,将RAM中61H单元内容送A;2,SP-1送SP,此时SP=60H。SP=61H(执行前)61H60HRAMFFH累加器A堆栈操作示意图SP始终指向有意义的单元FFHSP=60H(执行后)并行端口P0-P3: P0-P3的RAM地址:80H、90H、A0H、B0H。51单片机中的输入、输出操作

同普通的RAM单元操作 输出指令: MOV80H,A;将累加器中的数据输出到P0 MOVP0,A 输入指令: MOVA,90H;将P1口的数据输入到累加器AMOVP1,A51把P0-P3作为普通的内存单元来使用,指令系统中没有专用的输入、输出(IN、OUT)指令.串行数据缓冲器SBUF: 用来存放将要发送或已经接收的数据,物理上它是两个独立的寄存器。逻辑上占用一个地址:99H根据指令“发送”或“接收”两种不同的操作,硬件会自动的区分,将数据送如对应的缓冲单元。定时/计数器T0、T1:

实质是一个16位的计数器:是一个“计数器”在计数。计数器由两个8位寄存器(高位和低位):

T0:TH0、TL0

T1:

TH1、TL1在使用计数器实现定时或计数功能之前,要对它进行初始化,其中就要对TH、TL赋初值。如:

MOV8BH,#01H;(MOVTH0,#01H)MOV8AH,#20H;(MOVTL0,#20H)TH0TL02.3.3外部数据存储器在片内RAM不能满足存储需要时,要在片外扩展RAM。P0、P2端口作为外部RAM的地址和数据总线。 51对外部数据存储器的扩展能力为64KB。

专用指令MOVX来访问外部数据存储器。

1

R0做间址寄存器,寻址范围为256KB。MOVR0,#20H;将外部RAM单元地址20H送R0寄存器

MOVXA,@R0;从外部RAM20H单元取数据到累加器A

2使用16位的DPTR做间址寄存器,寻址范围为64KB。

MOVDPTR,#2000H;将外部RAM单元的地址的2000送DPTR

MOVXA,@DPTR

;从外部RAM2000H单元中取数据到A

内容小结51单片机的存储器逻辑分区 三个存储空间: ROM、片内RAM、片外RAM。程序存储器当引脚/EA=1时,从片内ROM的0000H单元运行程序;若引脚/EA=0时,从片外ROM的0000H单元运行程序。当引脚EA=1,且PC值大于1FFFH时,自动转到片外2000H单元运行程序。无论是片内还是片外,ROM有六个单元是有特定意义的:

1,0000H单元:上电复位后的启动地址;2,0003H单元:外部中断/INT0的入口地址;3,000BH单元:定时器T0溢出中断的入口地址;4,0013H单元:外部中断/INT1的入口地址;5,001BH单元:定时器T1溢出中断的入口地址;6,0023H单元:串行口发送/接受中断的入口地址。2内部数据存储器RAM

低128B:1,工作寄存器区;2,位寻址区;3,栈区;高128B:做特殊功能寄存器SFR用。注意:

1,SFR不同于一般的数据RAM,它不是用于存储数据,而是用来控制和表征单片机内部几个逻辑部件的特征,状态重要信息。2,在使用RAM时,要注意字节地址和位地址的概念。 3,访问内部RAM的指令为MOV指令。3外部数据存储器①在硬件具备的条件下,80C51单片机可以使用64KB的外部数据存储器.访问外部数据存储器RAM时,只能使用间址的寻址方式.②间址寄存器有R0,R1或DPTR.前者寻址范围为256B(00H-FFH);后者为64KB(0000H-FFFFH).使用的指令是MOVX. ③CPU通过P0、P2口作为地址/数据总线,访问外部存储器。51单片机片外扩展系统扩展

片外扩展:ROM(64KB);RAM+I/O接口(64KB)

可片外并行扩展并行三总线:DB,AB,CB可片外串行扩展数据线+时钟线

2.480C51单片机的并行输入/输出端口

CPU输入/输出端口外部设备输入/输出端口成为CPU与外部设备进行数据交换的桥梁80C51单片机内部总线端口引脚四个端口都是具有输出锁存功能的准双向端口,输出锁存器都在SFR中, P0P1P2P3地址分别为:80H、90H、A0H、B0H。在硬件设计上对每一个端口都有不同的要求,每一个端口又具有不同的特点。继续2.4.1P0口2.4.2P1口2.4.3P2口2.4.4P3口2.4.5并行端口在使用时应注意的几个问题/PSEN/WR

/RD

P2口80C51

P0口

ALED7Q7∶∶D0Q0/CP/WR/RDA15∶∶A8

64K

A7RAMD0∶∶A0D7/OEA15∶∶A8

64KA7ROMD0∶∶A0D7A7…A0A15…A8D0…D780C51单片机片外并行扩展时的三总线提供2.4.1P0口

【特点】:

“通用I/O端口”和“地址/数据复用总线”。1作为通用I/O端口 具有较强的驱动能力(8个LSTTL负载)。 输出时需外接一个上拉电阻。2作为“地址/数据复用总线”使用 P0口先输出外部存储器的低八位地址, 然后再作为数据总线进行数据的输入或输出。 注意:P0口功能1和2是矛盾的。硬件组成:一个输出锁存器(D型触发器);与门和MUX等元件组成的输出控制电路;一对场效应晶体管FET构成的输出驱动电路。二个三态输入缓冲器(控制读引脚或读锁存器);P0口的位结构图DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc1P0口的I/O操作(通用I/O端口)在P0口作为通用I/O端口时,控制电路中的“控制”为“0”电平:多路开关MUX接入锁存器的/Q端;使上端的FET截止,P0口在做I/O口时输出为“漏极开路”的结构。DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc MOVP0,A;A→P0 数据送到锁存器的“D”端,经“/Q”端送场效管应输出极。

①送“1”时,/Q=“0”,使下端的FET截止,输出极的两个FET全部截止。在外部上拉电阻的作用下,使端口为高电平;②送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET截止),端口呈现“0”电平。(一)通用I/O端口输出操作:DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc 输入操作有两种,由三态门控制:

①读引脚:该引脚用于数据输入时的操作;②读锁存:该引脚用于输出时常用的操作。结构图(二)通用I/O端口输入操作a,读引脚:端口引脚作为输入的连接下,读外部送到端口引脚的电平。如: MOVA,P0;A←P0 【注意】:P0为端口引脚电平!单片机控制“读引脚”的三态门导通,使引脚处的外部电平经三态门送入内部总线DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc

端口在读引脚时,锁存器的状态可能影响引脚电平的输入。如:原来锁存器的状态为“0”态,电路将不能正确读入引脚电平(引脚输入高电平时).DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc解决的方法:让下端的FET截止,即读引脚前要先向输出锁存器写“1”MOVP0,#0FFHMOVA,P0进行输入的MOV指令都是“读引脚”指令,相当于其它系统中的IN指令。P口单片机的引脚设计为输入时使用MOV指令结构图MOVA,P0b,读锁存器:

算术、逻辑运算指令:ORL、XRL、ANL、INC、DEC、DJNZ及位操作指令。读入的数据不是来自引脚,而是端口内部锁存器的内容 ANLP0,A;“读——修改——写”操作:先将端口锁存器中的数据读到CPU中,然后再与累计器A中的数据进行算术、逻辑运算,最后将结果写回到端口锁存器中。DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)Vcc在端口设计为输出时:有时在前面完成一次端口的输出操作(MOVP0,A)后再将前面输入的状态取回来,进行再处理然后重新输出。为什么输出结果还要读入?

采用读“锁存器”而不是读“引脚”,是保证读数据的准确。例如:使用一个晶体管驱动继电器, 当端口输出“1”电平驱动晶体管导通时,P0.0引脚的输出电平只有0.7伏。如果将引脚信号读回来只会得到一个“0”电平的错误结果。P0.0JVDD返回结构图在当前状态下,将某条口线的电平变“1”,其余位不变。

MOVA,#00000100BORLP0,A

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7“读——修改——写”操作举例在进行硬件系统的设计中,如果使用了外部存储器/I/O接口时,P0口成为整个系统的地址/数据复用总线。P0口不能再作为通用的I/O端口。只要使用了外部ROM,CPU从中取指令或使用了外部RAM(或I/O),CPU执行MOVX指令,P0、P2口就自动变为数据/地址总线。2P0口的总线方式

(系统片外扩展存储器/I/O接口时)2P0口的总线方式

作用: 输出片外ROM/RAM单元的低8位地址; 输出/输入8位数据。(1)地址/数据输出(2)数据输入DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=1时)读锁存器读引脚内部总线写锁存器MUX(控制=1时)(1)地址/数据输出控制电路的“控制”=1,MUX接向“地址/数据”信号;地址/数据信息通过“地址/数据”线经反相器送至下FET输出。与门打开,输出极的两个FET都处于正常的工作状态,不用外加上拉电阻。DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=1时)读锁存器读引脚内部总线写锁存器MUX(控制=1时)(1)地址/数据输出输出的地址/数据信息为1: 与门输出为1,上方的场效应管导通,下方的场效应管截止,P0.x引脚输出为1; 上方的场效应管起到内部上拉电阻的作用。输出的地址/数据信息为0:上方的场效应管截止,下方的场效应管导通,P0.x引脚输出为0。输出电路是上、下两个场效应管形成的推拉式结构,提高负载能力;(2)数据输入对应的“控制”=0,MUX接通锁存器的/Q端。P0口作为地址/数据复用方式访问外部存储器时,CPU自动向P0口写入FFH,使下方场效应管截止,上方场效应管由于控制信号为0也截止,从而保证数据信息的高阻抗输入,从外部存储器输入的数据信息直接由P0.x引脚通过输入缓冲器进入内部总线。DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)(2)数据输入具有高阻抗输入的I/O口具有高电平、低电平和高阻抗3种状态。P0口作为地址/数据总线使用时是一个真正的双向端口。DQ

锁存器CL/QP0.x引脚Vcc地址/数据1/0控制(=0时)读锁存器读引脚内部总线写锁存器MUX(控制=0时)P0口的特点

(1)当P0口用作地址/数据复用口时: 是真正的双向口;(2)当P0口用作通用I/O口时: 是一个准双向口: 在进行输入操作前,需先向口输出锁存器置1,使下方的FET截至。1做通用数据I/O端口时,必须外接“上拉电阻”,否则不能正确的输出高电平;2在输入引脚操作前,必须先向端口锁存器“写1; 为保证引脚信号的正确读入,应首先向锁存器写1。(单片机复位后,锁存器自动被置1)

返回结构图P0口用作通用I/O口注意点特点:单纯的通用I/O端口,负载能力为4个LSTTL。

与P0口的区别:内部具有上拉电阻,输出时不用外接上拉电阻。2.4.2P1口的位结构图DQ

锁存器CL/QP1.x引脚Vcc读锁存器读引脚内部总线写锁存器内部上拉电阻2.4.3P2口

特点:“通用I/O端口”和“高八位地址总线”端口DQ

锁存器CL/QP2.x引脚Vcc地址控制读锁存器读引脚内部总线写锁存器MUX(地址/数据=0)内部上拉电阻返回上一次注意:使用外数据存储器时,P2口分两种情况:1,使用256B的外部RAM时,用8位的寄存器R0或R1作间址寄存器,这时P2口无用。P2口仍然可以做通用I/O端口。如: movr0,#30h

movr1,#40h

movxa,@r0或 movxa,@r12,使用大于256BRAM或访问外部ROM时,P2口必须作为外存储器的高八位地址总线。如: movdptr,#2000H movxa,@dptr;访问外部数据存储器

movdptr,#3000H movca,@a+dptr;访问外部程序存储器

2.4.4P3口

特点:通用I/O端口、多用途端口

通常情况下,P3口不做通用I/O口,以充分利用单片机的第二功能。DQ

锁存器CL/QP3.x引脚第二输出功能读锁存器读引脚内部总线写锁存器Vcc返回第二输入功能1P0,P1,P2,P3作通用I/O口时,都是准双向口为保证引脚信号的正确读入,应首先向锁存器写1。输入前,必须先向口锁存器输出11111111B,然后才能输入。 MOVP1,#0FFH MOVA,P12P0做通用数据I/O端口,必须外接“上拉电阻”。P0、P1、P2、P2作通用I/O口使用时的注意事项2.580C51单片机CPU的时序2.5.180C51单片机的时序

(1)单字节单周期指令的时序 (2)双字节单周期指令时序 (3)单字节双周期指令的时序2.5.2访问外部程序存储器ROM的时序2.5.3访问外部数据存储器RAM的指令时序继续2.5.180C51单片机的时序

时序:CPU执行指令时所需控制信号的时间顺序。时序图中时间参数的描述:

①震荡周期

②时钟周期(状态周期)

③机器周期

返回震荡周期T:时序中最小的时间单位。 由外接晶体或外输入时钟决定: T=1/fosc;为石英振荡器频率或输入频率的倒数。

【例如】:在单片机外接12MH的晶体,则单片机的震荡周期: T=1/fosc=1/(12MHz)=1/12µs.TS1S1S6S5S4S3机器周期时钟周期: 晶体震荡器的震荡信号经过片内时钟发生器二分频。 时钟周期是震荡周期的2倍。机器周期:

CPU执行一条指令所需要的时间的单位。 51单片机中的机器周期由12个震荡周期构成, 分为6个状态周期(S1-S6), 每个状态又分为P1和P2两相时钟:S1P1,S1P2,S2P1,S2P2,S3P1,S3P2…S6P1,S6P2

TS1S1S6S5S4S3机器周期指令周期:CPU执行一条指令所需要的时间,以机器周期为单位。在51系统中,不同的指令执行时所需要的机器周期数不同:

1,单机器周期指令;2,双机器周期指令;3,四机器周期指令;64条指令执行时间为1个机器周期;45条指令执行时间为2个机器周期;只有乘除法指令需4个机器周期;指令的运算速度与它所包含的机器周期数有关:机器周期数越少,执行的速度就越快。例如:使用一个12M的晶体震荡器

一个机器周期为:1/12µs×12×1=1µs;两个机器周期为:1/12µs×12×2=2µs;四个机器周期为:1/12µs×12×4=4µs。

指令的字节数:一条指令翻译成机器代码后所占内存单元的数量。 MCS-51单片机的指令系统中有: 单字节指令(占用1个ROM字节);操作码+操作数=1字节 双字节指令(占用2个ROM字节); 三字节指令(占用3个ROM字节)。操作码+操作数ROM操作码操作数或地址ROM操作码1#操作数或地址2#操作数或地址ROM单字节指令双字节指令三字节指令指令特点:指令在程序存储器ROM中仅占一个存储单元。每个机器周期内,ALE两次有效①在ALE第一次有效(S2P1)时,从ROM中读取指令的操作码,送入指令寄存器IR中译码并执行,PC加1。②在ALE第二次有效时,读下一个操作码,但丢弃,且PC不加1。(1)单字节单周期指令的时序机器周期读操作码一读操作码丢弃ALE返回S1S2S6S5S4S3T震荡周期INCA

【注意】:1每一个机器周期出现两次ALE信号;2ALE信号对应从ROM中读指令。 在一个机器周期中CPU可以完成两次取指操作;3对于单字节单周期的指令,CPU是通过对指令的OP译码后,得到单字节信息。

指令特点:一条指令长度为两个字节,并存储在ROM相邻的两个单元中。该指令的执行必须从ROM中取指两次。OP2-2OP2-1n+1n程序ROMPC(2)双字节单周期指令时序返回ADDA,#DATA在ALE第一次有效时: CPU从ROM的n单元中取出指令的第一个字节OP2-1,并送入IR译码。 通过译码CPU得到双字节指令的信息,使PC加1,指向n+1单元;在ALE第二次有效时: 从ROM的n+1单元取出指令的第二个字节OP2-2送入IR进行译码, 并产生对应的操作,最后在S6P2时完成本条指令的运行。S1S2S6S5S4S3机器周期读操作码一读操作码二ALET震荡周期

指令特点:单字节,却需要两个机器周期运行。如:INCDPTR

DPTR为两个8位的寄存器,加1时,必须分两步完成: 第一步:DPL加1, 第二步:如果DPL加1有进位,则还要对DPH加1.

(3)单字节双周期指令的时序在指令周期的第一个ALE:

将ROM中的操作码OP取出,经IR译码后得知为单字节双

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论