内容正文:
湖南省(对口招生)电工电子类《电工技术模块》知识点讲解
单片机编程与中断
【考纲要求】
1.识记 MCS-51 单片机指令系统的基本格式、7 种寻址方式及常用指令功能,掌握核心指令的执行过程与结果分析。
2.理解 MCS-51 单片机中断系统的组成、5 个中断源的特性及中断优先级控制,掌握中断允许与触发方式的设置方法。
3.掌握定时器 / 计数器的 4 种工作方式,能进行定时 / 计数初值计算及初始化程序编写。
4.能编写简单的中断服务程序和定时器应用程序,具备基础的程序调试与故障分析能力。【知识网络】
【知识和技能要点】
考点 1 MCS-51 指令系统与寻址方式(识记 + 应用)
1. 指令基本格式
MCS-51 单片机指令由操作码和操作数两部分组成,标准格式为:
[标号:] 操作码 [操作数1] [,操作数2] [,操作数3] [;注释]
2. 操作码:规定指令的功能(如 MOV 表示数据传送)
· 操作数:指令的操作对象,可无操作数或最多 3 个操作数
2. 7 种寻址方式(高频考点)
寻址方式
操作数位置
符号标识
典型指令
易错提醒
立即寻址
指令中直接给出
#
MOV A, #30H
立即数只能作源操作数,不能作目的操作数
直接寻址
内部 RAM 低 128B 或 SFR
直接地址
MOV A, 30H
注意与立即寻址的区别(无 #号)
寄存器寻址
通用寄存器 R0-R7、A、B、DPTR
寄存器名
MOV A, R0
仅指定寄存器可用,不能用 R8-R15
寄存器间接寻址
内部 / 外部 RAM,地址在寄存器中
@
MOV A, @R0 MOVX A, @DPTR
R0/R1 仅寻址内部 RAM 低 128B 和外部 RAM 低 256B
变址寻址
程序存储器
@A+DPTR/@A+PC
MOVC A, @A+DPTR
仅用于访问程序存储器中的常数表
相对寻址
程序存储器
rel
SJMP 05H
偏移量范围 - 128~+127
位寻址
内部 RAM 位寻址区 (20H-2FH) 或 SFR 可寻址位
位地址
SETB P1.0
位地址可直接写或用 "寄存器。位" 表示
3. 常用指令分类详解
(1)数据传送类指令(最常用)
· 内部 RAM 传送:MOV 目的操作数, 源操作数
例:MOV R0, #20H(将立即数 20H 送入 R0)
2. 外部 RAM 传送:MOVX(必须用 DPTR 或 R0/R1 间接寻址)
例:MOVX @DPTR, A(将 A 的内容送入外部 RAM DPTR 指向的单元)
3. 程序存储器传送:MOVC(仅变址寻址)
例:MOVC A, @A+DPTR(查表指令)
· 堆栈操作:PUSH 直接地址(压栈)、POP 直接地址(弹栈)
易错点:堆栈操作遵循 "先压后弹" 原则,SP 先加 1 再压栈,先弹栈再减 1
(2)算术运算类指令
· 加法:ADD A, 源操作数(不带进位)、ADDC A, 源操作数(带进位)
2. 减法:SUBB A, 源操作数(必须带借位)
· 乘除:MUL AB(A×B,低 8 位在 A,高 8 位在 B)、DIV AB(A÷B,商在 A,余数在 B)
(3)控制转移类指令
· 无条件转移:SJMP(短转移,±127B)、AJMP(绝对转移,2KB)、LJMP(长转移,64KB)
4. 子程序调用:ACALL(短调用)、LCALL(长调用)
· 返回指令:RET(子程序返回)、RETI(中断服务程序返回,必须用此指令)
(4)位操作类指令
· 位传送:MOV C, bit、MOV bit, C
· 位操作:SETB bit(置 1)、CLR bit(清零)、CPL bit(取反)
【练习题】
一、单项选择题
1.MCS-51 单片机指令中,立即寻址的操作数前必须加的符号是( )
A. #
B. @
C. $
D. &
2.下列指令中,属于寄存器间接寻址的是( )
A. MOV A, R0
B. MOV A, 30H
C. MOV A, @R0
D. MOV A, #30H
3.执行指令MOV A, #20H后,累加器 A 的内容是( )
A. 00H
B. 20H
C. 30H
D. 不确定
4.下列指令中,能访问外部 RAM 的是( )
A. MOV A, 30H
B. MOVX A, @DPTR
C. MOVC A, @A+DPTR
D. PUSH ACC
5.MCS-51 单片机中,堆栈操作的指令是( )
A. MOV 和 MOVX
B. PUSH 和 POP
C. ADD 和 SUBB
D. RL 和 RR
6.执行指令CLR A后,累加器 A 的内容是( )
A. 00H
B. FFH
C. 01H
D. 不确定
7.下列指令中,属于位操作指令的是( )
A. MOV A, R0
B. SETB P1.0
C. ADD A, #10H
D. SJMP $
8.执行指令MUL AB后,乘积的高 8 位存放在( )
A. 累加器 A
B. 寄存器 B
C. 寄存器 DPTR
D. 程序计数器 PC
9.下列寻址方式中,能访问程序存储器的是( )
A. 直接寻址
B. 寄存器间接寻址
C. 变址寻址
D. 相对寻址
10.执行指令ANL A, #0FH后,累加器 A 的( )
A. 高 4 位清零,低 4 位不变
B. 低 4 位清零,高 4 位不变
C. 全部位清零
D. 全部位置 1
二、填空题
1.MCS-51 单片机指令由( )和( )两部分组成。
2.立即寻址的操作数前必须加( )符号,寄存器间接寻址的操作数前必须加( )符号。
3.MCS-51 单片机共有( )种寻址方式,其中访问外部 RAM 用( )指令。
4.执行指令MOV A, #10H后,A 的内容是( );执行指令MOV A, 10H后,A 的内容是( )。
5.堆栈操作指令中,压栈指令是( ),弹栈指令是( )。
6.乘法指令MUL AB执行后,乘积的低 8 位存放在( ),高 8 位存放在( )。
7.位寻址区位于内部 RAM 的( )单元,共( )位。
8.控制转移类指令中,原地跳转指令是( )。
9.访问程序存储器的指令是( ),只能用( )寻址方式。
10.算术运算类指令中,带进位加法指令是( ),带借位减法指令是( )。
三、综合题
1.简述 MCS-51 单片机的 7 种寻址方式,并各举一条典型指令。
2.分析下列指令序列执行后,累加器 A、R0 和内部 RAM 40H 单元的内容:
(1)MOV A, #30H
(2)MOV R0, #40H
(3)MOV @R0, A
(4)ADD A, #10H
(5)XCH A, @R0
3.编写一段程序,将内部 RAM 30H 单元的内容与 31H 单元的内容进行交换。
4.编写一段程序,将外部 RAM 2000H 单元的内容传送到内部 RAM 50H 单元。
【答案】
一、单项选择题
1.A 2. C 3. B 4. B 5. B 6. A 7. B 8. B 9. C 10. A
二、填空题
1.操作码;操作数
2.#;@
3.7;MOVX
4.10H;内部 RAM 10H 单元的内容
5.PUSH;POP
6.累加器 A;寄存器 B
7.20H~2FH;128
8.SJMP $
9.MOVC;变址
10.ADDC;SUBB
三、综合题
1.答:7 种寻址方式及典型指令如下:
(1)立即寻址:MOV A, #20H
(2)直接寻址:MOV A, 30H
(3)寄存器寻址:MOV A, R0
(4)寄存器间接寻址:MOV A, @R1
(5)变址寻址:MOVC A, @A+DPTR
(6)相对寻址:SJMP NEXT
(7)位寻址:SETB P1.0
2.答:执行结果:
(1)A=30H
(2)R0=40H
(3)内部 RAM 40H 单元 = 30H
(4)A=40H
(5)A=30H,内部 RAM 40H 单元 = 40H
最终:A=30H,R0=40H,内部 RAM 40H 单元 = 40H
3.答:参考程序:
MOV A, 30H
XCH A, 31H
MOV 30H, A
4.答:参考程序:
MOV DPTR, #2000H
MOVX A, @DPTR
MOV 50H, A
考点 2 中断系统与定时器 / 计数器(理解 + 应用)
1. 中断系统组成
MCS-51 单片机有5 个中断源,2 级中断优先级,可实现中断嵌套。
(1)5 个中断源及特性
中断源
符号
触发方式
中断请求标志
中断向量地址
外部中断 0
INT0
低电平 / 下降沿
IE0
0003H
定时器 0 中断
T0
计数溢出
TF0
000BH
外部中断 1
INT1
低电平 / 下降沿
IE1
0013H
定时器 1 中断
T1
计数溢出
TF1
001BH
串行口中断
UART
发送 / 接收完成
TI/RI
0023H
(2)核心控制寄存器
· 中断允许寄存器 IE(可位寻址,地址 A8H):控制中断的打开与关闭
· EA(IE.7):总中断允许位,置 1 允许所有中断,置 0 禁止所有中断(必须打开)
1. ET0(IE.1):定时器 0 中断允许位
2. EX0(IE.0):外部中断 0 中断允许位
例:SETB EA SETB ET0(打开总中断和定时器 0 中断)
· 中断优先级寄存器 IP(可位寻址,地址 B8H):设置中断优先级
· PT0(IP.1):定时器 0 优先级位,置 1 为高优先级,置 0 为低优先级
· 高优先级中断可打断低优先级中断,同级中断不能相互打断
· 定时器 / 计数器控制寄存器 TCON(可位寻址,地址 88H):控制外部中断触发方式和定时器运行
2. IT0(TCON.0):外部中断 0 触发方式,置 1 为下降沿触发,置 0 为低电平触发
3. TR0(TCON.4):定时器 0 运行控制位,置 1 启动定时器,置 0 停止定时器
4. TF0(TCON.5):定时器 0 溢出标志位,计数溢出时置 1,申请中断
2. 定时器 / 计数器
MCS-51 单片机有两个 16 位定时器 / 计数器 T0 和 T1,可实现定时或外部脉冲计数功能。
(1)工作方式寄存器 TMOD(不可位寻址,地址 89H)
· 高 4 位控制 T1,低 4 位控制 T0
· GATE 位:置 0 时仅由 TRx 控制定时器启动;置 1 时需 TRx 和 INTx 同时为 1 才能启动
· C/T 位:置 0 为定时模式(对内部机器周期计数);置 1 为计数模式(对外部脉冲计数)
· M1M0 位:工作方式选择
M1M0
工作方式
位数
特点
应用场景
00
方式 0
13 位
计数范围小,兼容性设计
极少使用
01
方式 1
16 位
计数范围大,需手动重装初值
最常用,定时 / 计数
10
方式 2
8 位
自动重装初值,无需手动干预
精确脉冲产生、串口波特率
11
方式 3
双 8 位
仅 T0 可用,分为两个独立 8 位定时器
需多个定时器时
(2)定时初值计算(高频考点)
4. 机器周期:Tcy = 12 / fosc(fosc 为晶振频率,常用 12MHz,此时 Tcy=1μs)
· 定时时间公式:T = (2ⁿ - X) × Tcy
其中:n 为定时器位数(方式 1 n=16,方式 2 n=8),X 为定时器初值
· 初值计算公式:X = 2ⁿ - T / Tcy
例:晶振频率 12MHz,用 T0 方式 1 定时 1ms,计算初值:
Tcy=1μs,T=1ms=1000μs,n=16
X=2¹⁶ - 1000/1 = 65536-1000=64536=FC18H
所以 TH0=0FCH,TL0=18H
(3)定时器初始化步骤
· 设置 TMOD 寄存器,确定工作方式
· 计算初值,写入 THx 和 TLx
· 设置 IE 寄存器,打开总中断 EA 和对应定时器中断
· 设置 TRx,启动定时器
【练习题】
一、单项选择题
1.MCS-51 单片机共有( )个中断源。
A. 3
B. 5
C. 7
D. 9
2.定时器 / 计数器 0 的中断向量地址是( )
A. 0003H
B. 000BH
C. 0013H
D. 001BH
3.下列寄存器中,用于控制中断允许的是( )
A. TCON
B. TMOD
C. IE
D. IP
4.定时器 / 计数器工作方式 1 是( )位定时器 / 计数器。
A. 8
B. 13
C. 16
D. 32
5.晶振频率为 12MHz 时,机器周期为( )
A. 1μs
B. 2μs
C. 12μs
D. 1ms
6.下列关于定时器方式 2 的描述,正确的是( )
A. 16 位定时器,溢出后需手动重装初值
B. 8 位自动重装初值定时器
C. 仅 T0 可用
D. 用于计数模式时不能产生中断
7.外部中断 0 的触发方式由( )位控制。
A. IT0
B. IE0
C. IT1
D. IE1
8.中断优先级寄存器 IP 中,PT0 位置 1 表示( )
A. 外部中断 0 为高优先级
B. 定时器 0 为高优先级
C. 外部中断 1 为高优先级
D. 定时器 1 为高优先级
9.启动定时器 0 的指令是( )
A. SETB TR0
B. SETB TF0
C. SETB ET0
D. SETB EA
10.中断服务程序返回必须使用的指令是( )
A. RET
B. RETI
C. LJMP
D. SJMP
二、填空题
1. MCS-51 单片机的 5 个中断源分别是( )、( )、( )、( )、( )。
2. 中断允许寄存器 IE 中,总中断允许位是( ),定时器 0 中断允许位是( )。
3. 定时器 / 计数器的工作方式由( )寄存器设置,运行控制寄存器是( )。
4. 定时器方式 1 是( )位定时器,方式 2 是( )位自动重装初值定时器。
5. 晶振频率为 12MHz 时,用 T0 方式 1 定时 1ms,初值应为( )H,TH0=( )H,TL0=( )H。
6. 外部中断 0 的中断向量地址是( ),串行口中断的中断向量地址是( )。
7. 外部中断的触发方式有( )触发和( )触发两种。
8. 定时器 / 计数器有( )模式和( )模式两种工作模式,由 C/T 位控制。
9. 中断优先级分为( )级和( )级,通过( )寄存器设置。
10. 定时器溢出时,( )标志位置 1,( )申请中断,CPU 响应中断后该标志位。
三、综合题
1.简述 MCS-51 单片机中断响应的基本过程。
2.已知晶振频率为 12MHz,用 T0 方式 1 定时 50ms,计算定时器初值,并写出完整的初始化程序。
3.编写一段程序,实现外部中断 0(下降沿触发)控制 P1.0 引脚的 LED,每触发一次中断,LED 状态翻转一次。
4.比较定时器方式 1 和方式 2 的主要区别,并说明各自的典型应用场景。
【答案】
一、单项选择题
1.B 2. B 3. C 4. C 5. A 6. B 7. A 8. B 9. A 10. B
二、填空题
1.外部中断 0;定时器 0 中断;外部中断 1;定时器 1 中断;串行口中断
2.EA;ET0
3.TMOD;TCON
4.16;8
5.FC18;FC;18
6.0003H;0023H
7.低电平;下降沿
8.定时;计数
9.高;低;IP
10.TF(溢出);自动清零
三、综合题
1.答:中断响应基本过程:
(1)中断源发出中断请求,对应中断请求标志位置 1;
(2)CPU 检测到中断请求,若总中断允许位 EA=1 且对应中断允许位为 1,则响应中断;
(3)CPU 自动将当前程序计数器 PC 的值压入堆栈保护;
(4)自动转入对应中断源的中断向量地址执行中断服务程序;
(5)执行到 RETI 指令时,自动将堆栈中的 PC 值弹出,返回原程序断点处继续执行。
2.答:初值计算:
晶振 12MHz,Tcy=1μs,T=50ms=50000μs,方式 1 n=16
X=2¹⁶ - 50000/1 = 65536-50000=15536=3CB0H
初始化程序:
MOV TMOD, #01H ; 设置T0为方式1定时
MOV TH0, #3CH ; 装入初值高8位
MOV TL0, #0B0H ; 装入初值低8位
SETB EA ; 开总中断
SETB ET0 ; 开定时器0中断
SETB TR0 ; 启动定时器0
3.答:参考程序:
ORG 0000H
LJMP MAIN
ORG 0003H ; 外部中断0中断向量地址
LJMP INT0_ISR
ORG 0100H
MAIN:
SETB IT0 ; 设置外部中断0为下降沿触发
SETB EA ; 开总中断
SETB EX0 ; 开外部中断0
SJMP $ ; 等待中断
INT0_ISR: ; 中断服务程序
CPL P1.0 ; 翻转P1.0引脚状态
RETI ; 中断返回
4.答:主要区别及应用场景:
特性
方式 1
方式 2
位数
16 位
8 位
初值重装
溢出后需手动重装
溢出后自动重装 THx 内容到 TLx
计数范围
0~65535
0~255
精度
较高,适合长定时
极高,适合精确短定时
典型应用
秒表、延时程序、脉冲计数
串口波特率发生器、精确方波产生
【真题演练】
1.已知 MCS-51 单片机内部 RAM 中,30H=25H,R0=40H,40H=3AH,累加器A=10H,寄存器B=05H。请依次执行下列指令,写出每一步执行后A、R0、30H、40H 单元的内容,并判断每条指令的寻址方式。
1.MOV A, @R0
2.ADD A, 30H
3.MOV @R0, A
4.MUL AB
【答案】
1.执行后:A=3AH,R0=40H,30H=25H,40H=3AH;寻址方式:寄存器间接寻址
2.执行后:A=5FH,R0=40H,30H=25H,40H=3AH;寻址方式:直接寻址
3.执行后:A=5FH,R0=40H,30H=25H,40H=5FH;寻址方式:寄存器间接寻址
4.执行后:A=1DH,B=02H,R0=40H,30H=25H,40H=5FH;寻址方式:寄存器寻址
【解析】
本题考查7 种寻址方式判断和数据传送、算术运算指令执行,是湖南对口必考基础题,易错点:混淆直接寻址与寄存器间接寻址、乘法指令结果存储规则(低 8 位存 A,高 8 位存 B)。
2.MCS-51 单片机采用12MHz 晶振,使用定时器 T0 的工作方式 1实现定时 20ms,请完成:
1.计算机器周期Tcy;
2.计算定时器 T0 的初值X(十六进制形式);
3.编写 T0 的完整初始化程序(开启中断、启动定时器)。
【答案】
1.机器周期:Tcy=12/fosc=12/12MHz=1μs
2.初值计算:方式 1 为 16 位定时器,X=216−T/Tcy=65536−20000=45536=0B1E0H
即:TH0=0B1H,TL0=0E0H
3.初始化程序:
MOV TMOD, #01H ; 设置T0为方式1定时模式
MOV TH0, #0B1H ; 装入初值高8位
MOV TL0, #0E0H ; 装入初值低8位
SETB EA ; 开启总中断
SETB ET0 ; 开启T0中断
SETB TR0 ; 启动定时器T0
【解析】
本题考查定时器核心计算 + 初始化编程,是湖南对口选考模块最高频考点,易错点:晶振与机器周期换算、初值十六进制转换、TMOD/IE/TCON 寄存器配置。
3.设计 MCS-51 单片机应用程序:采用外部中断 0(下降沿触发),每触发一次中断,将P1.0引脚输出电平翻转(实现 LED 亮灭切换)。
要求:
1.画出程序结构(主程序 + 中断服务程序);
2.编写完整汇编程序(包含中断向量地址配置)。
【答案】
完整汇编程序:
ORG 0000H ; 程序入口地址
LJMP MAIN ; 跳转到主程序
ORG 0003H ; 外部中断0中断向量地址
LJMP INT0_PRO ; 跳转到中断服务程序
ORG 0100H ; 主程序起始地址
MAIN:
SETB IT0 ; 设置INT0为下降沿触发
SETB EA ; 开启总中断
SETB EX0 ; 开启外部中断0
SJMP $ ; 原地等待中断触发
INT0_PRO: ; 外部中断0服务程序
CPL P1.0 ; 翻转P1.0引脚电平
RETI ; 中断返回(必须用RETI)
END
【解析】
本题考查中断向量配置、触发方式设置、中断服务程序编写,是湖南对口中断模块核心应用题,易错点:中断向量地址写错、用 RET 代替 RETI、忘记开启总中断 EA。
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$