单片机基础第3版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

参考程序:
MOV TMOD, #10H ;设置T1为工作方式0 MOV TH1, #9EH ;设置定时器初值 MOV TL1, #58H MOV IE, #00H ;禁止中断 SETB TR1 ;启动定时 JBC TF1, LOOP1 ;查询溢出标志 AJMP LOOP MOV TH1, #9EH ;重置定时器初值 MOV TL1, #58H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环
3. 中断嵌套
80C51具有两个优先级,中断嵌套只能一 层,其原则是: 高优先级中断请求可以打断低优先级的中断 服务,进行中断嵌套; 同优先级的中断不能嵌套; 低优先级中断请求不能对高优先级的中断进 行嵌套。
5.2.4 中断响应过程
1. 外部中断请求采样

每个机器周期的S5P2对INT0(P3.2)和INT1(P3.3) 引脚进行采样,采样结果在TCON中的IE0、IE1 位进行设置。

【例】设单片机晶振频率为6MHz,使用定时 器1以方式1产生周期为100ms的等宽方波连 续脉冲,并由P1.0输出。


计算计数初值 (216-X)×2us=50 000us 求解得:X=40536,表示为二进制为9E58H。 高8位放入TH1,即TH1=9EH; 低8位放入TL1,即TL1=58H。 TMOD寄存器初始化 M1M0=01,C/T=0,GATE=0,则TMOD寄存器 初始化为10H。
单片机基础(第3版)
李广弟等编著 北京航空航天大学出版社 2007年6 月
第5 章

80C51单片机的中断与定时
5.1 中断概述
当CPU正在处理某事件的时候,CPU暂时中止当前 的工作,转到中断服务处理程序处理所请求的事 件。处理完该事件后,再回到原来被中止的地方 继续原来的工作,这称为中断。
中断技术为计算机提供了资源共享。
LOOP: LOOP1:
5.3.4 定时器工作方式1
方式1为16位计数结构的工作方式,计数器由寄 存器TH0、TL0(或TH1、TL1)的全部共16位构 成T0(或T1)。 计数功能时,计数范围是1~65536(216)。 定时功能时,定时时间的计数公式为: (216—计数初值)×晶振周期×12 或 (216—计数初值)×机器周期 若晶振频率为6MHz,则最小定时时间为: [216-(216-1)]×2us=2us 最大定时时间为: [216-0]×2us=131072us≈131ms
2. 定时器方式选择寄存器(TMOD)
D7 D6 TMOD (89H) GATE C/T D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
① GATE—门控位。 GATE=0,仅由定时器启动位TR0控制定时器的启动; GATE=1,以外中断请求输入引脚(INT0或INT1)和定时器 启动位TR共同决定定时器的启动。 ② C/T —定时方式或计数方式选择位。 C/T=0,定时工作方式; C/T=1,计数工作方式。 ③ M0和M1 —工作方式位。 M1M0=00时,工作方式0; M1M0=01时,工作方式1; M1M0=10时,工作方式2; M1M0=11时,工作方式3。
5.3.2 用于定时器/计数器控制的寄存器
1. 定时器控制寄存器(TCON)
TCON 位地址 8FH 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
(88H) 位符号 TF1
① TR0和TR1—定时器(T0和T1)运行控制位。 TR0(TR1)=0,停止定时器/计数器工作; TR0(TR1)=1,启动定时器/计数器工作。 ② TF0和TF1—定时器(T0和T1)计数溢出标志位。
+5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.4 P1.5 P3.2 AT89S51
红 黄 绿
5.3 80C51 单片机的定时器/计数器
5.3.1 定时器/计数器的计数和定时功能 1. 计数功能 外部计数脉冲由T0(P3.4)和T1(P3.5)引脚 引入。每个机器周期的S5P2拍节对计数脉输入引 脚进行采样。计数脉冲负跳变有效,若前一机器 周期采样为高电平,后一机器周期采样为低电平, 即为一个计数脉冲。计数频率不能高于振荡脉冲 频率的1/24。 2. 定时功能 计数脉冲来自单片机内部,每个机器周期计数 一次。计数频率为振荡频率的1/12。

