单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统
分类:
51单片机的结构与功能
基本功能:
1.8位数据总线,16位地址总线的CPU;
2.具有布尔处理能力和位处理能力;
3.采用哈佛结构,程序存储器与数据存储器地址空间各自独立,便于程序设计;
4.相同地址的64KB程序存储器和64KB数据存储器;
5.0-8KB片内程序存储器(8031无,8051有4KB,8052有8KB,89C55有20KB);
6.128字节片内数据存储器(8051有256字节);
7.32根双向并可以按位寻址的I/O线;
8.两个16位定时/计数器(8052有3个);
9.一个全双工的串行I/O接口;
10.多个中断源的中断结构,具有两个中断优先级;
11.片内时钟振荡器 。
特点:
1.以微处理器(CPU)为核心;
2.CPU与其他部件间通过三总线连接。
总线: 指能为多个部件服务的信息传送线 。
一共40根外部引脚如图:
引脚号 | 引脚名称 | 说明 |
---|---|---|
1~8 | P1.0~P1.7 | 端口P1 |
9 | RST | 复位信号输入端 |
10~17 | P3.0~P3.7 | 端口P3,该端口具备第二功能 |
18 | XTAL2 | 时钟震荡器输出端,内部震荡器输出段 |
19 | XTAL1 | 时钟震荡器输入端,内部震荡器输入段 |
20 | GND | 电源地 |
21~28 | P2.0~P2.7 | 端口P2 |
29 | PSEN(低) | 外部程序存储器从程序存储器中取指令或读取数据时,该信号有效 |
30 | ALE/PROG(低) | 地址锁存信号访问外部存储器时,该信号锁存低8位地址;无RAM时,此引脚输出晶振的6分频信号 |
31 | EA(低)/VPP | 程序存储器有效地址,EA=1时从内部开始执行程序;EA=0时从外部开始执行程序 |
32~39 | P0.7~P0.0 | 端口P0 |
40 | VCC | 电源正 |
1、P0口的结构
P0口字节地址为80H,位地址80H~87H。
如图,一个端口由锁存器、输入缓冲器、多路开关、一个非门、一个与门及场效应管驱动电路构成。
利用P0口进行扩展外部存储器和I/O时,P0口将作为地址和数据分时复用,CPU发控制信号,打开与门,使MUX打向上边,形成推拉式结构,数据信号可直接读入或输出到内部总线。利用P0作为通用I/O时,此时P0口是一个准双向口,CPU发控制信号,封锁与门,使上拉管截止,MUX打向下边,与D触发器Q连接。
2、P1口的结构
P1口字节地址为90H,位地址为90H~97H。
与P0不同,P1口只能作为I/O口使用,无MUX,但其内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1、P2、P3都一样。
3、P2口的结构
P2口字节地址为A0H,位地址为A0H~A7H
P2口作为I/O口线时用法与P0口一样,当内部开关拨向另一个方向,即作地址输出时,可以输出程序存储器或外部数据存储器的高8位地址,并与P0口输出的低地址一起构成16位的地址线。
4、P3口的结构
P3口字节地址为B0H,位地址为B0H~B7H。
P3口作为I/O口线用时同其他的端口相同,也是准双向口,不同的是,P3口的每一位都有另一种功能,也叫第二功能,具体作用在用到时将详细解释。当P3口作为通用I/O口时,准双向口第二功能端保持高电平。
当P3口作为第二功能时,锁存器输出Q=1,如图为P3口第二功能列表:
5、注意
51的程序存储器和数据存储器是独立分开的,数据寄存器除内部数据寄存器外,还可以扩展数据寄存器,并存但访问指令不同
当EA引脚接高电平,CPU将使用内部程序寄存器,若程序超过内部程序存储器空间时,则CPU会自动从外部程序存储器重读取超过部分的程序代码
0000H ~ 007FH
1、寄存器组区
0000H~001FH共有32个地址位寄存器组区
每组寄存器组都包括R0、R1、R2、R3、R4、R5、R6、R7等8个寄存器,任何一个时间,都只能使用其中一个寄存器组。
寄存器组的切换,可由程序状态字(PSW)中的RS1、RS0来决定
RS0 RS1 寄存器组 位址
0 0 RB0 0000H~0007H
0 1 RB1 0008H~000FH
1 0 RB2 0010H~0017H
1 1 RB3 0018H~001FH
2、可位寻址区
0020H~002FH 共16字节的存储区为可位寻址区
设置20H存储器地址的位5设置为1:SETB 20H.5
设置20H存储器地址的位5设置为0:CLR 20H.5
3、一般数据与堆栈区
0030H~007FH的80字节为一般数据访问及堆栈区
0080H~00FFH之间的128B位特殊功能寄存器(SFR)
特殊功能寄存器
P0、P1、P2、P3
它们是51的4个输入/输出端口,其地址分别为80H、90H、A0H及B0H。
P0口:该8位都为漏级开路输出,每个引脚可以驱动8个LS型TTL负载;且内部没有上拉电阻,执行输出功能时,外部必须接上拉电阻(10千欧即可);若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;若系统连接外部存储器,则P0可作为地址总线(A0A7)及数据总线(D0D7)的多功能引脚。
P1口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;
P2口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;若系统连接外部存储器,而外部存储器的地址线超过8条时,则P0口可作为地址总线(A8~A15)引脚。
P3口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;
P3口其他功能:
P3 其它功能 说明
P3.0 RXD 串行口的接收引脚
P3.1 RTD 串行口的传送引脚
P3.2 INT0 INT0中断输入
P3.3 INT1 INT1中断输入
P3.4 T0 timer 0输入
P3.5 T1 Timer 1输入
P3.6 WR 写入外部存储器控制引脚
P3.7 RD 读取外部存储器控制引脚
SP
SP为堆栈指针寄存器,其地址为81H。
DPL、DPH
DPL与DPH均为8位的数据指针寄存器,其地址分别为82H、83H。若以DPL为低8位、DPH为高8位,即可组成一个16位的数据指针寄存器,简称DPTR,如此将可寻址到64KB的数据地址。
PCON
PCON作为电源控制寄存器,其地址位87H,其功能是设定CPU的电源方式。
它是一个不可位寻址的寄存器。如图所示:
SMOD ― ― ― GF1 GF0 PD IDL
Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
其中各位说明如下:
SMOD位为比特率倍增位。当串行端口工作于模式1、模式2、模式3,且使用定时器1为其比特率产生器时,若其为1,这比特率加倍,若为0,这比特率正常。
GF1、GF0位为一般用途标志位,用户可自行设定或清除这两个标志。通常使用这个两个标志作为有中断唤醒闲置模式中的8051系统。
PD位为功率下降模式位。为1时,进入功率下降模式;为0时,结束功率下降模式。
IDL位为闲置模式位。为1时,进入闲置模式;为0时,结束闲置模式。
TCON
TCON为定时器/计数器控制寄存器,其地址为88H
TMOD
TMOD为计数器/计数方式控制寄存器,其地址为89H,其功能是设置它的方式
TL0、TL1、TH0、TH1
TL0、TH0为第一组定时器、计数器的计量寄存器,其地址为8AH、8CH,将TL0与TH0组合即可进行16位的定时/计数。TL1、TH1为第二组定时器、计数器的计量寄存器,其地址为8BH、8DH,将TL1与TH1组合即可进行16位的定时/计数。
SCON
SCON为串行端口控制寄存器,其地址为98H,其功能是设定串行端口工作方式与标志。
SBUF
SBUF为串行端口缓冲器,其地址为99H, 这是由使用同一个地址的两个寄存器所构成,其中一个寄存器作为传送数据用的缓冲器,另一个寄存器作为接收数据用的缓冲器。至于如何分辨同一个地址的两个寄 存器,则视指令而定,若是数据传送指令,则自动定位到传送数据用的缓冲器;若是接受数据指令,则自动定位到接收数据用的缓冲器。详细以后再讲咯。IE
IE为中断使能寄存器,其地址为A8H。
IP
IP为中断优先级寄存器。
T2CON
T2CON为Timer 2的定时器/计数器控制寄存器,其地址为C8H,其功能死设定Timer 2的启动、记录定时/计数溢出,以及外部中断触发方式等。
RCAP、RCAP2H
RCAP、RCAP2H为捕捉寄存器,其地址为CAH、CBH。当Timer 2在捕捉方式时,若T2EX(P1.1)引脚上的输入信号有高电平转为低电平时,TL2与TH2的内容将被载入RCAP与RCAP2H,就像是把Timer 2的内容捉进RCAP寄存器一样。
TL2、TH2
TL2、TH2为第三组定时器、计数器的计量寄存器,其地址为CCH、CDH,将TL2与TH2组合即可进行16位的定时/计数。
PSW
PSW为CPU的程序状态字寄存器,其地址为D0H,其内容如下:
7 6 5 4 3 2 1 0
PSW CY AC F0 RS1 RS0 OV P
PSW.7:本位为进位位(CY),加减法时产生进位或错位,将自行设定为1,否则为0。
PSW.6:本位为辅助进位位(AC),进行加减法运算产生进位或错位,将自行设定为1,否则为0。
PSW.5:本位为用户标志位,用户自行设定。
PSW.4与PSW.3:这两个位为寄存器组选择位(RS1、RS0),其功能如下表所示。
RS1 RS0 寄存器组
0 0 RB0
0 1 RB1
1 0 RB2
1 1 RB3
PSW.2:本位为溢出标志位(OV),运行时,若发生溢出,为1,否则为0。
PSW.1:本位为保留位,没有提供服务。
PSW.0:本位位奇偶位(P),8051采用偶同位,若ACC中奇数个1,则为1,偶数个1,则为0。
ACC
ACC累加器又称为A寄存器,其地址为E0H。
B
B寄存器的地址为F0H,主要功能是配合A寄存器进行乘法或除法运算。进行乘法运算时,乘数放在B寄存器,而运算结果,高8位放在B寄存器;进行除法运算时,除数放在B寄存器,而运算的结果,余数放在B寄存器。若不进行乘/除法运算,B寄存器也可当成一般寄存器使用。
门电路的实现TTL和MOS集成门电路