《单片机原理与应用》笔记
第1章 单片机概述
1.1 教学要求
- 了解单片机的基本概念及应用
- 熟练掌握单片机的软、硬件知识
- 能应用单片机实验平台完成基本实验
- 能应用单片机完成简单开发
1.2 单片机简介
单片机即单片机微型单片机,是将单片机主机(CPU、内存和I/O接口)集成在一小块硅片上的微型机。
单片机为工业测控而设计,又称微控制器(MCU)。
具有三高优势(集成度高、可靠性高、性价比高)。主要应用于工业检测与控制、单片机外设、智能仪器仪表、通讯设备、家用电器等。特别适合于嵌入式微型机应用系统。
单片机开发系统有单片单板机和仿真器。实现单片机应用系统的硬、软件开发。
1.3 发展概况
- 第一阶段(1974~ 1978):初级单片机阶段。以Intel公司的MCS-48为代表
- 第二阶段(1978~1983):高性能单片机阶段。以MCS-51系列为代表
- 第三阶段(1988年~):8位单片机巩固、完善及16位单片机推出阶段。以MCS-96系列为代表
- 1976-1978初级8位单片机Intel MCS-48系列
- 1978- 高档8位单片机Intel MCS-51系列:
a) -51子系列:8031/8051/8751
b) -52子系列:8032/8052/8752 - 低功耗型80C31高性能型80C252廉价型89C2051/10512
- 1983- 16位单片机Intel MCS-96系列:
a) 8098/8096
b) 80C198/80C196
c) 32位单片机80960
1.4 发展趋势
- CPU的改进
a) 采用双CPU结构,以提高处理能力
b) 增加数据总线宽度
c) 采用流水线结构 - 存储器的发展
a) 加大存储容量
b) 片内EPROM开始FLASH化
c) 程序保密化 - 片内I/O的改进
a) 增加并行口的驱动能力
b) 增加/O口的逻辑控制功能
c) 通信及网络功能加强。 - 集成更多的外围电路
- 引脚的多功能
- 低功耗
- 专用型单机发展加快
1.5 技术指标
- 字长:8位机、16位机、32位机。
- 内存容量:
a) 容量单位:1K=210=1024,1M=220
b) 8K、64K、16M、64M - 运算速度:
a) 时钟频率、主频、每秒运算次数
b) 6MHz、12MHz、24MH、100MHz、300MHz - 内存存取周期:50nS、70nS、200nS
1.6 运算基础
十进制 | 二进制 | 十六进制 | 十进制 | 二进制 | 十六进制 |
---|---|---|---|---|---|
0 | 0000 | 0 | 8 | 1000 | 8 |
1 | 0001 | 1 | 9 | 1001 | 9 |
2 | 0010 | 2 | 10 | 1010 | A |
3 | 0011 | 3 | 11 | 1011 | B |
4 | 0100 | 4 | 12 | 1100 | C |
5 | 0101 | 5 | 13 | 1101 | D |
6 | 0110 | 6 | 14 | 1110 | E |
7 | 0111 | 7 | 15 | 1111 | F |
- 十进制ND:逢十进一
- 二进制NB:逢二进一
- 十六进制NH:逢十六进一
1.7 结构框图
1.8 性能介绍
MCS-51系列芯片主要性能
型号 | 片内ROM | 片内RAM | 寻址范围 | 计数器 | 并行口 | 串行口 | 中断源 |
---|---|---|---|---|---|---|---|
8031 | 无 | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
8051 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
8751 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
80C31 | 无 | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
80C51 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
87C51 | 4KB | 128B | 2X64KB | 2X16 | 4X8 | 1 | 5 |
MCS-96系列芯片主要性能
型号 | 片内ROM/EPROM | 寄存器 | 内部RAM | 定时器计时器 | A/D通道 | I/O引脚 | 高速输入/输出 | 串行口 PWM | 速度MHz | 寻址空间 |
---|---|---|---|---|---|---|---|---|---|---|
8098 | 8K | 232 | 0 | 2 | 4 | 32 | HSIO | 1 | 1 | 12 |
80C196KB | 无 | 232 | 0 | 2 | 8 4 | 8 | HSIO | 1 | 1 | 12,16 |
83C196KB | 8K | 232 | 0 | 2 | 8 | 48 | HSIO | 1 | 1 | 12,16 |
87C196KB | 8K | 232 | 0 | 2 | 8 | 48 | HSIO | 1 | 1 | 12,16 |
8XC196KC | 16K | 488 | 0 | 2 | 8 | 48 | HSIO | 1 | 3 | 16,20 |
8XC196KD | 32K | 1000 | 0 | 2 | 8 | 48 | HSIO | 1 | 3 | 16,20 |
1.9 应用介绍
- 单片机在各类仪器仪表中的应用
- 单片机在工业测控中的应用
- 单片机在单片机网络与通信技术中的应用
- 单片机在日常生活及家电中的应用
- 商业流通领域、汽车电子及航空电子
1.10 可做的实验
- LED电路,8只独立LED发光管,可做指示或各种闪烁效果用
- 数码管电路,4只共阳一体8段数码显示管,可实现各种数据显示,如计数、时钟等
- 蜂鸣器电路,可用于设计各种提示音、演奏音乐等
- 键盘电路,学习按键控制相关编程
- LCD显示电路,编程控制LCD显示
- 串口电路,学习编程实现JD51和PC或其他符合该通信协议的电路之间的通信
- 红外电路,通过选配的红外遥控器,学习红外解码并可实现红外遥控JD51
- 温度模块电路,采用一线式温度传感器实现温度的采集并可显示在数码管或者LCD上,通过温度数据处理便可实现温度控制器功能
- 除了以上提到的可编程电路本学习板还有一些常用的不可编程电路,包括电源电路、复位电路、晶振电路等。
第2章 MCS-51单片机的结构与原理
2.1 MCS-51单片机的硬件功能
-
8051单片机的主要功能方框图
-
共性
a) 一个8位CPU
b) 片内振荡和定时电路
c) 128B内部RAM(00H~7FH)
d) 4个8位并行I/O口
e) 2个16位可编程定时/计数器
f) 一个全双工串行口
g) 5个中断源(可编程为两个优先级)
h) 22个SFR(除PC外,其余21个分散在80H~FFH之间)
i) 堆栈深度可达80B(30H~7FH)
j) 16B(128位,20H~2FH)可位寻址区
2.2 MCS51硬件系统结构
2.3 存储器结构
2.3.1 CPU内部结构
- 算术逻辑运算单元ALU(8位)
+、–、×、÷算术运算,与、或、非、异或逻辑运算、循环移位、位处理。 - 寄存器阵列
a) 工作寄存器R0~R7(8位)
暂存运算数据和中间结果。4个工作寄存器区,工作寄存器0区~3区。每个区均含8个寄存器R0~R7。用PSW中的两位PSW.4和PSW.3来切换工作寄存器区,选用一个工作寄存器区进行读写操作。
b) 累加器Acc(8位)
需要ALU处理的数据和计算结果多数要经过A累加器。
c) 寄存器B(8位)
与A累加器配合执行乘、除运算。也可用作通用寄存器。
d) 程序状态字PSW(8位)
存放ALU运算过程的标志状态
Cy AC F0 RS1 RS0 OV — P
e) 数据指针DPTR(16位)
存放片外存储器地址,作为片外存储器的指针。可分成两个8位寄存器DPH、DPL使用。
f) 堆栈指针SP(8位)
堆栈是按“先进后出”原则存取数据的存储区。MCS-51堆栈设在片内RAM区。数据入栈/出栈时,SP自动加1/减1,其内容始终为栈顶地址。复位时SP=07H。
g) 程序计数器PC(16位)
CPU总是按PC的指示读取程序。PC可自动加1。因此CPU执行程序一般是顺序方式。当发生转移、子程序调用、中断和复位等操作,PC被强制改写,程序执行顺序也发生改变。
复位时,PC=0000H。
2.3.2 程序存储器
- 在MCS-51的指令系统仅有两条:
a) MOVC A,@A+DPTR
b) MOVC A,@A+PC - 复位后,程序计数器PC的内容为0000H
- MCS-51最多可外扩64K字节程序存储器
2.3.3 数据存储器
- 从00H~1FH的32B单元是4个工作寄存器组。
- 地址20H~2FH的16B共128位,是可位寻址的内部RAM区,它们既可字节寻址,亦可位寻址。
- 其他80B是只能按字节寻址的内部RAM区,为用户区。
MCS-51单片机的堆栈安排在内部RAM内,堆栈的深度以不超过内部RAM的空间为限。
2.3.4 堆栈
- 堆栈的概念:堆栈是一种只允许在其一端进行数据插入和删除操作的一种数据结构。数据存取为“后进先出”。
- 堆栈的功能:保护断点和现场信息。
- 堆栈的建立:MCS-51的堆栈是设置在内部RAM 30H~7FH空间中,栈底为低地址单元,堆栈指针为SP。
2.3.5 特殊功能寄存器SFR
- 程序计数器(PC、16位):存放将要执行的指令地址。
- 累加器(ACC、8位):存放数据或中间结果。
- B寄存器(8位):主要用于乘、除运算。
- 数据指针(DPTR、16位):存放外部数据存储器的地址。
- 程序状态字(PSW、8位):用于寄存程序运行的状态信息。
2.3.6 外部数据存储器
- MCS-51外部数据存储器寻址空间为64KB
- MCS-51同外部数据存储器的指令有4条:
a) MOVX A,@Ri
b) MOVX A,@DPTR
c) MOVX @Ri, A
d) MOVX @DPTR,A - R0,R1为8位寄存器,寻址范围256B
- DPTR为16位的数据指针,寻址范围64KB。
2.4 I/O端口
- MCS-51有4个双向的8位并行I/O口:P0~P3
- 每一个口都有一个8位的锁存器
- 复位后它们的初始状态为全“1”
P0口是三态双向口:
既可作为并行I/O口,也可作为数据总线口。
当外部扩展了存储器或I/O端口,则只能作数据总线和地址总线低8位。
P1口是专门供用户使用的I/O口,是准双向接口
P2口是准双向接口,既可作为并行I/O口,也可作为地址总线高8位口
当外部扩展了存储器或I/O端口,则只能作地址总线高8位
P3口是准双向口,又是双功能口
该口的每一位均可独立地定义为第二功能,作为第一功能使用时,口的结构与操作与P1口相同
- I/O的接口要求与负载能力
a) P1,P2,P3口内部均有上拉电阻,当它们用作输入方式时,对应的口锁存器必须先“置”1
b) P0口内部没有上拉电阻,当它作为通用I/O时,外接上拉电阻,在用作地址/数据线时,不必外加上拉电阻
c) P0口的每位输出可驱动8个LSTTL负载,P1-P3口可驱动4个LSTTL负载。
2.5 复位电路
- 复位后PC值为0000H,故复位后的程序入口地址为0000H;
- 复位后PSW=00H,使片内存储器中选择0区工作寄存器,用户标志为F0为0状态;
- 复位后SP=07H,设定推栈栈底为07H;
- 复位后的P1,P2,P3口锁存器全为1状态,使这些准双向口皆处于输入状态;
- 内部RAM不受复位的影响。
复位电路的基本功能是:系统上电时提供复位信号,在加电瞬间,RST端出现一定时间的高电平,直至系统电源稳定后,撤销复位信号。
2.6 CPU时序
- CPU执行一条指令的时间称为指令周期,它是以机器周期为单位的,MCS-51典型的指令周期为一个机器周期。
- 每个机器周期由6个状态周期组成,每个状态周期由2个振荡周期组成,状态周期即S1、S2、S3、S4、S5、S6,而每个状态周期由两个节拍Pl,P2组成。
- 大多数8051指令执行时间为一个机器周期,MUL(乘法)和DIV(除法)需要4个机器周期。
2.7 CPU引脚功能
- 端口线(4×8=32条)
a) P0.0-P0.7
b) P1.0-P1.7
c) P2.0-P2.7
d) P3.0-P3.7 - 电源线(2条):
a) VCC为+5V电源线
b) VSS为地线 - 控制线(6条)
a) ALE/PROG :地址锁存允许/编程线
配合P0口引脚的第二功能使用,用于把这个片外存储器低8位地址锁存到外部专用地址锁存器
在不访问片外存储器时,MCS-51自动在ALE线上输出频率为fosc/6的脉冲序列。该脉冲序列可用作外部时钟源或作为定时脉冲源使用
它可以在对8751片内EPROM编程/校验时传送5ms宽的负脉冲。
b) EA/VPP:允许访问片外存储器/编程电源线
控制MCS-51使用片内ROM还是使用外ROM。
若=1,则允许使用片内ROM;
若=0,则只能使用片外ROM。
对8751的EA/VPP用于在片内EPROM编程/校验时输入21V或12.5V编程电源。
c) PSEN:片外ROM选通线
执行访问片外ROM的指令MOVC时,自动在线上产生一个负脉冲,用于为片外ROM芯片的选通(相当于读信号RD)。其他情况下,线均为高电平封锁状态。
d) RST/VPD:复位/备用电源线
使CPU处于复位(即初始化)工作状态。复位有上电自动复位和人工按钮复位两种
RST/VPD的第二功能是作为备用电源输入端。当主电源VCC,发生故障而降低到规定低电平时,RST/VPD线上的备用电源自动投入,以保证片内RAM中信息不丢失。
e) XTAL1和XTAL2:片内振荡电路输入/输出线
片内振荡电路输入/输出线,这两个端子用来外接石英晶体和微调电容,即用来连接片内OSC的定时反馈回路
2.8 单片机的工作方式
- 复位方式
a) 单片机在开机时都需要复位,以便CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作
b) RST引脚是复位信号的输入端
c) 复位信号是高电平有效,持续时间要有24个时钟周期以上
d) 若时钟频率为12MHz,则复位脉冲宽度至少应为2µS。
e) 单片机复位后,堆栈指针SP为07H、ALE、PSEN、P0、P1、P2、和P3口各引脚均为高电平,片内RAM中内容不变。 - 程序执行方式
a) 单步执行方式
单步执行方式是指按一次单步执行键就执行一条用户指令的方式
单步执行方式常常用于用户程序的调试
单步执行方式是利用单片机外部中断功能实现的
b) 连续执行方式
连续执行方式是单片机都需要的一种工作方式
被执行程序可以放在片内或片外ROM中
由于复位后程序计数器PC=0000H,可以预先在0000H处放一条转移指令,以便跳转到0000H~0FFFFH中的任何地方执行程序。 - 节电方式
a) 待机方式:使用指令将PCON寄存器的IDL位置1即可
单片机进入待机方式时振荡器仍然运行、CPU不工作、通用寄存器都保持原有状态不变退出待机方式的方法有两种:中断和硬件复位。
b) 掉电保护方式:使用指令将PCON寄存器的PD位置1即可
单片机的一切工作全部停止、只有内部的RAM单元的内容被保存、I/O引脚状态和相关的特殊功能寄、存器的内容相对应、ALE和为逻辑低电平。 - EPROM的编程和校验方式
a) 编程:是指利用特殊手段对单片机片内EPROM进行写入的过程
b) 校验:是对刚刚写入的程序代码进行读出验证的过程
c) 单片机的编程和校验方式只有EPROM型器件才有,如8751这样的器件。
第3章 MCS-51指令系统
3.1 指令编码格式及分类
- 指令编码格式
一条指令表示计算机所完成的某种操作。它通常由操作码和操作数两部分组成。
a) 单字节指令(49条)
b) 双字节指令(46条)
c) 三字节指令(16条) - 指令分类
a) 数据传送类指令(29条)
b) 算术运算类指令(24条)
c) 逻辑运算类指令(24条)
d) 控制转移类指令(17条)
e) 位操作指令(17条)
3.2 寻址方式
寻址方式是指操作数存放存储单元地址的表示形式。MCS-51指令系统共提供七种寻址方式:
- 立即寻址:该方式把操作数(即立即数)包含在指令字节中
- 直接寻址:该方式是把操作数的地址包含在指令字节中,而操作数本身则存放在该地址指示的数据存储单元中
- 寄存器寻址方式:该方式把操作数存放在指定的寄存器中。
- 寄存器间接寻址方式:该方式是把操作数的所在地址存放在指定的寄存器中
- 基址加变址寻址方式:该方式把DPTR或PC寄存器作为基址寄存器,累加器A作为变址寄存器,(A)+(PC)或(A)+(DPTR)的和作为操作数的16位地址。
- 相对寻址方式:这种寻址方式是以程序计数器PC的当前值为基准,加上指令中给出的相对偏移量rel以形成目标地址。
- 位寻址方式:MCS-51具有位处理功能,可以对二进制“位”进行操作。
a) 位寻址的寻址范围
内部RAM中的20H-2FH字节地址范围,共128位,位地址为00H-7FH。
特殊功能寄存器的可寻址位。可位寻址的特殊功能寄存器有B、ACC、PSW、IP、IE、SCON、TCON、P0~P3,共11个。
PSW中的CY作为位累加器。
位寻址方式:位寻址方式使用直接寻址方式
直接地址方式:在指令中直接给出位地址。
点操作符方式:在字节地址或寄存器名与位序号之间加一个点。
位名称方式:直接给出寄存器的位名称。
3.3 数据传送类指令
指令中有数据源地址和传送数据目标地址,传送方向由源地址中的数据传送到目的地址中,源地址中的内容不变;数据传送类指令的执行结果不影响程序状态寄存器(PSW)中的各标志位。
- 内部数据传送指令:数据传送在单片机内部进行,不通过外部总线,传送速度快。
- 累加器与外部RAM之间的数据传送指令
a) 由Ri提供外部RAM的单元地址
b) 由DPTR提供外部RAM单元地址 - 程序存储器数据传送指令:包括内部程序存储器和外部程序存储器
- 堆栈操作指令:堆栈是建立在内部RAM中,通过堆栈指示器SP进行读写操作
- 数据交换指令
a) 字节交换指令
b) 半字节交换指令
3.4 算术运算类指令
- 加法类运算指令
a) 加法指令(影响CY、OV、AC、P)
b) 带进位位CY的加法(影响CY、OV、AC、P)
c) 加1指令 - 减法运算指令
a) 带借位位CY的减法(影响CY、OV、AC、P)
b) 减1指令 - 乘除指令
a) 乘法指令
b) 除法指令 - 十进制调整指令
3.5 逻辑运算类指令
- 单操作数逻辑运算指令
a) 累加器清零
b) 累加器取反
c) 累加器循环左移
d) 累加器循环右移
e) 累加器带进位CY循环左移
f) 累加器带进位CY循环右移 - 双操作数逻辑运算指令
a) 逻辑与
b) 逻辑或
c) 逻辑异或
3.6 控制程序转移类指令
- 无条件转移
a) 长转移指令
b) 短转移指令
c) 绝对转移指令
d) 相对转移指令 - 条件转移指令
a) 累加器判零转移指令
b) 比较转移指令
c) 减‘1’不为零转移指令 - 空操作指令
3.7 位操作类指令
- 位传送指令
- 位置位和清除指令
- 位运算指令
- 位控制转移指令
第4章 汇编语言程序设计
4.1 汇编语言语句格式
- 指令格式
[标号:]助记符 操作数1,操作数2[;注释] 标号:由1-8个字符组成,且第一个字符必须是字母。用于指示指令的地址。
操作数:可使用二(B结尾)、十(D结尾或省略)、十六(H结尾)进制数和字符串(加“”)。
注释:为不可执行部分,对程序加以说明。 - 伪指令格式
伪指令是不可执行的指令,其功能是为汇编程序提供信息。常用伪指令有:
a) 汇编起始地址命令:ORG
格式: ORG 地址
功能:规定程序的起始地址,省略时起始地址从0000H开始。
b) 汇编终止命令:END
格式: END 表达式
功能:源程序汇编终止。在主程序模块中含有“表达式”给出程序的起始地址,在其它模块(子程序)中表达式可省略。
c) 赋值命令:EQU
格式:字符名称 EQU 表达式
功能:将表达式的值赋给字符名称。表达式可以是常数、地址、标号和表达式。
d) 定义数据命令:DB、DW
格式:[标号:] DB 字节数据项表
功能:从指定地址(即标号)开始,在程序存储器中定义字节数据。
格式: [标号:] DW 字数据项
功能:从指定地址(即标号)开始,在程序存储器中定义16位字数据。高8位数据在低地址单元,低8位数据在高地址单元。
e) 定义存储区命令:DS
格式: [标号:] DS 表达式
功能:从指定地址(即标号)开始,保留指定数目(表达式的值)的字节单元作为存储区,供程序运行使用(用于程序存储器)。
f) 位定义命令:BIT
格式:字符名称 BIT 位地址
功能:将位地址赋给字符名称。位地址为绝对地址或符号地址。
4.2 汇编语言程序设计
- 分支程序设计:一般情况下,程序按顺序方式执行,但根据实际需要也可改变程序的执行顺序,称为分支程序。
a) 单分支结构
b) 双分支结构
c) 多分支结构 - 循环程序设计
a) 先执行后判断结构
b) 先判断后执行结构 - 子程序设计:在执行过程中需要由其它程序来调用,执行完毕又需要把执行流程返回到调用该子程序的程序中。
- 布尔处理程序:MCS-5l微处理器的一个最大特点就是它有很强的布尔处理能力,即对布尔变量(位变量)的处理能力,所以它最擅长开关量控制。
4.3 Keil C51的应用
- C-51的特点:
a) C语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是Keil C51。
b) C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。
c) C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。 - C-51的优点:
a) 对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;
b) 寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;
c) 程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;
d) 具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;
e) 提供的库包含许多标准子程序,具有较强的数据处理能力;
f) 由于具有方便的模块化编程技术,使已编好程序可容易地移植; - C-51的程序结构:与一般C语言的结构相同,以main()函数为程序入口,程序体中包含若干语句还可以包含若干函数
类型 函数名(参数表)
{
数据说明部分
语句执行部分
}
-
C-51的数据类型
-
C-51数据的存储类型
-
C-51的包含的头文件
通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有:reg51.h (定义特殊功能寄存器和位寄存器);math.h (定义常用数学运算); -
C-51的运算符
+ - * / (加 减 乘 除)
> > = < < = (大于 大于等于 小于 小于等于)
== != (测试等于 测试不等于)
&& || ! (逻辑与 逻辑或 逻辑非 )
>> << (位右移 位左移)
& | (按位与 按位或)
^ ~ (按位异或 按位取反)
- C-51的基本语句
if 选择语言
switch/case 多分支选择语言
while 循环语言
do-while 循环语言
for 循环语言
- 中断服务程序
函数名()interrupt n
{
}
- I/O口定义
#include <absacc.h>
#define prot xbyte[0x1000]
或用指针定义
第5章 定时器/计数
5.1 定时/计数器的功能
MCS-51单片机内共有两个可编程的定时/计数器T0和T1。它们都是十六位加法计数器结构,分别由TH0、TL0和TH1、TL1四个8位计数器组成,每个定时/计数器都具有定时和计数两种功能。
- 计数功能
对外来脉冲进行计数。计数脉冲的输入端来自单片机的两个信号引脚T0(P3.4)和T1(P3.5),外部输入的脉冲在负跳变时有效,计数脉冲的频率最高为振荡频率的1/24。 - 定时功能
定时功能也是通过计数器的计数来实现的,不过这时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲。因此,计数频率为振荡频率的1/12。这样,不但可以根据计数器的预置值计算出定时时间,也可以反过来按定时时间的要求,计算出计数器的预置值。
5.2 与定时/计数器有关的寄存器
-
定时器控制寄存器(TCON)
该寄存器既参与中断控制又参与定时控制。其主要功能是:定时器在溢出时,设定标志位(TFx),并控制定时器的运行或停止等(TRx)。 -
定时器方式寄存器(TMOD)
用于控制两个定时/计数器的工作方式,高4位定义T1,低4位定义T0,字节地址为89H。
5.3 定时/计数器工作方式
-
方式0
方式0是13位结构的工作方式,其计数器由TH1的全8位和TL1的低5位构成。TL1的高3位弃之不用。
计数方式:计数值的范围为:1~8192(213)
定时方式:定时时间T的计算公式为:
T=(213-计数初值x)晶振周期12或T=(213-计数初值x)*机器周期
启动的条件是:(TRx=1)AND(GATE=0 OR INTx=1) -
方式1
其逻辑电路和工作情况与方式0完全相同。所不同的只是组成计数器的位数为16位。 计数值的范围为:1~65536(216)
定时时间的计算公式与方式0类似。即:
T=(216-计数初值x)晶振周期12或T=(216-计数初值x)*机器周期 -
方式2
方式2具有自动重新加载功能,即自动加载计数初值。该方式把16位计数器分为两部分,既以TL1作计数器,以TH1作预置计数器,初始化时把计数初值分别装入TL1和TH1中。当计数溢出后,由预置寄存器TH1,以硬件方法自动给计数器TL1重新加载。最大计数值只能到255。这种工作方式非常适用于循环定时或循环计数应用。 -
方式3
在工作方式3下,T0被拆成两个独立的8位计数器。其中TL0既可以作计数器使用,又可以作定时器使用,其功能和操作方式与方式0或方式1完全相同。而TH0只能作8位定时器使用,并占用了T1的中断资源TR1和TF1。
第6章 串行通信接口
6.1 串行数据通信基本原理
计算机的数据传送有并行和串行两种方式。
并行传送的特点是:各数据位同时传送,传送速度快、效率高。但需要的数据线多,因此传送成本高。并行数据传送的距离通常小于30米。
串行传送的特点是:数据传送按位顺序进行,最少只需一根传输线即可完成,成本低,但速度慢。串行数据传送的距离可以从几米到几千公里。
- 异步串行通信的字符格式:异步串行数据通信以字符为单位,即一次传送一个字符
- 串行通信的数据通路形式
a) 单工形式:A发,B接。
b) 半双工形式:A发或接,B接或发。
c) 全双工形式:A发、接,B接、发 - 串行通信的传送速率:传送速率用于说明数据传送的快慢
- 串行通信接口电路
a) 数据传送:数据传送主要解决传送中的标准、格式及工作方式等问题
b) 数据转换:数据转换是指数据的串并转换
6.2 MCS-51单片机串行口
MCS-51单片机片内有一个全双工串行口,既可以实现异步串行通信,还可以作为同步移位寄存器来使用。
定时器T1作为串行通信波特率发生器。
- 串行口寄存器结构
- 与串行通信有关的寄存器
- 串行口的工作方式
a) 方式0
方式0为同步移位寄存器方式。RXD端作为数据移位的入口或出口,TXD端提供移位时钟脉冲,移位数据的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后,波特率是固定的,为fOSC/12。即一个机器周期移位一次。
b) 方式1
数据发送是由一条写发送寄存器(MOV SBUF,A)指令开始的。此后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD端输出线维持高电平,并将TI置位,通知CPU可以发送下一个字符。
c) 方式2和方式3
1位起始位(0)、8位数据位(D0~D7)、1位可编程位(D8)和1位停止位(1)。D8位既可作为奇偶校验位,也可作为控制位使用,其功能由用户来确定。发送时,可编程位D8(TB8)可设置为0(CLR TB8)或1(SETB TB8)。接收时,TB8送入SCON寄存器中RB8位。
第7章 中断系统
7.1 中断概述
中断技术是在微机中广泛使用的一种资源共享技术。
- 中断:中断是指当CPU在正常执行程序时,由于外部或内部事件强迫CPU停止当前执行的程序,转去为事件服务(中断服务),服务完毕,又能自动返回到被中断的程序中继续执行。
- 中断功能:
a) 实现CPU与外设的速度匹配和并行工作;
b) 实现实时控制;
c) 实现故障检测和自动处理。 - 中断控制
a) 设置中断源(引起中断的事件),确定它们提出中断请求的方式;
b) 确定中断优先级和中断的嵌套方式;
c) 中断现场的保护与恢复。
图7-1 中断嵌套示意图
4. 中断处理过程
a) 中断源提出申请,并建立相应的中断标志(由硬件置位标志位);
b) CPU结束当前指令,响应该中断申请,同时把主程序断点处地址(程序计数器PC当前值)压入堆栈,即保护断点;
c) 保护现场。把断点处的有关信息(如工作寄存器、累加器、标志位的内容),压入堆栈;
d) 执行中断服务程序;
e) 恢复现场。把保存的现场内容从堆栈弹出,以恢复寄存器和存储单元的原有内容;
f) 返回主程序(或调用程序),执行中断返回指令,把断点处地址从栈顶弹出,从断点处继续执行主程序(或调用程序)。
7.2 MCS-51中断系统
- 中断源
a) 5个中断源:2个外部中断INT0、INT1,3个内部中断T0、T1、串行口。
b) 2个优先级:高级中断和低级中断,由用户定义。 - 中断控制寄存器
a) TCON:定时控制寄存器
b) SCON:串行口控制寄存器
c) IE:中断允许寄存器
d) IP:中断优先级寄存器 - 中断请求的撤除
中断响应后,如果不及时清除中断请求标志,会引起中断的混乱。
a) 定时中断由硬件自动撤除
定时中断响应后,硬件自动把标志位(TFx)清零。
b) 外部中断的自动与强制撤除
若外部中断以脉冲方式触发,则由硬件自动地把标志位(IEx)清零。若以电平方式触发,则需由外部电路和软件配合撤除。
c) 串行中断软件撤除
串行中断的标志位是TI和RI,但对这两个中断标志位不进行自动清零。因为在中断响应后,还需测试这两个标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行中断请求的撤除应使用软件方法。
7.3 中断管理
图7-3 中断管理
7.4 扩充中断源
定时器T0设置为方式2(自动重装常数)外部计数方式。TH0、TL0的初值均为0FFH,并允许T0中断,且CPU开放中断。
第8章 单片机系统扩展设计
8.1 系统接口扩展技术
- 数据总线:片外器件的数据总线宽度不超过8位时,直接与单片机相连即可;大于8位时,需要分时来存取。
- 地址总线:先对片外器件分配地址,然后进行相应的硬件连接。
- 控制总线:根据片外器件工作的定时逻辑,利用单片机控制信号以及与I/O口线的组合,完成对器件的控制和读写操作。
8.2 存储器扩展技术
通常把半导体存储器分为易失性存储器和非易失性存储器
- 存储器扩展的基本方法
a) 按照总线连接方式,MCS-51单片机扩展存储器可分为并行扩展和串行扩展。
b) 基本方法是:按照单片机和不同存储器芯片的时序,来完成硬件连接和软件编程。
c) 存储器的基本操作控制包括片选控制和读写操作控制。 - 存储器片选控制
串行接口扩展时,通常采用I/O口来选择相应的存储器,地址信息包含在串行协议中。
采用并行接口时,片选的方法有:
a) 线选法:如果芯片数较少,只需要用单片机的高位地址线分别接到各个芯片的片选端即可。这样不需另加电路,但地址空间可能是不连续的。
b) 译码选通法:在扩展芯片数目较多或要求连续的地址空间时,采用译码器来译码产生片选信号。
单片机并行扩展时,高位地址线可能有空闲(P2口高位),但已不适宜简单地作I/O线使用。
8.3 输入输出(I/O)和中断扩展技术
- 并行扩展I/O接口
a) 对输入/输出口功能的扩展,可以利用简单的TTL电路或MOS电路,也可以使用结构较为复杂的可编程接口芯片。
b) TTL电路有54系列军品级器件、民品74LS系列;MOS中常用CMOS电路,如74HC系列。
c) 典型的可编程接口器件是Intel公司及其兼容的接口芯片:可编程并行接口(8155、8255)、可编程通用同步/异步通信接口(8251)、可编程定时器/计数器(8253)、可编程中断控制器(8259)及可编程键盘显示接口(8279)等。 - I/O口与片外RAM统一编址
a) 把扩展的I/O口挂接在片外数据存储器空间,因而,I/O口的输入、输出指令也就是片外数据存储器的读/写指令。
b) 其特点为:数据传输利用的是P0口,因此扩展接口均是8位口,传输数据简便 - 串行扩展I/O接口
串行接口有多种总线和丰富的接口芯片,以PHILIPS公司I2C总线8位远程I/O扩展器PCF8574为例,说明I2C总线扩展I/O接口的方法。