第2章 单片机的结构原理与 简单应用 (课时:10学时)
教学目的 学习重点和难点 了解单片机的内部结构与主要型号。 掌握单片机引脚信号功能定义。 掌握单片机的存储器空间分配及各I/O口的特点。 掌握单片机的复位电路、时钟电路及指令时序。 利用单片机的I/O口实现循环灯的控制。 学习重点和难点 单片机的结构特点。 存储器配置与空间的分布。 程序状态寄存器(PSW)。 单片机的指令时序。
第2章 单片机的结构原理与 简单应用 2.1 单片机的结构与原理 2.2 单片机的存储器 2.3 单片机的输入/输出端口 2.4 时钟电路 第2章 单片机的结构原理与 简单应用 2.1 单片机的结构与原理 2.2 单片机的存储器 2.3 单片机的输入/输出端口 2.4 时钟电路 2.5 复位电路 2.6 常用单片机功能简介 本章小结 习题
2.1 单片机的结构与原理 2.1.1 8051单片机的基本组成 2.1.2 8051单片机的内部结构 2.1 单片机的结构与原理 2.1.1 8051单片机的基本组成 2.1.2 8051单片机的内部结构 2.1.3 8051单片机的引脚及功能 2.1.4 单片机的工作原理
2.1.1 8051单片机的基本组成 MCS-51是美国Intel公司的8位高档单片机系列,也是我国目前应用最为广泛的一种单片机系列。8051/80C51是整个MCS-51系列单片机的核心,该系列其他型号的单片机都是在这一内核的基础上发展起来的。 MCS-51单片机系列分为51和52子系列,并以芯片型号的末位数字加以标识。其中,51子系列是基本型,而52子系列是增强型。 单片机型号带有字母“C”的,表示该单片机采用的是CHMOS工艺,具有低功耗的特点。 8051的功耗为630mW,而80C51的功耗只有120mW。
MCS-51系列单片机技术参数表 子系列 片内ROM形式 片内 ROM RAM 寻址 范围 I/O特性 中 断 源 无 定时器 并行口 EPROM 定时器 并行口 串行口 51 子系列 8031 8051 8751 4KB 128B 2×64KB 2×16 4×8 1 5 80C31 80C51 87C51 52 子系列 8032 8052 8752 8KB 256B 3×16 6 80C32 80C52 87C52
2.1.1 8051单片机的基本组成 8051单片机的结构框图如下图所示,可以看出,在一块芯片上集成了一个微型计算机的主要部件,它包括以下几部分: 1个8位微处理器(CPU)。 1个时钟电路。 4KB程序存储器。 256B数据存储器。 2个16位定时/计数器。 64KB扩展总线控制电路。 4个8位并行I/O接口P0~P3。 1个全双工串行I/O接口。 5个中断源,其中包括2个优先级嵌套中断。
8051单片机结构框图
2.1.2 8051单片机的内部结构 CPU即中央处理器,是单片机的核心部件,是计算机的控制指挥中心。同微型计算机CPU类似,8051内部CPU由运算器和控制器两部分组成。 运算器电路以算术逻辑单元(ALU,Arithmetic Logic Unit)为核心,由暂存器1、暂存器2、累加器(ACC,Accumulator)、寄存器B、程序状态寄存器(PSW,Program Status Word)及布尔处理机共同组成。它的主要任务是完成算术运算、逻辑运算、位运算和数据传送等操作,运算结果的状态由程序状态寄存器(PSW)保存。 控制器电路包括程序计数器(PC)、PC增1寄存器、指令寄存器(IR)、指令译码器(ID)、数据指针(DPTR)、堆栈指针(SP)、缓冲器及定时控制电路等。控制器电路完成指挥控制工作,协调单片机各部分正常工作。
8051 单 片 机 内 部 结 构 图
2.1.3 8051单片机的引脚及功能 MCS-51单片机的封装形式有两种,一种是双列直插式(DIP)封装,另一种是方形封装。 2.1.3 8051单片机的引脚及功能 MCS-51单片机的封装形式有两种,一种是双列直插式(DIP)封装,另一种是方形封装。 8051的40个引脚可分为: 电源引脚2根 时钟引脚2根 控制引脚4根 I/O引脚32根 由于8051单片机是高性能的单片机,同时受到引脚数目的限制,所以有部分引脚具有第二功能。
8051单片机引脚图 DIP引脚图 逻辑符号
8051引脚的功能描述(一) 电源引脚(2根) VCC(40脚):电源端,接+5V电源。 VSS(20脚):接地端。 时钟引脚(2根) XTAL1(19脚):接外部晶振和微调电容的一端。采用外部时钟电路时,对HMOS型工艺的单片机,此引脚应接地;对CHMOS型而言,此引脚应接外部时钟的输入端。 XTAL2(18脚):接外部晶振和微调电容的另一端。使用外部时钟时,对HMOS型工艺的单片机,此引脚应接外部时钟的输入端;对CHMOS型而言,此引脚悬空。
8051引脚的功能描述 (二) 控制引脚(4根) RST/VPD(9脚):复位信号/备用电源输入引脚。 当RST引脚保持两个机器周期的高电平后,就可以使8051完成复位操作。该引脚的第二功能是VPD,即备用电源的输入端,具有掉电保护功能。若在该引脚接+5V备用电源,在使用中若主电源VCC掉电,可保护片内RAM中的信息不丢失。 ALE/PROG (30脚):地址锁存允许信号输出/编程脉冲输入引脚。当CPU访问片外存储器时,ALE输出信号控制锁存P0口输出的低8位地址,从而实现P0口数据与低位地址的分时复用。当8051上电正常工作后,自动在ALE端输出频率为fosc/6的脉冲序列(fosc代表振荡器的频率)。 该引脚的第二功能PROG是对8751内部4KB EPROM编程写入时,作为编程脉冲的输入端。 EA/VPP(31脚):外部程序存储器地址允许输入端/编程电压输入端。 当EA接高电平时,CPU执行片内ROM指令,但当PC值超过0FFFH时,将自动转去执行片外ROM指令;当EA接低电平时,CPU只执行片外ROM指令。对于8031,由于其无片内ROM,故其EA必须接低电平。 该引脚的第二功能VPP是对8751片内EPROM编程写入时,作为21V编程电压的输入端。 PSEN(29脚):片外ROM读选通信号端。 在读片外ROM时,PSEN有效,为低电平,以实现对片外ROM的读操作。
8051引脚的功能描述 (三) I/O引脚(4×8=32根) P0.0~P0.7(39~32脚):P0口的8位双向I/O口线。 P0口即可作地址/数据总线使用,又可作通用的I/O口使用。当CPU访问片外存储器时,P0口分时先作低8位地址总线,后作双向数据总线,此时,P0口就不能再作I/O口使用了。 P1.0~P1.7(1~8脚):P1口的8位准双向I/O口线。 P1口作为通用的I/O口使用。 P2.0~P2.7(21~28脚):P2口的8位准双向I/O口线。 P2口即可作为通用的I/O口使用,也可作为片外存储器的高8位地址总线,与P0口配合,组成16位片外存储器单元地址。 P3.0~P3.7(10~17脚):P3口的8位准双向I/O口线。 P3口除了作为通用的I/O口使用之外,每个引脚还具有第二功能。
2.1.4 单片机的工作原理 单片机执行程序的过程,就是逐条执行指令的过程。单片机每执行一条指令都可分为三个阶段,即取指令——分析指令——执行指令。 取指令的任务是根据程序计数器PC中的值从程序存储器读出下一条要执行的指令,送到指令寄存器。分析指令的任务是将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。接下来,就是执行指令。 单片机中的程序一般事先都已通过写入器(编程器)固化在片内或片外程序存储器中,因而一开机即可执行指令。
2.2 单片机的存储器 2.2.1 程序存储器ROM 2.2.2 数据存储器RAM 2.2.3 数据存储器数据读写应用实例
8051的存储器结构 8051的存储器结构与常见的微型计算机的配置方式不同,它把程序存储器和数据存储器分开,有各自的寻址系统、控制信号和功能。 8051的存储器在物理结构上分为片内数据存储器、片内程序存储器、片外数据存储器和片外程序存储器4个存储空间。但从用户使用的角度看,8051的存储器分为3个逻辑空间。
存储空间分布图 片内外统一寻址的64KB程序存储器空间,地址范围为0000H~FFFFH。 256B的片内数据存储器空间,地址范围为00H~FFH。
2.2.1 程序存储器ROM 程序存储器ROM用来存放程序、常数或表格等。 在8051中,其存储空间分布如下: 片内有4KB的ROM存储单元,地址为0000H~0FFFH。 片外最多可扩至64KB的ROM,地址为1000H~FFFFH。 片内外ROM统一编址。 当EA引脚接高电平时,CPU将首先访问片内ROM,当指令地址超过0FFFH时,自动转向片外ROM取指令。 当EA引脚接低电平时,CPU只访问片外ROM。片外ROM的地址从0000H开始编址。对于8031,由于其片内无ROM,所以使用时必须使EA接低电平,以便能够从片外扩展的EPROM中取指令。
2.2.1 程序存储器ROM 在程序存储器中,以下6个单元具有特殊含义。 0000H:单片机复位后的程序入口地址。 000BH:定时器0的中断服务程序入口地址。 0013H:外部中断1的中断服务程序入口地址。 001BH:定时器1的中断服务程序入口地址。 0023H:串行口的中断服务程序入口地址。
2.2.2 数据存储器RAM 数据存储器RAM主要用来存放运算的中间结果和数据等。 在8051中,其存储空间分布如下: 片外RAM最多可扩至64KB存储单元,地址范围为0000H~FFFFH。 片内RAM为256B存储单元,地址范围为00H~FFH。 片内RAM地址空间共有256B,又分为两个部分: 低128B(00H~7FH)为真正的RAM区,如下图所示 。 高128B(80H~FFH)为特殊功能寄存器(SFR)区,如下表所示 。
7FH 30H 2FH 7F 7E 7D 7C 7B 7A 79 78 2EH 77 76 75 74 73 72 71 70 2DH 6F 6E 6D 6C 6B 6A 69 68 2CH 67 66 65 64 63 62 61 60 2BH 5F 5E 5D 5C 5B 5A 59 58 2AH 57 56 55 54 53 52 51 50 29H 4F 4E 4D 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38 26H 37 36 35 34 33 32 31 30 25H 2F 2E 2D 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20 23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00 1FH 18H 第3组工作寄存器 (R0~R7) 17H 10H 第2组工作寄存器 (R0~R7) 0FH 08H 第1组工作寄存器 (R0~R7) 07H 00H 第0组工作寄存器 (R0~R7) 工作寄存器区 位寻址区 用户RAM区 (堆栈、数据缓冲区) 片 内 RAM 地 址 空 间
SFR 中 位 地 址 分 布 表 SFR MSB 位地址/位定义 LSB 字节地址 B F7 F6 F5 F4 F3 F2 F1 F0 F0H ACC E7 E6 E5 E4 E3 E2 E1 E0 E0H PSW D7 D6 D5 D4 D3 D2 D1 D0 D0H CY AC RS1 RS0 OV - P IP BF BE BD BC BB BA B9 B8 B8H PS PT1 PX1 PT0 PX0 P3 B7 B6 B5 B4 B3 B2 B1 B0 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 IE AF AE AD AB AA A9 A8 A8H EA ES ET1 EX1 ET0 EX0 P2 A7 A6 A5 A4 A3 A2 A1 A0 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 SCON 9F 9E 9D 9C 9B 9A 99 98 98H SM0 SM1 SM2 REN TB8 RB8 TI RI P1 97 96 95 94 93 92 91 90 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 TCON 8F 8E 8D 8C 8B 8A 89 88 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 P0 87 86 85 84 83 82 81 80 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 SFR 中 位 地 址 分 布 表
2.2.3 数据存储器数据读写应用实例 【程序1】 工作寄存器的读写 2.2.3 数据存储器数据读写应用实例 【程序1】 工作寄存器的读写 地址 机器码 程 序 注 释 检查结果 ORG 0000H ;程序从ROM区0000H处开始存放 0000H 78 11 MOV R0, #11H ;将立即数11H送入寄存器R0中 ( H)=11H 0002H 79 22 MOV R1, #22H ;将立即数22H送入寄存器R1中 ( H)=22H 0004H 7A 33 MOV R2, #33H ;将立即数33H送入寄存器R2中 ( H)=33H 0006H 7B 44 MOV R3, #44H ;将立即数44H送入寄存器R3中 ( H)=44H 0008H 75 D0 10 MOV PSW, #10H ;使当前工作寄存器组为第2组 ( H)=10H 000BH 78 55 MOV R0, #55H ;将立即数55H送入寄存器R0中 ( H)=55H 000DH 79 66 MOV R1, #66H ;将立即数66H送入寄存器R1中 ( H)=66H 000FH 7A 77 MOV R2, #77H ;将立即数77H送入寄存器R2中 ( H)=77H 0011H 7B 88 MOV R3, #88H ;将立即数88H送入寄存器R3中 ( H)=88H END ;程序结束
【程序2】位寻址区的读写 地址 机器码 程 序 注 释 检查结果 ORG 0100H ;程序从ROM区0100H处开始存放 0100H 程 序 注 释 检查结果 ORG 0100H ;程序从ROM区0100H处开始存放 0100H D2 00 SETB 00H ;将位地址为00H的位置1 ( H)=1 0102H D2 01 SETB 01H ;将位地址为01H的位置1 0104H D2 02 SETB 02H ;将位地址为02H的位置1 0106H D2 03 SETB 03H ;将位地址为03H的位置1 0108H C2 04 CLR 04H ;将位地址为04H的位清0 ( H)=0 010AH C2 05 CLR 05H ;将位地址为05H的位清0 010CH C2 06 CLR 06H ;将位地址为06H的位清0 010EH C2 07 CLR 07H ;将位地址为07H的位清0 (20H )= 0110H C2 90 CLR 90H ;将P1.0位清0 0112H D2 90 SETB 90H ;将P1.0位置1 0114H C2 91 CLR 91H ;将P1.1位清0 0116H D2 91 SETB 91H ;将P1.1位置1 END ;程序结束
【程序3】一般RAM区和特殊功能寄存器区的读和写 地址 机器码 程 序 注 释 检查结果 ORG 0200H ;程序从ROM区0200H存放 0200H 75 30 99 MOV 30H, #99H ;将立即数99H送到30H单元中 (30H)= (PC)= 0203H 75 45 AA MOV 45H, #0AAH ;将立即数AAH送到45H单元中 (45H)= 0206H 75 81 50 MOV SP, #50H ;将立即数50H送到堆栈指针SP中 ( H)=50H 0209H 74 60 MOV A, #60H ;将立即数60H送到累加器A中 ( H)=60H 020BH 75 90 55 MOV P1, #55H ;将立即数55H送到P1口中 ( H)=55H 020EH 75 D0 90 MOV PSW, #90H ;将立即数90H送到PSW中,使当前工作寄存器组为第2组且将CY位置1 ( H)=90H 0211H 90 12 34 MOV DPTR,#1234H ;将立即数1234H送到数据指针DPTR中 ( H)=12H ( H)=34H END ;程序结束
2.3 单片机的输入/输出端口 2.3.1 输入/输出端口结构 2.3.2 输入/输出端口负载能力 2.3.3 P1口输出功能应用实例 2.3 单片机的输入/输出端口 2.3.1 输入/输出端口结构 2.3.2 输入/输出端口负载能力 2.3.3 P1口输出功能应用实例 2.3.4 P3口输入功能应用实例
2.3.1 输入/输出端口结构 8051单片机有4个8位并行I/O端口,称为P0、P1、P2和P3口,每个端口都各有8条I/O口线,每条I/O口线都能独立地用作输入或输出。 在无片外扩展存储器的系统中,这四个I/O口都可以作为通用I/O口使用。 在有片外扩展存储器的系统中,P2口送出高8位地址,P0口分时送出低8位地址和8位数据。
1. P0口 P0口某一位的结构图如下图所示,它由一个输出锁存器、两个三态输入缓冲器、一个转换开关MUX、一个输出驱动电路(T1和T2)和一个与门及一个非门组成。
(1) P0口用作通用I/O口 MUX与锁存器的Q端接通,与门输出为0,T1截止,输出驱动级就工作在需外接上拉电阻的漏极开路方式。 CPU在执行输出指令时,内部数据总线的数据在“写锁存器”信号的作用下,由D端进入锁存器,取反后出现在Q端,再经过T2反向,则P0.X引脚上的数据就是内部总线的数据。由于T2为漏极开路输出,故此时必须外接上拉电阻。 ② P0口用作输入口 数据可以读自端口的锁存器,也可以读自端口的引脚,这要看输入操作执行的是“读锁存器”指令还是“读引脚”指令。 方式1:读引脚。CPU在执行“MOV”类输入指令时(如:MOV A , P0),内部产生的操作信号是“读引脚”。P0.X引脚上的数据经过缓冲器2读入到内部总线。注意,在读引脚时,必须先向电路中的锁存器写入1,使T2截止,P0.X引脚处于悬浮状态,可作为高阻抗输入。 方式2:读锁存器。CPU在执行“读-改-写”类输入指令时(如:ANL P0, A ),内部产生的操作信号是“读锁存器”,锁存器中的数据经过缓冲器1送到内部总线,然后与A的内容进行逻辑“与”,结果送回P0的端口锁存器并出现在引脚。除了MOV类指令外,其他的读口操作指令都属于这种情况。
(2) P0口用作地址/数据总线 MUX将地址/数据线与T2接通,同时与门输出有效。 若地址/数据线为1,则T1导通,T2截止,P0口输出为1;反之T1截止,T2导通,P0口输出为0。 当数据从P0口输入时,读引脚使三态缓冲器2打开,端口上的数据经缓冲器2送到内部总线。
(3)P0口小结 ① P0口既可作地址/数据总线使用,也可作通用I/O口使用。当P0口作地址/数据总线使用时,就不能再作通用I/O口使用了。 ③ P0口作输入口读引脚时,应先向锁存器写1,使T2截止,不影响输入电平。
2. P1口 P1口是唯一的单功能口,仅能作为通用I/O口使用。由于在其输出端接有上拉电阻,故可以直接输出而无需外接上拉电阻。 同P0口一样,当作输入口时,必须先向锁存器写“1”,使场效应管T截止。
3. P2口 图中的控制信号C决定转换开关MUX的位置:当C=0时,MUX拨向下方,P0口为通用I/O口;当控制信号C=1时,MUX拨向上方,P0口作为地址总线使用。 在实际应用中,P2口通常作为高8位地址总线使用。
4. P3口 P3口用作通用I/O口时,第二输出功能信号W=1,P3口的每一位都可定义为输入或输出,其工作原理同P1口类似。
P3口的第二功能 引脚 第二功能 功能说明 P3.0 RXD 串行口输入 P3.1 TXD 串行口输出 P3.2 外部中断0输入 P3.3 外部中断1输入 P3.4 T0 定时器/计数器0计数输入 P3.5 T1 定时器/计数器1计数输入 P3.6 片外RAM写选通信号(输出) P3.7 片外RAM读选通信号(输出)
2.3.2 输入/输出端口负载能力 P0口的输出级与P1~P3口的输出级在结构上不同,其输出级无上拉电阻,因此它们的负载能力和接口要求也不相同。 P0口的每一位能驱动8个LSTTL负载。在作为通用I/O口使用时,输出驱动电路是开漏的,所以,驱动集电极开路(OC门)电路或漏级开路电路需外接上拉电阻。当作为地址/数据总线使用时(T1可以提供上拉电平),口线不是开漏的,无需外接上拉电阻。 P1~P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路有上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏级开路电路所驱动,而无需外接上拉电阻。 对于80C51单片机(CHMOS),端口只能提供几毫安的输出电流,故当作输出口去驱动一个普通晶体管的基极时,应在端口与晶体管基极间串联一个电阻,以限制高电平输出时的电流。
2.3.3 P1口输出功能应用实例 【例1】 P1口做输出口,控制八只发光二极管循环点亮(P1口输出低电平时发光二极管被点亮)。 解: 由于发光二极管低电平点亮,所以,需要哪个发光二极管点亮,只需在相应的端口输出逻辑0即可。由于每个发光二极管点亮后要持续一段时间才熄灭,再使下个发光二极管点亮,因此需要编写延时子程序,供主程序反复调用。 本例中,延时子程序采用指令循环来实现。 地址 机器码 程序 注释 ORG 0000H 0000H 02 10 00 LJMP MAIN ORG 1000H 1000H 74 FE MAIN: MOV A, #0FEH 1002H F5 90 LOOP: MOV P1, A 1004H 12 10 0A LCALL DELAY ;延时 1007H 23 RL A ;左移位 1008H 80 F8 SJMP LOOP ;循环 100AH 7F FF DELAY: MOV R7, #0FFH ;延时子程序 100CH 7E FA L1: MOV R6, #0FAH 100EH DE FE DJNZ R6, $ 1010H DF FA DJNZ R7, L1 1012H 22 RET END
【例2】利用P1.0输出高低电平,控制继电器的开合,以实现对外部装置(如灯L1和L2)的控制。 解:将单片机的P1.0接继电器控制端JIN,继电器的JZ通过K1接地,常开触点JK接L1,常闭触点JB接L2。编制程序,使P1.0电平变化,高电平时继电器吸合,常开触点闭合,L1点亮,L2熄灭;低电平时继电器不工作,常闭触点闭合,L2点亮,L1熄灭。
参考程序: 地址 机器码 程序 注释 ORG 0000H 0000H 02 20 00 LJMP MAIN ORG 2000H 2000H C2 90 MAIN: CLR P1.0 ;P1.0送低电平 2002H 12 20 0C LCALL DELAY ;延时 2005H D2 90 SETB P1.0 ;P1.0送高电平 2007H 200AH 80 F4 SJMP MAIN ;循环 200CH 7F 06 DELAY: MOV R7, #06H ;延时子程序 200EH 7E FF L1: MOV R6, #0FFH 2010H 7D FA L2: MOV R5, #0FAH 2012H DD FE DJNZ R5, $ 2014H DE FA DJNZ R6, L2 2016H DF F6 DJNZ R7, L1 2018H 22 RET END
2.3.4 P3口输入功能应用实例 【例3】 P3口的P3.0连接一个开关,作为输入端;P1口的P1.0~P1.7连接八只发光二极管,作为输出端。要求用P3.0来控制P1输出的循环灯,即当P3.0输出高电平时,控制P1口的发光二极管左循环点亮;当P3.0输出低电平时,控制P1口的发光二极管右循环点亮(P1口输出低电平时发光二极管被点亮)。 解:在主程序中要对P3.0的状态进行判断。 如果P3.0为高电平,则使用循环左移指令。 如果P3.0为低电平,则使用循环右移指令。 延时子程序同例1。
参考程序: 地址 机器码 程序 注释 ORG 0000H 0000H 02 30 00 LJMP MAIN ORG 3000H 3000H 74 FE MAIN: MOV A, #0FEH 3002H F5 90 LOOP: MOV P1, A 3004H 12 30 10 LCALL DELAY ;延时 3007H 20 B0 03 JB P3.0, L1 300AH 03 RR A ;右移位 300BH 80 F5 SJMP LOOP ;循环 300DH 23 L1: RL A ;左移位 300EH 80 F2 3010H 7F FF DELAY: MOV R7, #0FFH ;延时子程序 3012H 7E FA L2: MOV R6, #0FAH 3014H DE FE DJNZ R6, $ 3016H DF FA DJNZ R7, L2 3018H 22 RET END
2.4 时钟电路 2.4.1 CPU时序 2.4.2 时钟电路
2.4.1 CPU时序 CPU时序就是CPU在执行指令时所需控制信号的时间顺序。 单片机的时序定时单位从小到大依次为:时钟周期、状态周期、机器周期和指令周期。 MCS-51单片机共有111条指令,按照指令字节数和机器周期数可分为六类,即单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令和三字节双周期指令。
典型指令的取指、执行时序 时钟周期为单片机提供定时信号的振荡源的周期或外部输入时钟信号的周期,也称为振荡周期 。 状态周期(或状态S)是振荡周期的两倍,它分为P1节拍和P2节拍。 一条指令的执行过程分作几个基本操作,完成一个基本操作所需的时间称作机器周期。 执行一条指令所需的时间称为指令周期。 典型指令的取指、执行时序
2.4.2 时钟电路 (a) 内部方式时钟电路 (b) 外部方式时钟电路 2.4.2 时钟电路 8051单片机的时钟信号通常由两种方式产生:一是内部振荡方式,二是外部时钟方式。 (a) 内部方式时钟电路 (b) 外部方式时钟电路
2.4.2 时钟电路 1. 内部振荡方式 在8051单片机内部有一个高增益的反相放大器,用于构成振荡器,反相放大器的输入端为XTAL1,输出端为XTAL2。 内部振荡方式是在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个电容构成稳定的自激振荡电路。 电容C1和C2通常取30pF,对振荡频率有微调作用。晶振频率范围是1.2MHz~12MHz。 2. 外部时钟方式 外部时钟方式是把外部已有的时钟信号引入到单片机内。 8051:外部时钟由XTAL2输入,直接送入内部时钟电路,XTAL1接地; 80C51:外部时钟由XTAL1输入,XTAL2悬空。 外部时钟信号为高电平持续时间要大于20ns,且频率低于12MHz的方波。
2.5 复 位 电 路 2.5.1 复位功能 2.5.2 复位电路
2.5.1 复位功能 复位是单片机的初始化操作。 复位功能是把PC初始化为0000H,使CPU从0000H单元开始执行程序;复位操作同时还对其他一些寄存器有影响,但内部RAM的数据是不变的。 除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。
部分特殊功能寄存器的复位状态 寄存器 复位状态 PC 0000H ACC 00H B PSW SP 07H DPTR P0~P3 0FFH IP ×××00000B IE 0××00000B TMOD TCON TL0,TL1 TH0,TH1 SCON SBUF 不定 PCON 0×××0000B 说明:表中符号×状为随机态。
2.5.2 复位电路 单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。 2.5.2 复位电路 单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行复位操作。 常见的复位操作有上电自动复位和按键手动复位两种方式 。 上电自动复位是通过外部复位电路的电容充电来实现的。 按键手动复位是通过复位端经电阻与电源VCC接通而实现的,它兼备上电复位功能。 (a) 上电自动复位 (b) 按键手动复位
2.6 常用单片机功能简介 2.6.1 Atmel公司的AT89系列单片机 2.6.2 Motorola公司M68HC08系列单片机 2.6 常用单片机功能简介 2.6.1 Atmel公司的AT89系列单片机 2.6.2 Motorola公司M68HC08系列单片机 2.6.3 其他系列单片机
2.6.1 Atmel公司的AT89系列单片机 AT89系列单片机不但具有一般MCS-51单片机的所有特性,而且其Flash程序存储器可以用电擦除方式瞬间擦除、改写, 写入单片机内的程序还可以进行加密。 Atmel公司的89系列单片机主要有AT89C51、AT89C2051和AT89C1051等型号。 AT89C2051和AT89C1051算是AT89C51的精简版。 AT89C51最为实用,它不但和8051指令、管脚完全兼容,而且其片内含有4KB Flash型程序存储器,性价比远高于8751。 AT89C2051去掉了P0口和P2口,内部的Flash程序存储器也只有2K,封装形式也由40脚改为20脚。 AT89C1051在AT89C2051的基础上,再次精简掉了串口等功能,程序存储器减小到1KB。
2.6.2 Motorola公司M68HC08系列单片机 M68HC08系列单片机,具有速度快、功能强、价格低、功耗低、指令系统丰富等特点,内部程序存储器采用成熟的Flash存储器技术。 编程速度快、可靠性高 。 单一电源电压供电——片内集成电荷泵,可由单一工作电压在片内产生编程电压。 支持在线编程 ——允许单片机内部运行的程序去改写Flash存储器内容,这样可代替外部电可擦除存储器芯片,减少外围部件,增加嵌入式系统开发的方便性。 高频噪声低,抗干扰能力强 。
2.6.3 其他系列单片机 Atmel公司的AVR单片机,是增强型RISC(精简指令集)、内载Flash的单片机。由于采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令。AVR单片机工作电压为2.7~6.0V,可以实现耗电最优化。 MicroChip公司的主要产品是PIC16C系列和PIC17C系列8位单片机,CPU采用RISC结构,分别仅有33、35、58条指令,采用Harvard双总线结构,运行速度快,工作电压低,低功耗,有较大的输入/输出直接驱动能力,价格低,能一次性编程,体积小,适用于用量大、档次低、价格敏感的产品。
本章小结 Intel公司MCS-51系列单片机是我国目前应用最为广泛的单片机。8051/80C51是整个MCS-51系列单片机的核心,该系列其他型号的单片机都是在这一内核的基础上发展起来的。 8051单片机内部结构包括中央处理器、程序存储器、数据存储器、并行I/O接口、定时器/计数器、时钟电路、中断系统、串行口。中央处理器是单片机的核心部件,是计算机的控制指挥中心。 8051的程序存储器和数据存储器是各自独立的,各有各的寻址系统、控制信号和功能。在物理结构上可分为片内数据存储器、片内程序存储器、片外数据存储器和片外程序存储器4个存储空间。 片内RAM共256B,分为两大功能区,低128B为真正的RAM区;高128B为特殊功能寄存器(SFR)区。低128B RAM又分为工作寄存器区、位寻址区和用户RAM区。
本章小结 8051单片机有P0、P1、P2和P3 4个8位并行I/O端口,每个端口各有8条I/O口线,每条I/O口线都能独立地用作输入或输出。各端口的功能不同,且结构上也有差异,通常P2口作为高8位地址线,P0口分时复用作为低8位地址线和8位数据线,P3口使用第二功能,P1口只能作为通用I/O口使用。P0口的输出级与P1~P3口的输出级在结构上不同,其输出级无上拉电阻,因此它们的负载能力和接口要求也不相同。 时序就是CPU在执行指令时所需控制信号的时间顺序,其单位有振荡周期、时钟周期、机器周期和指令周期。时钟信号产生方式有内部振荡方式和外部时钟方式两种。 复位是单片机的初始化操作,复位操作对PC和部分特殊功能寄存器有影响,但对内部RAM没有影响。
习 题 1. 请结合MCS-51系列单片机的结构框图,阐明其组成。 2. 综述MCS-51系列单片机各引脚的作用,并试分类。 习 题 1. 请结合MCS-51系列单片机的结构框图,阐明其组成。 2. 综述MCS-51系列单片机各引脚的作用,并试分类。 3. 程序计数器的符号是什么?MCS-51系列单片机的程序计数器有几位? 4. 何谓程序状态字?它的符号是什么?它各位的含义是什么? 5. 何谓振荡周期、时钟周期、机器周期和指令周期?针对MCS-5l系列单片机,如采用12MHz晶振,它们的周期各是什么值? 6. 引脚的作用是什么?在下列三种情况下,引脚各应接何种电平? (1) 只有片内ROM; (2) 有片内ROM和片外ROM; (3) 有片内ROM和片外ROM,片外ROM所存为调试程序。 7. MCS-51系列单片机存储器的地址空间是如何划分的?各地址空间的地址范围和容量如何? 8. MCS-5l怎样实现上电自动复位与按键手动复位?并请综述各专用寄存器复位后的状态。
Q & A? Thanks!