第一部分。单片机简介
MSC-51单片机指以8051为核心的单片机,由美国的Intel公司在1980年推出,80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。
单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(single chip Microcomputer)也叫微控制器(MCU)。
CPU( Central Processing Unit ):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM( Random-Access Memory ):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM (Read-Only Memory):用以存放程序、一些原始数据和表格;
I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C (timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
数字电路中只有两种电平:高和低
单片机为TTL电平: 高 +5V 低 0V
RS232电平:计算机的串口 高 -12V 低+12V
所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片
数字电路的点评特性据定了他只能用二级制:
二进制逻辑运算,与或非和异或
数据类型:
因为51单片机是8位的,所以他的数据类型一般用unsigned char
第二部分。引脚简介
1. 电源引脚:Vcc (40脚):电源端,接+5V电源。
Vss(Gnd) (20脚):接地端,接+5V电源地端
2. 外接晶体引脚:XTAL1和XTAL2
89C51内部有一个振荡器和时钟产生电路。
XTAL1(19脚): 片内振荡电路反相放大器输入
XTAL2(18脚):片内振荡电路反相放大器输出 当采用内部时钟时,片外连接石 英晶体和微调电容,产生原始 的振荡脉冲信号。
采用外部时钟时, XTAL1输入 外部时钟脉冲信号, XTAL2悬空.
3. 控制信号引脚:RST、ALE、PSEN、EA
RST (9脚) : 复位信号输入端,高电平有效。
保持两个机器周期高电平时,完成复位操作。
ALE/PROG (30脚) :
地址锁存允许输出端/编程脉冲输入端
正常时,连续输出振荡器频率的1/6正脉冲信号。
访问片外存储器时:
作为锁存P0口低8位地址的控制信号。
对8751片内 ROM编程写入时:作为编程脉冲输入端。
PSEN (29脚): 外部程序存储器读选通输出信号
访问片外ROM时,输出负脉冲作为读ROM选通.
常连接到片外ROM芯片的输出允许端(OE)作外部ROM的读选通信号。
EA/Vpp (31脚):
外部程序存储器地址使能输入/编程电压输入端. 平常,接“1”时,CPU访问片内4KB的ROM,当地址超4KB时,自动转向片外ROM中的程序。当接“0”时,CPU只访问片外ROM。 第2功能Vpp 对8051编程时,编程电压输入端。
4. 输入/输出端口引脚 P0、P1、P2、P3
4个8位的并行输入/输出端口,共32个引脚。作为通用输入/输出端口
通用输入/输出端口
准双向口: 作输入时要先对锁存器写“1”。默认启动初始化为高电平
P0端口(P0.0—P0.7,第39—32脚):
漏极开路的准双向口, 内部没有上拉电阻,为搞阻状态,不能正常输出高低电平,做I/O时需要接上拉电阻(10K)
P1端口(P1.0—P1.7,第1—8脚):
内部带上拉电阻的准双向口,在做输入时要先1
P2端口(P2.0—P2.7,第21—28脚):
内部带上拉电阻的准双向口,与P1相似
P3端口(P3.0—P3.7,第10—17脚):
内部带上拉电阻的准双向口,做I/O时与P1相似,另外有第二功能
P3口的第二功能
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器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位结构:
利用P0口进行扩展外部存储器和I/O时,P0口将作为地址和数据分时复用,CPU发控制信号,打开与门,使MUX打向上边,形成推拉式结构,数据信号可直接读入或输出到内部总线。利用P0作为通用I/O时,此时P0口是一个准双向口,CPU发控制信号,封锁与门,使上拉管截止,MUX打向下边,与D触发器Q连接。
2、P1口的结构
P1口字节地址为90H,位地址为90H~97H。
P1位结构:
与P0不同,P1口只能作为I/O口使用,无MUX,但其内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1、P2、P3都一样。
3、P2口的结构
P2口字节地址为A0H,位地址为A0H~A7H
P2位结构:
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集成门电路