课程名称: 微控制器原理及应用
课程类别: 专业核心课 / 专业基础课
学时/学分:40学时 / 2.5学分(理论28+实验12)
课程概述:
本课程是电子信息类、电气类、自动化及计算机等专业的核心技术课程。微控制器(单片机)作为智能控制系统的核心,已广泛渗透到工业控制、智能仪器仪表、物联网终端、消费电子及汽车电子等各个领域。本课程以典型的MCS-51内核为切入点,系统讲授微控制器的硬件结构、工作原理、接口技术及应用系统设计方法。课程遵循“理论够用、实践为主、重在应用”的原则,旨在帮助学生建立计算机系统的整体概念,掌握嵌入式系统开发的基本流程 。
第1章 概述
【本章学习目标】
了解微控制器(单片机)的基本概念、发展历程及发展趋势。
掌握单片机的基本结构组成及其特点。
熟悉单片机的典型应用领域,建立“嵌入式系统”的整体概念。
理解单片机在智能电子产品中的核心控制作用。
1.1 单片机基本结构
单片机,又称微控制器,是指在一片集成电路芯片上集成了中央处理器、存储器、输入/输出接口电路以及定时/计数器等部件,从而形成一个完整的微型计算机系统。
第3章 指令系统
【本章学习目标】
1. 理解MCS-51指令系统的格式与分类。
2. 掌握七种寻址方式的概念及适用场景。
3. 熟练掌握五大类指令(数据传送、算术运算、逻辑运算、控制转移、位操作)的功能与应用。
4. 能够阅读和理解汇编语言程序。
5. 初步掌握常用指令的编程技巧。

3.1 指令格式
3.1.1 指令的表示方法
MCS-51系列单片机指令系统共有111条指令。每条指令通常由两部分组成:
• 操作码: 指示计算机执行什么操作(如加法、传送等)。
• 操作数: 指示参与操作的数据或数据所在的地址。
指令格式:[标号:] 操作码 [目的操作数] [,源操作数] [;注释]
例如:
assembly

复制


下载

START: MOV A, #40H ; 将立即数40H送入累加器A


其中:
• START是标号
• MOV是操作码
• A是目的操作数
• #40H是源操作数
• 分号后的内容是注释
3.1.2 指令的分类
按指令字节数分类:
• 单字节指令: 49条,操作码和操作数在一个字节内
• 双字节指令: 45条,一个字节操作码,一个字节操作数
• 三字节指令: 17条,一个字节操作码,两个字节操作数
按指令执行时间分类:
• 单周期指令: 64条
• 双周期指令: 45条
• 四周期指令: 2条(乘法和除法)

3.2 寻址方式
寻址方式是指寻找操作数地址的方式。MCS-51共有七种寻址方式。
3.2.1 立即寻址
操作数直接写在指令中,前面加#号表示立即数。
assembly

复制


下载

MOV A, #30H ; 将立即数30H送入A(A=30H)
MOV DPTR, #1234H ; 将16位立即数1234H送入DPTR


特点: 速度快,但只能用于源操作数,不能用于目的操作数。
3.2.2 直接寻址
指令中直接给出操作数的地址。
assembly

复制


下载

MOV A, 30H ; 将内部RAM 30H单元的内容送入A
MOV 40H, A ; 将A的内容送入内部RAM 40H单元


适用对象: 内部RAM的低128字节和特殊功能寄存器。
3.2.3 寄存器寻址
操作数存放在寄存器中,指令中给出寄存器名。
assembly

复制


下载

MOV A, R0 ; 将R0的内容送入A
ADD A, R1 ; A + R1 → A


适用寄存器: A、B、DPTR、R0~R7。
3.2.4 寄存器间接寻址
操作数的地址存放在寄存器中,指令中通过该寄存器间接找到操作数,用@表示。
assembly

复制


下载

MOV A, @R0 ; 将R0指向的RAM单元内容送入A
MOVX A, @DPTR ; 将DPTR指向的外部RAM单元内容送入A


适用寄存器: R0、R1(用于内部RAM)、DPTR(用于外部RAM)。
3.2.5 变址寻址
以DPTR或PC作为基址寄存器,累加器A作为变址寄存器,两者之和为操作数地址。
assembly

复制


下载

MOVC A, @A+DPTR ; 从程序存储器读取数据,地址=DPTR+A
MOVC A, @A+PC ; 从程序存储器读取数据,地址=PC+A