4. 中断响应的快慢

中断响应的时间为3~8个机器周期。
5.2.5 中断服务程序
1. 主程序中的中断初始化
ORG 0000H AJMP MAIN ORG 0003H AJMP EXINT0 MOV TCON, #01H MOV IE, #81H MOV IP, #01H MOV SP, #03FH ┇ ┇ ;系统复位后转向主程序 ;转向外部中断0服务程序 ;脉冲触发方式 ;中断开发,外中断0允许 ;外中断0为高优先级 ;设置堆栈 ;外中断0服务程序
MAIN:
EXINT0:
执行主程序
2. 中断服务流程
①现场保护和现场恢复 ②关中断和开中断 ③中断处理 ④中断返回
执行一条指令
取下一条指令 N
主 程 序
有中断请求?
Y 关中断 保护现场和断点
开中断
中断服务
关中断
恢复现场
中 断 服 务 程 序
图5.2 中断服务程序流程图
开中断 中断返回
用AT89S51的P1口接8个LED发光二极管,由 P3.2(INT0)引脚接一消抖按键开关。开始接P1.0 的LED亮,以后每按键一次引发一次中断,则下一 个LED亮。顺序下移,且每次只一个LED亮,周而 复始。请编制程序。
MOV MOV MOV SETB SETB SETB SETB SETB IE, #89H IP, #01H TCON, #01H EA EX0 ET1 PX0 IT0 ;CPU开中断 ;允许外中断0中断 ;允许定时器1中断 ;外中断0为高级中断 ;外中断0为脉冲触发方式
在主程序中编写如下程序段:
5.2.3 中断优先级控制
参考程序:
MOV TMOD, #00H ;设置T1为工作方式0 MOV TH1, #0FCH ;设置定时器初值 MOV TL1, #03H MOV IE, #00H ;禁止中断 SETB TR1 ;启动定时 JBC TF1, LOOP1 ;查询溢出标志 AJMP LOOP MOV TH1, #0FCH ;重置定时器初值 MOV TL1, #03H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环

5.2 80C51单片机的中断系统
5.2.1 中断源与中断向量


中断源:产生中断的请求源称为中断源。 80C51的中断系统具有5个中断源:2个外部中断、2个 定时器中断、1个串行中断。 中断向量:中断服务程序的入口地址。
表5.1 5个中断入口地址 中断名称 外部中断0 定时器0中断 外部中断1 定时器1中断 中断向量 0003H 000BH 0013H 001BH
2. 定时器控制寄存器TCON
TCON 位地址 8FH (88H) 位符号 TF1
8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
① TF0和TF1—定时器(T0和T1)计数溢出标志位。 ② IE0和IE1 —外部中断请求标志位。 ③ IT0和IT1 —外中断触发方式控制位。 IT0(IT1)=0时,为电平触发方式,低电平有效; IT0(IT1)=1时,为脉冲触发方式,下降沿有效。
ຫໍສະໝຸດ Baidu
2. 中断查询
CPU每个机器周期的S6进行中断查询,逐个检测 TCON、SCON中六个中断标志位的状态。 查询按优先级顺序进行,即先高级、后低级。 同级中断按“外部中断0定时器0中断外部 中断1定时器1中断串行中断”。

3. 中断响应
中断响应的主要内容由硬件自动生成一条长调 用指令“LCALL addr16”。 中断响应的封锁: ① 同级的或高级的中断正在发生; ② 查询中断请求的机器周期不是当前指令的最 后一个机器周期; ③ 当前指令是返回指令(RET、RETI)或访问 IE、IP的指令。这类指令执行完还应再执行一 条指令才能响应中断。
串行中断
0023H
5.2.2 中断控制


