1、 微型计算机由微处理器(或称CPU,中央处理单元)、存储器加上I/O接口电路组成;
2、 含义:在一片半导体硅片上集成了中央处理单元(CPU)、存储器(RAM/ROM)和各种I/O接口,这样一块集成电路芯片具有一台微型计算机的属性,因而称为单片微型计算机,简称单片机。
3、单片机主要用于测试和控制领域。多把单片机称为微控制器,由于单片机在使用时,通常处于测控系统的核心地位并嵌入其中,通常也把单片机称为嵌入式微控制器。
4.、单片机的发展历史
l {dy}阶段(1974-1976年):单片机初级阶段;
l 第二阶段(1976-1978年):低性能单片机阶段;
l 第三阶段(1978-1983年):高性能单片机阶段;
l 第四阶段(1983-现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段。
5、单片机按用途的不同分成通用型和专用型两大类;
6、AT89C51功能部件组成:
(1)微处理器(CPU)
包括运算器和控制器两个部分
? 运算器主要用来对操作数进行算术、逻辑和位操作运算,主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW及两个寄存器等
l 算术逻辑运算单元ALU
可对8位变量进行逻辑与、或、异或、循环、求补和清零等操作,还可进行加减乘除等算术运算,还可进行位操作,如置‘1’,清零、求补、测试转移等
l 累加器A
也可写作Acc,是CPU中使用最频繁的8位寄存器,作用如下:
(1)累加器A是ALU单元的输入数据源之一,是ALU运算结果的存放单元
(2)CPU中数据的传送大多数是通过累加器A,相当于数据的中转站。89C51中增加了一部分不经过累加器的传送指令。
l 程序状态字寄存器PSW
位于单片机内的特殊功能寄存区,字节地址为D0H
PSW的格式
n 进位标志Cy
当进行算术运算和逻辑运算指令时,若有进位/借位,Cy=1,否则,Cy=0。在位处理器中,它是位累加器。
n 辅助进位标志Ac
在BCD码运算时,作为十进位调整,当D3位向D4位产生进位或借位时,Ac=1,否则Ac=0。
n 溢出标志位OV
执行运算指令时,用来指示运算结果是否产生溢出,如果产生,OV=1,否则OV=0
n 奇偶标志位P
表示指令完成时,累加器A中‘1’的个数是奇数还是偶数,如果A中1的个数为奇数个,则P=1,否则P=0。
在串行通信口通信中的串行数据传输有重要的意义,常用奇偶校验的方法来检验数据串行传输的可靠性。
n 用户设定标志位F0
它是由用户使用的一个状态标志位,可用软件使它置‘1’或清‘0’,也可由指令来测试标志位F0,根据测试结果控制程序的流向。
n 4组工作寄存器区选择控制位1和位0 RS1、RS0
用来选择片内RAM中的4组工作寄存器区的哪一组为当前工作寄存器区
表1 RS1、RS0与所选择的4组工作寄存器区的对应关系
n PSW.1位
保留位,未用
? 控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片经济各部分自动协调的工作。
控制器主要包括程序计数器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入。译码和执行,从而对单片机的各功能部件进行定时和逻辑控制。
l 程序计数器PC是控制器中最基本的寄存器,它是一个独立的计数器,存放着下一条要执行的指令在程序存储器中的地址。
l PC中内容的变化轨迹决定了程序的流程,PC是不可访问的,循序执行时自动加1,执行转移程序或子程序,中断子程序调用时,自动将其内容更改成指向的转移目标地址;PC 的宽度决定了程序存储器的地址范围,89C51的PC位数为16位,可寻址64KB的存储器范围,复位时PC内容为0000H
(2)数据存储器(RAM)
片内为128B高速RAM(52子系列位256B),片外{zg}可扩64KB,字节地址为00H-7FH,其中00H-1FH单元为4组通用寄存器,20H-2FH的16个单元可由指令进行位寻址,30H-7FH为用户RAM区,只能进行季节寻址,用作存放数据及作为堆栈区。
(3)程序存储器(4KB Flash ROM)
片内集成4KB的Flash存储器,地址范围为0000H-0FFFH(89C52片内集成8KB的Flash存储器,AT89C55片内集成20KB的Flash存储器),片外可扩展至64KB,地址范围为0000H-FFFFH,CPU由EA(低)引脚上的电平来确定是访问片内还是片外的程序存储器,当EA引脚是高电平时,CPU从内部程序存储器开始访问,当超出0FFFH 时,会自动转向片外程序存储器1000H-FFFFH,当EA引脚接地时,单片机子执行片外程序存储器(地址范围为0000H-FFFFH)
程序存储器空间中由5各特殊单元分别对应于5个中断源的中断服务程序的入口地址,具体如下:
表2 5个中断源的中断入口地址
通常是在这5个中断入口地址处都放一条跳转指令跳向中断服务程序,而不是存放中断服务子程序,两个中断入口间隔仅有8个单元。
(4)4个8位可编程并行口I/O口(P0口、P1口、P2口、P3口)
(5)1个全双工串行口
(6)2个16位定时器/计数器
(7)中断系统
具有5个中断源,2级中断优先权
(8)特殊功能寄存器(SFR)
特殊功能寄存器实际上是片内各个功能部件的控制寄存器和状态寄存器,映射在片内RAM区80H—FFH的地址区间内,综合反映了整个单片机基本系统内部实际的工作状态及工作方式。
表3 SFR的名称及其分布
特殊功能寄存器符号 |
名称 |
字节地址 |
位地址 |
B |
B寄存器 |
F0H |
F7H-F0H |
A(或Acc) |
累加器 |
E0H |
E7H-F0H |
PSW |
程序状态字 |
D0H |
D7H-D0H |
IP |
中断优先级控制 |
B8H |
BFH-B8H |
P3 |
P3口 |
B0H |
B7H-B0H |
IE |
中断允许控制 |
A8H |
AFH-A8H |
P2 |
P2口 |
A0H |
AFH-A0H |
SBUF |
串行数据缓冲器 |
99H |
— |
SCON |
串行控制 |
98H |
9FH-98H |
P1 |
P1口 |
90H |
97H-90H |
TH1 |
定时器/计数器1(高字节) |
8DH |
— |
TH0 |
定时器/计数器0(高字节) |
8CH |
— |
TL1 |
定时器/计数器1(低字节) |
8BH |
— |
TL0 |
定时器/计数器0(低字节) |
8AH |
— |
TMOD |
定时器/计数器方式控制 |
89H |
— |
TCON |
定时器/计数器 控制 |
88H |
8FH-88H |
PCON |
电源控制 |
87H |
— |
DPH |
数据指针高字节 |
83H |
— |
DPL |
数据指针低字节 |
82H |
— |
SP |
堆栈指针 |
81H |
— |
P0 |
P0口 |
80H |
87H-80H |
从上可见,凡是可进行位寻址的SFR,其字节地址的末位只能是0H或8H。
其中部分介绍如下:
a) 堆栈指针SP
SP的内容指示出堆栈顶部在内部RAM块中的位置,它可指向内部RAM区的00H-7FH中的任何一个单元单片机复位后,SP 中的内容为07H,考虑到08H-1FH属于1-3组公主寄存器区,所以开始使用时,先把SP设置为60H或更大的值,以免堆栈与工作寄存器区发生冲突。堆栈两个功能:保护断点和现场保护。
b) 数据指针DPTR
DPTR为一个16位SFR,其高字节寄存器用DPH表示,低字节用DPL表示,也可作为两个独立的八位寄存器使用。
c) 寄存器B
寄存器B是为执行乘法和除法操作设置的,在不执行乘除法操作的情况下,可作为普通的寄存器使用。
7、AT89C51的引脚介绍
多为DIP双列直插式封装,40引脚,按其功能可分为3类:
(1) 电源及时钟引脚
1、电源引脚:
Vcc(40引脚):接+5V电源;
Vss(20引脚):接地。
2、时钟引脚:
XLAT1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。使用片内振荡器时,该引脚连接外部石英晶体和微调电容。
XLAT2(18引脚):片内振荡器反相放大器的输出端。当使用片内振荡器时,该引脚连接外部石英晶体和微调电容。当外接时钟源时,引脚XLAT1接收外部时钟振荡器的信号,XLAT2悬空。
(2) 控制引脚
1、 复位信号输入端RST(9引脚):高电平有效,当单片机运行时,在该引脚上加上持续时间大于2个机器周期(24个时钟振荡周期)的高电平时,就可以对单片机进行复位操作。
2、 EA/Vpp(31引脚)
EA为外部程序存储器访问允许控制端,当EA为低电平时,对程序存储器的读操作至限定于外部程序存储器,片内的4KB Flash的程序存储器不起作用。
当EA为高电平时,单片机读片内的程序存储器,当在PC值超过0FFFH时,将自动转向访问外部程序存储器中的程序。
Vpp为第二功能,为编程电压输入端。
3、 ALE/PROG(30引脚)
ALE为低8位地址锁存允许信号
PROG在对片内Flash存储器编程时,作为变成脉冲输入端。
4、 PSEN(29引脚)
片外程序存储器的读选通信号,以负跳沿作为读外部程序存储器的选通信号,在读外部程序存储器时,该引脚接外部存储器的OE端。
(3) I/O口引脚
1、 P0口:
当89C51扩展外部存储器及I/O接口芯片时,P0口作为地址总线(低8位)及数据总线的分时复用端口。
作为通用I/O口使用时,需要加上拉电阻,此时应向端口的输出锁存器写入1,可驱动8个LS型TTL负载。
2、 P1口:
具有内部上拉电阻,使用时应向端口的输出锁存器写入1,可驱动4个LS型TTL负载。
3、 P2口:
具有内部上拉电阻,使用时应向端口的输出锁存器写入1,可驱动4个LS型TTL负载。
4、 P3口:
具有内部上拉电阻,作通用I/O口使用时,先向输出锁存器写入1,可驱动4个LS型TTL负载。
作为第二功能时,功能如下:
P3.0 RXD 串行数据输入口
P3.1 TXD 串行数据输出口
P3.2 INT0 低 外部中断0输入
P3.3 INT1 低 外部中断1输入
P3.4 T0 计数器0外部计数输入
P3.5 T1 计数器1外部计数输入
P3.6 WR低 外部数据存储器写选通信号
P3.7 RD低 外部数据存储器读选通信号