应用场景: 查表操作。
3.2.6 相对寻址
主要用于转移指令,以当前PC值为基址,加上指令中给出的相对偏移量形成新的PC值。
assembly

复制


下载

SJMP LOOP ; 相对跳转到LOOP标号处


3.2.7 位寻址
对内部RAM和SFR中的可寻址位进行操作。
assembly

复制


下载

SETB 20H.0 ; 将位地址20H.0置1
CLR P1.0 ; 将P1.0清零


这是MCS-51的特色功能,非常适合逻辑控制。

3.3 数据传送类指令
数据传送指令是最常用的一类指令,共28条。
3.3.1 内部RAM传送指令(MOV)
基本格式:MOV <目的操作数>, <源操作数>


指令格式
操作说明
字节数
周期数
MOV A, Rn
寄存器内容送A
1
1
MOV A, direct
直接地址内容送A
2
1
MOV A, @Ri
间接RAM内容送A
1
1
MOV A, #data
立即数送A
2
1
MOV Rn, A
A送寄存器
1
1
MOV Rn, direct
直接地址内容送寄存器
2
2
MOV Rn, #data
立即数送寄存器
2
1
MOV direct, A
A送直接地址
2
1
MOV direct, Rn
寄存器送直接地址
2
2
MOV direct, direct
直接地址送直接地址
3
2
MOV direct, @Ri
间接RAM送直接地址
2
2
MOV direct, #data
立即数送直接地址
3
2
MOV @Ri, A
A送间接RAM
1
1
MOV @Ri, direct
直接地址内容送间接RAM
2
2
MOV @Ri, #data
立即数送间接RAM
2
1
MOV DPTR, #data16
16位立即数送DPTR
3
2
3.3.2 外部RAM传送指令(MOVX)
assembly

复制


下载

MOVX A, @DPTR ; 从外部RAM读数据到A
MOVX @DPTR, A ; 将A的内容写入外部RAM
MOVX A, @R0 ; 从外部RAM读数据到A(8位地址)
MOVX @R1, A ; 将A的内容写入外部RAM(8位地址)


3.3.3 程序存储器传送指令(MOVC)
assembly

复制


下载

MOVC A, @A+DPTR ; 查表指令,常用于读取常数表
MOVC A, @A+PC ; 查表指令,PC基址方式


3.3.4 堆栈操作指令
assembly

复制


下载

PUSH direct ; 将直接地址内容压入堆栈(SP先+1,再存入)
POP direct ; 从堆栈弹出到直接地址(先读出,SP再-1)


3.3.5 数据交换指令
assembly

复制


下载

XCH A, Rn ; A与寄存器交换
XCH A, direct ; A与直接地址交换
XCH A, @Ri ; A与间接RAM交换
XCHD A, @Ri ; A的低4位与间接RAM的低4位交换
SWAP A ; A的高4位与低4位交换



3.4 算术运算类指令
3.4.1 加法指令
assembly

复制


下载

ADD A, Rn ; A + Rn → A
ADD A, direct ; A + (direct) → A
ADD A, @Ri ; A + @Ri → A
ADD A, #data ; A + data → A
ADDC A, Rn ; A + Rn + CY → A(带进位加法)
ADDC A, direct
ADDC A, @Ri
ADDC A, #data


影响标志位: CY、OV、AC。
3.4.2 减法指令
assembly

复制


下载

SUBB A, Rn ; A - Rn - CY → A
SUBB A, direct ; A - (direct) - CY → A
SUBB A, @Ri ; A - @Ri - CY → A
SUBB A, #data ; A - data - CY → A


注意: MCS-51没有不带借位的减法指令,如果需要不带借位减法,需先清CY。
3.4.3 加1/减1指令
assembly

复制


下载

INC A ; A + 1 → A
INC Rn ; Rn + 1 → Rn
INC direct ; (direct) + 1 → direct
INC @Ri ; @Ri + 1 → @Ri
INC DPTR ; DPTR + 1 → DPTR
DEC A ; A - 1 → A
DEC Rn ; Rn - 1 → Rn
DEC direct ; (direct) - 1 → direct
DEC @Ri ; @Ri - 1 → @Ri


3.4.4 乘除法指令
assembly

复制


下载

MUL AB ; A × B → BA(A存低8位,B存高8位)
DIV AB ; A ÷ B → A(商),余数→B