中断控制:提供给用户使用的中断控制手段 80C51单片机关于中断的控制包括四项:
1. 2. 3. 4.
中断允许控制 中断请求控制 中断优先控制 外中断触发方式控制 中断允许控制寄存器IE 定时器控制寄存器TCON 串行口控制寄存器SCON 中断优先级控制寄存器IP
1. 中断优先级定义原则 2. 中断优先原则在中断响应时的体现 当高、低优先级中断请求同时出现时,高优 先级中断请求被响应; 如果同级的多个中断请求同时出现,则按 CPU查询次序确定哪个中断请求被响应。查 询次序是:
外部中断0定时器0中断外部中断1定时器1中断串行中断
图5.1
80C51中断系统控制逻辑
+5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.2 AT89S51
红 黄 绿
ORG 0000H LJMP MAIN ORG 0003H RL A MOV P1, A RETI ORG 0030H MAIN:MOV IE, #81H SETB IT0 MOV A, #0FEH MOV P1, A SJMP $ END
①PX0 —外部中断0优先级设定位; ②PT0 —定时器0中断优先级设定位; ③PX1 —外部中断1优先级设定位; ④PT1 —定时器1中断优先级设定位; ⑤PS —串行中断优先级设定位。
【例】若允许外部中断0和定时器1的中断,外部中 断 0 采用脉冲触发方式,并设置为高级中断,其它 中断源为低级中断。 也可以写为如下程序段:
涉及四个特殊功能寄存器
1. 2. 3. 4.
1. 中断允许控制寄存器IE
IE
位地址 AFH
EA
AEH
-
ADH
-
ACH
ES
ABH
ET1
AAH
EX1
A9H
ET0
A8H
EX0
(A8H) 位符号
①EA—中断允许总控制位。 EA=0,屏蔽所有的中断请求; EA=1,中断总允许,各中断的禁止与允许取决于各自允 许控制位。 ②EX0和EX1—外部中断的中断允许控制位。 EX0(EX1)=0,禁止外部中断; EX0(EX1)=1,允许外部中断。 ③ET0和ET1—定时器中断允许控制位。 ET0(ET1)=0,禁止定时器中断; ET0(ET1)=1,允许定时器中断。 ④ES—串行口中断允许位。 ES=0,禁止串行口中断;ES=1,允许串行口中断。
5.3.3 定时器工作方式0
1. 电路逻辑结构 2. 启停控制
图5.3 定时器/计数器0的工作方式0逻辑结构
3. 定时和计数范围
计数功能时,计数范围是1~8192(213)。 定时功能时,定时时间的计数公式为: (213—计数初值)×晶振周期×12 或 (213—计数初值)×机器周期 若晶振频率为6MHz,则最小定时时间为: [213-(213-1)]×2us=2us 最大定时时间为: [213-0]×2us=16384us
3. 串行口控制寄存器SCON
SCON 位地址 9FH (98H) 位符号 SM0 9EH SM1 9DH SM2 9CH REN 9BH TB8 9AH RB8 99H TI 98H RI
①TI —串行发送中断请求标志位。 ②RI —串行接收中断请求标志位。
4. 中断优先级控制寄存器IP
位地址 BFH IP (B8H) 位符号 BEH BDH BCH PS BBH PT1 BAH PX1 B9H PT0 B8H PX0

4. 应用举例
【例5.1】设单片机晶振频率为6MHz,使用定时器1 以方式0产生周期为500us的等宽方波连续脉冲, 并由P1.0输出。

计算计数初值

(213-X)×2us=250us 求解得:X=8067,表示为二进制为11111100 00011. 高8位放入TH1,即TH1=0FCH; 低5位放入TL1,即TL1=03H。 TMOD寄存器初始化 M1M0=00,C/T=0,GATE=0,则TMOD寄存器初始化为 00H。
相关文档
最新文档