影响标志位: CY总是清零,OV在除法中表示除数为0,在乘法中表示积大于255。

3.5 逻辑运算类指令
3.5.1 逻辑与指令
assembly

复制


下载

ANL A, Rn ; A ∧ Rn → A
ANL A, direct ; A ∧ (direct) → A
ANL A, @Ri ; A ∧ @Ri → A
ANL A, #data ; A ∧ data → A
ANL direct, A ; (direct) ∧ A → direct
ANL direct, #data ; (direct) ∧ data → direct


3.5.2 逻辑或指令
assembly

复制


下载

ORL A, Rn ; A ∨ Rn → A
ORL A, direct ; A ∨ (direct) → A
ORL A, @Ri ; A ∨ @Ri → A
ORL A, #data ; A ∨ data → A
ORL direct, A ; (direct) ∨ A → direct
ORL direct, #data ; (direct) ∨ data → direct


3.5.3 逻辑异或指令
assembly

复制


下载

XRL A, Rn ; A ⊕ Rn → A
XRL A, direct ; A ⊕ (direct) → A
XRL A, @Ri ; A ⊕ @Ri → A
XRL A, #data ; A ⊕ data → A
XRL direct, A ; (direct) ⊕ A → direct
XRL direct, #data ; (direct) ⊕ data → direct


3.5.4 循环移位指令
assembly

复制


下载

RL A ; A循环左移
RR A ; A循环右移
RLC A ; A带进位循环左移
RRC A ; A带进位循环右移


应用技巧: 循环移位常用于乘2、除2运算以及串行数据的收发。

3.6 控制转移类指令
3.6.1 无条件转移指令
assembly

复制


下载

LJMP addr16 ; 长转移,转移范围64KB
AJMP addr11 ; 绝对转移,2KB范围内
SJMP rel ; 相对转移,-128~+127字节
JMP @A+DPTR ; 间接转移,常用于多分支跳转


3.6.2 条件转移指令
assembly

复制


下载

JZ rel ; A=0则转移
JNZ rel ; A≠0则转移
JC rel ; CY=1则转移
JNC rel ; CY=0则转移
JB bit, rel ; 位bit=1则转移
JNB bit, rel ; 位bit=0则转移
JBC bit, rel ; 位bit=1则转移,并清零该位


3.6.3 比较转移指令
assembly

复制


下载

CJNE A, direct, rel ; A≠(direct)则转移
CJNE A, #data, rel ; A≠data则转移
CJNE Rn, #data, rel ; Rn≠data则转移
CJNE @Ri, #data, rel ; @Ri≠data则转移


3.6.4 循环转移指令
assembly

复制


下载

DJNZ Rn, rel ; Rn-1→Rn,若Rn≠0则转移
DJNZ direct, rel ; (direct)-1→direct,若结果≠0则转移


3.6.5 子程序调用与返回
assembly

复制


下载

LCALL addr16 ; 长调用子程序
ACALL addr11 ; 绝对调用子程序
RET ; 子程序返回
RETI ; 中断返回



3.7 位操作类指令
这是MCS-51的特色指令集,专门用于布尔处理。
3.7.1 位传送指令
assembly

复制


下载

MOV C, bit ; 可寻址位→CY
MOV bit, C ; CY→可寻址位


3.7.2 位修正指令
assembly

复制


下载

CLR C ; 清0 CY
CLR bit ; 清0 可寻址位
SETB C ; 置1 CY
SETB bit ; 置1 可寻址位
CPL C ; CY取反
CPL bit ; 可寻址位取反


3.7.3 位逻辑运算指令
assembly

复制


下载

1.1.1 单片机的基本组成
如图1-1所示,一个典型的单片机内部主要包含以下五个组成部分:
中央处理器: 单片机的“大脑”,负责执行程序指令、进行算术逻辑运算以及控制数据的传输。
存储器:
程序存储器: 用于存放用户编写的程序代码和常数。通常为只读存储器,断电后信息不丢失。
数据存储器: 用于存放程序运行过程中的中间数据、变量等。通常为随机存取存储器,读写速度快,但断电后数据丢失。
输入/输出端口: 单片机与外部世界进行信息交换的通道。通过I/O口,可以接收外部开关、传感器等输入信号,也可以驱动LED、继电器等输出设备。
定时器/计数器: 用于产生精确的时间延迟、对外部事件进行计数,是实现时序控制的核心部件。
总线系统: 包括数据总线、地址总线和控制总线,用于连接CPU、存储器和I/O口,实现数据的高速传输。
知识拓展: 随着技术的发展,现代单片机内部还集成了越来越多的功能模块,如模数转换器、数模转换器、脉宽调制模块、看门狗电路、串行通信接口等,真正实现了“单片即系统”。
1.1.2 单片机与通用微处理器的区别
很多初学者容易混淆单片机和通用微处理器。表1-1清晰地列出了二者的主要区别:
对比项 单片机 通用微处理器
集成度 芯片上集成了CPU、存储器、I/O口等全部部件 仅为单一的CPU芯片
存储器 内置ROM和RAM 需要外接ROM和RAM
I/O接口 内置可编程I/O口 需要外接专用接口芯片
应用领域 嵌入式控制、智能仪表、家电等 个人电脑、服务器、工作站等
功耗 通常较低 相对较高
成本 低 高
体积 小 大
1.2 单片机的发展
单片机的诞生和发展与微电子技术、计算机技术的发展紧密相连。自1971年Intel公司推出世界上第一款微处理器4004以来,单片机经历了从4位到32位、从简单到复杂的发展历程。
1.2.1 4位单片机
时间阶段: 20世纪70年代初至70年代中期。
代表产品: Intel 4004、TMS 1000等。
主要特点:
这是单片机的雏形阶段,主要面向计算器、电子玩具等简单应用。
处理能力有限,只能执行简单的算术运算。
采用PMOS工艺,速度慢、功耗大、集成度低。
历史意义: 虽然现在看来性能很弱,但4位单片机的出现开创了将计算机系统集成到单芯片上的先河。
1.2.2 8位单片机
时间阶段: 20世纪70年代中期至80年代末。
代表产品: Intel 8048、8051(MCS-51系列)、Motorola 6805、Zilog Z8等。
主要特点:
性能飞跃: 处理能力大幅提升,指令集更加丰富。
工艺进步: 采用NMOS和CMOS工艺,速度提高,功耗降低。
体系成熟: 形成了程序存储器和数据存储器分离的哈佛体系结构。
影响深远: Intel于1980年推出的MCS-51系列单片机,以其强大的功能、完善的体系结构和灵活的应用方式,成为8位单片机的经典代表,其架构影响至今。
1.2.3 16位单片机
时间阶段: 20世纪80年代末至90年代中期。
代表产品: Intel 8096/8098、MCS-96系列、Motorola 68HC12等。
主要特点:
运算能力增强: 字长从8位扩展到16位,运算精度和速度进一步提高。
集成更多外设: 片内集成了A/D转换器、PWM输出等更适合工业控制的功能模块。
应用升级: 开始应用于汽车电子、工业自动化、电机控制等复杂控制场合。
1.2.4 32位单片机
时间阶段: 20世纪90年代中期至今。
代表产品: ARM Cortex-M系列、Infineon TriCore、NXP LPC系列、STMicroelectronics STM32系列等。
主要特点:
高性能: 处理能力媲美低端微处理器,主频可达数百MHz。
低功耗: 采用先进的电源管理技术,广泛应用于便携式设备和物联网终端。
丰富生态: 拥有成熟的开发工具、丰富的软件库和活跃的社区支持。
百花齐放: 以ARM Cortex-M内核为核心的32位单片机成为市场主流,占据中高端应用市场。
1.2.5 单片机的发展方向
展望未来,单片机将朝着以下几个方向发展:
更高性能: 不断提升CPU主频和处理能力,引入多核架构,以满足图像处理、人工智能等复杂应用的需求。
更低功耗: 面向物联网和可穿戴设备,超低功耗设计是永恒的主题,包括更精细的电源管理、更低电压工作等。
更强集成度: 将更多的模拟外设、无线通信模块等集成到单芯片上,实现真正的“片上系统”。
更安全可靠: 随着汽车电子、工业控制对安全性要求的提高,内置硬件加密引擎、功能安全机制的单片机将越来越普及。
更易开发: 提供更友好的开发环境、更丰富的软件库,降低开发门槛,缩短产品上市周期。
1.3 单片机的特点
单片机之所以能够广泛应用于各行各业,得益于其独特的优点:
集成度高,体积小: 将计算机系统的主要部件集成在一块芯片上,大大缩小了系统的体积,便于嵌入到各种设备内部。
可靠性高,抗干扰能力强: 芯片设计时就考虑了工业环境的应用,内部集成了看门狗等抗干扰措施,且芯片引脚少,外部连线少,故障率低。
控制功能强: 指令系统丰富,尤其擅长位操作和逻辑控制,可以方便地实现各种复杂的控制算法。
功耗低: 采用CMOS工艺的单片机,在空闲模式和掉电模式下功耗极低,非常适合电池供电的便携式产品。
性价比高: 单片机的批量生产成本很低,几元钱到几十元钱就能买到功能相当强大的芯片,具有极高的性能价格比。
易于产品化: 开发周期短,系统扩展灵活,可以快速形成产品,抢占市场先机。
1.4 单片机的应用
单片机已经渗透到国民经济和日常生活的各个角落,以下是几个典型的应用领域:
1. 工业控制
应用场景: 工业机器人、数控机床、PLC(可编程逻辑控制器)、电机驱动器、过程控制仪表等。
作用: 实时采集传感器数据(温度、压力、流量),执行复杂的控制算法,驱动执行机构(电机、阀门),实现自动化生产。
2. 智能仪器仪表
应用场景: 智能电表、水表、燃气表、数字万用表、示波器、医疗监护仪等。
作用: 实现数据的自动采集、处理、存储和显示,具备通信功能,实现远程抄表和监控。
3. 消费电子与智能家居
应用场景: 洗衣机、空调、冰箱、微波炉、智能音箱、智能门锁、扫地机器人、电视遥控器等。
作用: 作为家电的“大脑”,接收用户指令,控制各项功能,实现智能化、网络化。
4. 汽车电子
应用场景: 发动机控制单元、ABS防抱死系统、安全气囊、车载娱乐系统、胎压监测、电动车窗等。
作用: 一辆现代汽车上可能装有几十甚至上百个单片机,分别负责不同的控制任务,共同保障车辆的安全、舒适和高效运行。
5. 物联网与通信
应用场景: 无线传感器网络节点、智能穿戴设备、RFID读写器、物联网网关等。
作用: 作为物联网终端的数据采集和控制核心,连接传感器与网络,实现万物互联。
6. 国防与航空航天
应用场景: 导弹制导系统、无人机飞行控制器、卫星姿态控制系统、雷达信号处理等。
作用: 在极端环境下可靠运行,完成关键的控制和数据处理任务。
【本章小结】
单片机是将CPU、存储器、I/O接口等集成在一块芯片上的微型计算机系统。
单片机的发展经历了4位、8位、16位到32位的演进,未来将向高性能、低功耗、高集成度方向发展。
单片机具有集成度高、可靠性好、控制功能强、功耗低、性价比高等特点。
单片机广泛应用于工业控制、智能仪器、消费电子、汽车电子、物联网等众多领域。
【思考题解析】
什么是单片机?它与我们日常使用的电脑(PC)中的CPU有何本质区别?
参考答案: 单片机是一个完整的微型计算机系统,它在一个芯片上集成了CPU、存储器和I/O接口。而PC中的CPU只是一个中央处理器,它需要外接主板上的内存条、硬盘、接口卡等才能构成一台完整的计算机。单片机更强调“嵌入”和“专用”,而PC的CPU强调“通用”和“高性能”。
查阅资料,列举三个你身边可能用到单片机的设备,并简要说明其可能实现的功能。
参考答案:
智能手机: 触摸屏控制、电源管理、传感器数据处理(加速度计、陀螺仪)。
空调遥控器: 扫描按键、红外编码发射、温度显示。
智能手环: 计步算法、心率监测、蓝牙通信、屏幕显示。
8位单片机至今仍在广泛使用,你认为原因是什么?
参考答案: 对于大量简单的控制任务(如电风扇、玩具、简单的开关控制),8位单片机性能足够、功耗低、价格极其便宜、开发工具成熟、开发人员熟悉,具有极高的性价比。并不是所有场合都需要高性能的32位单片机
熟悉STC89C51/MCS-51单片机的内部总体结构及核心部件功能。
掌握40个引脚的功能分类,特别是第二功能的使用。
重点掌握四个并行I/O口(P0、P1、P2、P3)的结构特点与工作原理。
理解程序存储器和数据存储器的地址分配与访问方法。
掌握时钟电路、复位电路的设计方法及低功耗模式的配置。
STC89C51系列单片机的内部结构如图2-1所示,它采用了经典的哈佛体系结构,即程序存储器空间和数据存储器空间是分离的。
核心组成部分包括:
CPU: 由运算器和控制器组成,是单片机的核心。
数据存储器: 内部256字节的RAM,用于存放临时变量。
程序存储器: 内部4KB/8KB/16KB的Flash ROM,用于存放用户程序。
并行I/O口: 4个8位并行口(P0~P3),用于数据的输入和输出。
串行口: 全双工UART,用于串行通信。
定时器/计数器: 2个16位定时器/计数器(T0和T1)。
中断系统: 5个中断源(外部中断0/1、定时器0/1、串行口),2级优先级。
特殊功能寄存器: 用于控制片内各功能部件的运行。
CPU是单片机的“大脑”,主要包括:
运算器: 以算术逻辑单元为核心,可执行加、减、乘、除、与、或、异或等操作。特别值得一提的是,MCS-51系列具有强大的位处理功能,专门有位处理器,可以方便地对某一位进行操作。
控制器: 负责从程序存储器中读取指令,进行指令译码,并产生一系列控制信号,控制各部件协调工作。主要包括程序计数器、指令寄存器、指令译码器、定时与控制电路等。
知识加油站: 程序计数器是CPU中一个至关重要的寄存器,它始终存放着下一条要执行指令的地址。CPU每取出一个指令字节,PC自动加1;当遇到转移指令、子程序调用或中断时,PC会被强制修改为目标地址。
STC89C51单片机采用标准的40引脚DIP封装。图2-2展示了引脚排列图,我们将引脚分为三类:电源引脚、时钟引脚、I/O引脚。
Vcc(40脚): 主电源,接+5V。
Vss(20脚): 接地。
XTAL1(19脚): 反向振荡放大器的输入端,即内部时钟电路的输入端。
XTAL2(18脚): 反向振荡放大器的输出端,即内部时钟电路的输出端。
RST/Vpd(9脚): 复位信号输入端,高电平有效。当此引脚保持两个机器周期以上的高电平时,单片机复位。此外,该引脚还有第二功能,可作为备用电源输入端。
ALE/PROG(30脚): 地址锁存允许输出端。访问外部存储器时,ALE输出脉冲用于锁存低8位地址。在不访问外部存储器时,ALE端以固定的频率(1/6振荡频率)输出脉冲,可作为外部时钟或定时脉冲使用。
PSEN(29脚): 外部程序存储器读选通信号,低电平有效。读取外部ROM时,PSEN有效。
EA/Vpp(31脚): 外部访问允许控制端。当EA保持高电平时,CPU访问内部程序存储器;当EA保持低电平时,CPU只访问外部程序存储器。
P0.0 ~ P0.7(39~32脚): P0口,8位双向I/O口。
P1.0 ~ P1.7(1~8脚): P1口,8位准双向I/O口。
P2.0 ~ P2.7(21~28脚): P2口,8位准双向I/O口。
P3.0 ~ P3.7(10~17脚): P3口,8位准双向I/O口,且每个引脚都有第二功能。
实用技巧: 初学时可以背诵一句口诀:“P3口个个身怀绝技”。这是因为P3口的每一位都有特殊的第二功能,例如P3.0是RXD(串行接收)、P3.1是TXD(串行发送)、P3.2和P3.3是外部中断输入等。
并行I/O口是单片机与外界交换信息的通道。理解这四个口的结构,是进行硬件设计的基础。
P0口是一个双向的I/O口,也是四个口中最特殊的一个。
P0口的每一位都由一个输出锁存器、两个三态缓冲器、一对场效应管和一个多路开关组成。
作为通用I/O口使用时:
此时多路开关打向锁存器的反相输出端,输出级的上拉场效应管截止。
当P0口作为输出时,由于漏极开路,内部无上拉电阻,因此必须外接上拉电阻才能输出高电平。
当P0口作为输入时,分为“读锁存器”和“读引脚”两种方式。读引脚前,必须先向锁存器写1,以关断输出级的场效应管,否则可能读错数据。
作为地址/数据总线使用时:
当访问外部存储器时,多路开关打向地址/数据线,此时P0口分时输出低8位地址和输入/输出数据。此时内部的上拉场效应管工作,无需外接上拉电阻。
P0口做普通输出:必须外接上拉电阻(典型值4.7kΩ~10kΩ)。
P0口做普通输入:必须先写1。
P1口是一个准双向I/O口,通常只用作通用I/O口。
P1口的内部集成了上拉电阻,因此不需要外接上拉电阻即可输出高电平。
作为输出: 可直接驱动负载,高电平时由上拉电阻提供电流。
作为输入: 同样需要先向锁存器写1,以关闭输出驱动场效应管,然后读取引脚状态。
P1口最简单,初学者通常从控制P1口的LED灯开始学习。
P2口也是一个准双向I/O口,但它具有双重功能。
P2口同样内部有上拉电阻。
作为通用I/O口: 与P1口类似。
作为高8位地址总线: 当访问外部存储器时,P2口输出高8位地址(A8~A15)。
P3口是准双向I/O口,但每个引脚都有第二功能。
| 引脚 | 第二功能 | 说明 |
|---|---|---|
| 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 | 外部数据存储器读选通 |
当作为通用I/O口使用时,第二功能输出端保持高电平,P3口与P1口类似。
当启用第二功能时,内部电路会自动配置引脚的输入/输出方向。
口诀记忆:
P0口,三态口,地址数据分时走,做I/O要上拉。
P1口,专用口,带上拉,最简单。
P2口,地址口,高位地址它来送。
P3口,双功能,个个都是特种兵。
MCS-51系列单片机采用哈佛结构,即程序存储器和数据存储器在物理上和逻辑上都是分开的,各有自己的寻址方式和地址空间。
程序存储器用于存放用户程序、表格和常数。
寻址空间: 64KB,地址范围为0000H ~ FFFFH。
内部与外部:
当EA=1(高电平)时,CPU从内部程序存储器开始执行,当PC值超出内部ROM范围时,自动转向外部程序存储器。
当EA=0(低电平)时,CPU只从外部程序存储器取指令。
特殊入口地址:
0000H: 系统复位后,PC指向0000H,程序从这里开始执行。
0003H: 外部中断0入口。
000BH: 定时器0溢出中断入口。
0013H: 外部中断1入口。
001BH: 定时器1溢出中断入口。
0023H: 串行口中断入口。
通常在0000H地址存放一条跳转指令,跳转到主程序入口,避免与中断向量区冲突。
数据存储器用于存放中间运算结果、数据暂存等。
内部RAM共256字节,分为三个区域(图2-6):
工作寄存器区(00H ~ 1FH): 共32字节,分为4组(0~3组),每组8个寄存器(R0~R7)。通过PSW中的RS1、RS0位可选择当前工作寄存器组。
位寻址区(20H ~ 2FH): 共16字节,128位。这片区域的每一位都有一个位地址(00H ~ 7FH),可以单独进行位操作。这是MCS-51的特色,非常适合逻辑控制。
通用RAM区(30H ~ 7FH): 共80字节,用于存放用户数据(堆栈、变量等)。
高128字节(80H ~ FFH): 对于52子系列,这片区域也是RAM;对于51子系列,这片区域是特殊功能寄存器区。
SFR是用于控制片内各功能部件的寄存器,地址范围为80H ~ FFH。常用的SFR包括:
ACC: 累加器
B: B寄存器
PSW: 程序状态字
SP: 堆栈指针
DPTR: 数据指针(16位)
P0 ~ P3: 端口锁存器
TCON、TMOD: 定时器控制寄存器
SCON、SBUF: 串行口控制寄存器
IE、IP: 中断控制寄存器
寻址空间: 最大可扩展64KB,地址范围0000H ~ FFFFH。
访问指令: 使用MOVX指令访问。
单片机是一个复杂的同步时序电路,需要时钟信号驱动才能工作。
在XTAL1和XTAL2引脚之间连接一个晶振和两个电容,即可构成自激振荡器(图2-7)。
晶振频率: 常见为6MHz、12MHz、11.0592MHz(用于波特率发生)。
电容C1、C2: 典型值20pF ~ 30pF,用于频率微调和稳定。
如果系统中已有现成的时钟信号,可以从XTAL1引脚输入,XTAL2悬空(对于HMOS工艺)或反过来(对于CHMOS工艺)。
单片机执行一条指令所需的时间称为指令周期。MCS-51的一个指令周期由1~4个机器周期组成,而一个机器周期又包含6个状态周期(每个状态周期2个时钟周期)。
时钟周期: 晶振频率的倒数,是时序的最小单位。
状态周期: 两个时钟周期称为一个状态周期,用S表示。
机器周期: 由6个状态周期(12个时钟周期)组成。若晶振12MHz,则一个机器周期为1μs。
指令周期: 执行一条指令所需的时间。
举例: 单周期指令(如MOV A, #data)需要1μs(12MHz晶振),双周期指令(如NOP)需要2μs,四周期指令(如乘除法)需要4μs。
复位是单片机的初始化操作。复位后,PC指向0000H,大部分SFR被赋予初值,单片机从0000H开始重新执行程序。
在RST引脚上保持两个机器周期以上的高电平,即可实现复位。
上电自动复位(图2-8):
利用电容两端电压不能突变的原理,在通电瞬间,RST引脚获得高电平复位信号。随着电容充电,RST逐渐降为低电平。
参数:电容10μF,电阻10kΩ。
手动复位(图2-9):
分为按键电平复位和按键脉冲复位。最常用的是在复位电容上并联一个按键,按下按键强制RST为高电平。
复位后,主要SFR的状态如下:
PC = 0000H
P0 ~ P3 = FFH(各I/O口为高电平)
SP = 07H(堆栈指针指向07H)
SBUF 不定,IP、IE 等中断寄存器清零
TMOD、TCON 清零
STC89C51系列单片机提供两种低功耗模式:空闲模式和掉电模式,通过设置PCON寄存器(电源控制寄存器)来进入。
进入方式: 置位PCON.0(IDL位)。
工作状态: CPU停止工作,但RAM、定时器/计数器、串行口和中断系统继续工作。
唤醒方式: 任何中断请求或硬件复位都可以唤醒CPU。
特点: 功耗降低到正常工作时的15%~40%。
进入方式: 置位PCON.1(PD位)。
工作状态: 振荡器停振,CPU、所有外设全部停止工作,只有RAM的内容被保存。
唤醒方式: 只能通过硬件复位唤醒。
特点: 功耗极低,RAM内容保存,I/O口状态锁定。
MCS-51单片机内部由CPU、存储器、I/O口、定时器、中断系统等构成,采用哈佛体系结构。
40个引脚中,需要重点掌握P3口的第二功能以及EA、ALE、PSEN、RST等控制引脚的作用。
四个I/O口中,P0口是双向口,做I/O需外接上拉电阻;P1、P2、P3是准双向口,内部有上拉电阻。
内部RAM分为工作寄存器区、位寻址区和通用RAM区;SFR用于控制片内外设。
时钟电路决定单片机的工作节拍;复位电路是系统启动的起点,有上电复位和手动复位两种形式。
低功耗模式包括空闲模式和掉电模式,适合电池供电的便携设备。
为什么P0口作为通用I/O输出时必须外接上拉电阻,而P1口不需要?
假设晶振频率为12MHz,请计算一个机器周期的时间。若执行一条双周期指令,需要多少微秒?
MCS-51单片机内部RAM的位寻址区有什么实际应用价值?试举例说明。
当系统需要扩展外部32KB的RAM时,P0口和P2口分别承担什么功能?
复位后,SP的初值是07H,如果程序中需要使用较多的嵌套调用,为什么通常要在初始化时重新设置SP的值?
填空题:
MCS-51单片机PO口作为输出口使用时,必须外接________。
当单片机复位后,程序计数器PC的内容为________H。
访问外部数据存储器时,使用的指令助记符是________。
P3口的第二功能中,TXD对应的引脚是________。
判断题:
MCS-51单片机的所有I/O口都可以作为通用I/O口使用。( )
在空闲模式下,CPU停止工作,但定时器仍在计数。( )
只要RST引脚出现高电平,单片机立即复位。( )
简答题:
简述MCS-51单片机如何区分内部程序存储器和外部程序存储器?
画出一个典型的手动复位电路原理图,并说明其工作原理。
毕业院校:哈尔滨理工大学
专业:电机与电器
研究方向:机电创新设计
教改科研:主持省级教学研究项目2个,参与省级教学改革项目1项。
公开发表论文十多篇,其中EI国际会议(EI收录)1篇,获得实用新型专利18项,主编教材2部。多年来指导学生参加各类比赛并取得优异成绩,如2022中国智能机器人格斗及竞技大赛全国二等奖;2016年参加全国应用型人才综合技能大赛获得一项全国二等奖等;2015年全国应用型人才综合技能大赛获得一项全国一等奖,2014年第九届全国信息技术应用水平大赛全国一等奖