,单片机原理与应用技术, 教学课件
第三讲:
I/O,中断,定时与串口
本讲重点:
接口概念,单片机的编址与译码方法 ;
中断概念,响应条件,处理原则,中断服务 ;
定时器 /计数器工作方式 1,2的 用法 ;
串行通讯的波特率,4种工作方式,
,单片机原理与应用技术, 教学课件
第五章 I/O,中断,定时与串行通信
I/O接口的作用 /功能 /定义
数据 性质 不同
数据 协议 /格式 不同
速度 不一致
所需 功率 /电平 不匹配
所需 测控点数量 不匹配
计算机 /单片机 与 外设 之间 起 桥梁 作用的
电路或部件 ——接口 (interface)。
协调 两者间的 差异 。
,单片机原理与应用技术, 教学课件
本课程中讲到的 接口可以是
口地址 → 可寻址的寄存器 /端口
地址由选用的地址线条数与地址线名决定
接口 与 端口
? 地址线 条数 n决定:寻址范围 = 2n
MCS-51寻址范围 = 216 = 65536 = 64K字节
? 地址线在地址总线中的 序名 决定具体地址
一个端口 可能 有多个口地址;
一个口地址 只能 唯一地指向某个端口。
→ 器件 → 功能模块
→ 电路板卡 → 设备 /装臵 → ……
,单片机原理与应用技术, 教学课件
站在单片机 /计算机 一侧 来看待上述过程叫 编址。
站在单片机 /计算机 外侧 来看待上述过程叫 译码。
接口地址的 编址 /译码 /寻址概念 (P125):
通过适当的地址线 (或控制线,或 I/O线 ),
物理上形成某个或某些 片选 /使能 等信号,
实现与接口对象的一一对应的过程 。
通过 软件与译码电路硬件 实现对外设的片选
或使能控制过程叫 寻址 。
,单片机原理与应用技术, 教学课件
编址 是设计过程(在先)
译码和寻址 是应用过程(在后)
对 I/O与存储器编址 通常有两种方式,
? 独立编址方式:
I/O与存储器分别编址 (例如 IBM-PC)
? 统一编址方式:
I/O与存储器合在一起编址 (单片机应用系统 )
编址 有两种方式
,单片机原理与应用技术, 教学课件
单片机对外部器件实现一一对应的, 片选, 通常
要用单片机的地址总线 A15— A0中的 部分或全部,
甚至也可以用某些 I/O线 。
A15 A14 A13 A12 A11 A10 A9 A8
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
P0口是 低 8位地址 与数据复用口
线选寻址 与 译码寻址 (P109)
A7/D7 A6/D6 A5/D5 A4/D4 A3/D3 A2/D2 A1/D1 A0/D0
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
P2口是 高 8位地址 口。
,单片机原理与应用技术, 教学课件
P2.7 P2.5 P2.6P0口
/CE /CE /CE
P2.2-2.0
RAM ( 2K)
A10 A9 A8
P2.5 做 RAM 片选线 ( 0000H—07FFH)
P2.2,P2.1,P2.0与 P0口 共同寻址 2K字节 存储单元
地址范围,XX0X X000 0000 0000
XX0X X111 1111 1111
? 线选寻址, 用一条或几条地址线对外寻址
MCS-51单片机
AD7-0D7-0
D7-0Q7-0
Q7-0
,单片机原理与应用技术, 教学课件
P2.7 P2.5 P2.6P0口
/CE /CE /CE
P2.2-2.0
RAM ( 2K)
A10 A9 A8
P2.7 做 输出锁存器 的片选线
地址范围,0XXX XXXX XXXX XXXX
MCS-51单片机
AD7-0D7-0
D7-0Q7-0
P2.6 做 输入缓冲器 的片选线
地址范围,X0XX XXXX XXXX XXXX
锁存器 缓冲器
(例,7FFFH)
(例,0BFFFH)
,单片机原理与应用技术, 教学课件
/CE/CE/CE
常用译码器件,74LS138,3-8译码器
? 译码寻址, 用 地址线 加 译码器件 对外寻址
P0.7-
P0.0 74LS138
Y0
AB
C
G
G2A
G2B
0# 1# 2# 7#
+5V
MCS
-51
Y1
Y2
Y7
/CE
74LS139:双 2-4译码器
,单片机原理与应用技术, 教学课件
单片机的中断系统
,单片机原理与应用技术, 教学课件
数据的输入 /输出传送
方式
查询传送方式 (LOOK UP):
传送前一方先查询另一方的状态,若已经准备好
就传送,否则就继续查询 /等待
中断传送方式 (IRQ):
一方通过申请中断的方式与另一方进行数据传送
无条件传送方式:
一方对另一方来说总是准备好的
直接存储器存取方式 (DMA):
双方直接通过总线传送数据,不经 CPU中转
第五章 I/O,中断,定时与串行通信
,单片机原理与应用技术, 教学课件
数据传送的双方平时各自做自己的工作,一旦
甲方 要求与 乙方 进行数据传送,就主动 发出信号
提出申请,乙方 接到申请后若 同意 传送,安排好
当前的工作,再 响应 与甲方发生数据传送。 完事
后,回去继续 做打断前的工作。
中断功能强弱是计算机性能优劣的重要标志
?提高 CPU效率?解决速度矛盾
?实现并行工作?应付突发事件 ……
中断传送方式特点 (P.128)
,单片机原理与应用技术, 教学课件
① 中断源
② 中断申请
③ 开放中断
④ 保护现场
⑤ 中断服务
⑥ 恢复现场
⑦ 中断返回
中断涉及的几个环节
(前面提到的 甲方 )
(甲方 发出信号 提出申请)
( 乙方 同意 传送)
( 安排好当前的工作 )
( 响应 乙方 的要求)
( 完事后,回去 …… )
( 继续 做打断前的工作)
,单片机原理与应用技术, 教学课件
单片机的 中断源 及 TCON
CPU在每个机器周期的 S5P2期间,会自动查询
各个 中断申请标志位,若查到某标志位被臵位,
将启动中断机制。
51子系列允许 5个 (52子系列 6个 )中断源:
2个外部中断请求,INT0,INT1
2个片内定时器 /计数器 T0和 T1中断请求:
TF0,TF1,(TF2——52子系列有 T2)
1个串行口中断请求,TI/RI
CPU识别中断申请的依据,
,单片机原理与应用技术, 教学课件
单片机的 中断源 及 TCON
CPU 在每个机器周期的 S5P2期间,会自动查询
各个 中断申请标志位,若查到某标志位被臵位,
将启动中断机制。
CPU识别中断申请的依据,
Tc
Ts
Tm Tm
Tc=1/fosc Ts=6Tc Tm=12Tc=6Ts
S5 S6S4S3S2 S5 S6S4S3S2S1
—— 此图见 P.40
,单片机原理与应用技术, 教学课件
定时器控制寄存器 TCON (88H)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON
TF0/TF1,定时器溢出中断申请标志位:
=0:定时器未溢出;
=1,定时器溢出申请中断,进中断后自动清零。
TR0/TR1,定时器运行启停控制位:
=0:定时器停止运行;
=1,定时器启动运行。
TCON,Timer控制寄存器,是管理定时器工作的
SFR(其中低 4位管外部中断)
,单片机原理与应用技术, 教学课件
定时器控制寄存器 TCON (88H)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON
IE0/IE1,外部中断申请标志位:
=0:没有外部中断申请;
=1,有外部中断申请。
IT0/IT1,外部中断请求的触发方式选择位:
=0:在 INT0/INT1端申请中断的信号 低电平 有效 ;
=1,在 INT0/INT1端申请中断的信号 负跳变 有效,
TCON,Timer控制寄存器,低 4位管理外部中断
,单片机原理与应用技术, 教学课件
?在 CPU已经开放了外部中断允许的前提下:
?在 INT0/INT1引脚输入一个 负脉冲 或 低电平,
?TCON寄存器中的 IE0/IE1标志位自动变, 1”,
?检测到 IE0/IE1变, 1”后,将产生指令:
LCALL 0003H(/0013H)执行中断服务程序,
?并将 IE0/IE1标志位自动清, 0”,以备下次申请 。
外部中断 (INT0,INT1)申请过程
,单片机原理与应用技术, 教学课件
单片机的中断矢量与优先级
(P.130)
中断矢量, MCS-51单片机的 5 个中断源分别对
应有各自的 中断服务程序入口地址 —— 中断矢量
000BHTF0定时 /计数器 0(T0)
002BHTF2定时 /计数器 2(T2)
0023HRI/TI串行口接收 /发送
001BHTF1定时 /计数器 1(T1)
0013HIE1外部中断 1( INT1)
0003HIE0外部中断 0( INT0)
中断优先级中断矢量申请标志中 断 源
最高优先级
最低优先级
,单片机原理与应用技术, 教学课件
— — PT2 PS PT1 PX1 PT0 PX0IP
PX0/PX1,INT0/1优先级控制位:
=0 时属 低 优先级; =1 时属 高 优先级。
PT0/PT1/PT2,T0/1/2中断优先级控制位:
=0 时属低优先级; =1 时属 高 优先级。
PS1,串行口中断优先级控制位:
=0 时属 低 优先级; =1 时属 高 优先级。
中断优先级控制寄存器 IP (0B8H)
,单片机原理与应用技术, 教学课件
对 同时发生 多个中断申请时:
? 不同优先级的中断同时申请 (很难遇到 )
——先高后低
? 相同优先级的中断同时申请 (很难遇到 )
——按序执行
? 正处理低优先级中断又接到高级别中断
——高打断低
? 正处理高优先级中断又接到低级别中断
——高不理低
中断优先级处理原则
,单片机原理与应用技术, 教学课件
(P.131)
? 没有 同级的中断或更高级别的 中断正在处理 ;
在中断源提出了 中断申请 且 CPU此前已经 允许中断
的前提下,还须满足以下 三个条件,
? 正在执行的指令必须 执行完最后 1个机器周期 ;
? 若正在执行 RETI,或正在访问 IE或 IP寄存器,须
执行完上述指令和下一条指令以后方能响应中断。
,单片机原理与应用技术, 教学课件
EA — ET2 ES ET1 EX1 ET0 EX0IE
中断允许寄存器 IE (0A8H)
EX0/EX1/ET1/ET0/ES 位,
分别是 INT0/1,Timer0/1,串行口 的中断允
许控制位,
=0 时禁止中断; =1 时 允许 中断。
ET2,T2中断允许控制位(仅 52子系列 有)
=0 时禁止中断; =1 时 允许 中断。
EA,总的中断允许控制位(总开关):
=0 时禁止全部中断; =1 时 允许 中断。
,单片机原理与应用技术, 教学课件
中断系统硬件结构 (P.132)
注,各中断允许控制位 =0,开关断开 ; =1,开关接通
IE0
EX0
TF0
IE1
TF1
TI
ES
ET1
EX1
ET0
外部中断
请求 0
外部中断
请求 1
内部
定时器 0
内部
定时器 1
内部
串行口
T
R RI
IE寄存器 EA位 IP寄存器
各单路开关 总开关
中断源标志
位查询机构
高中断级
中断请求
低中断级
中断请求
中断入口
中断源
标志位
INT0
INT1
中断入口
中断源
标志位
,单片机原理与应用技术, 教学课件
外部中断 及 中断请求的撤除
(P.133)低电平 /负脉冲 → INT0/INT1引脚 可触发中断
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON (88H)
IT0/IT1,INT0/1的触发方式选择位:
IT0/IT1 =0 时,INT0/INT1是 低电平 有效;
IT0/IT1 =1 时,INT0/INT1是 负跳变 有效。
低电平触发 引脚上的低电平须持续到中断发生。
若中断返回前仍未 及时撤除 低电平,将再次中断。
负脉冲触发 CPU在前一机器周期采到 INT0/INT1引
脚为高,后一机器周期采到为低才认为是一次中断
请求。 CPU 可 记忆申请,可 自动撤除中断申请 。
,单片机原理与应用技术, 教学课件
外部低电平中断的撤除
外来的低电平 → 反相 → CLK端产生上跳沿 →
D端的, 0”打到 Q端 → 申请中断
INTx
P1.0 CLKS
Q D
外来中断申请
信号 (低电平 )
MCS-51 74LS74
S=0 则 Q=1
中断返回前对 P1.0送, 0” → 令 Q端变为, 1”
指令如下:
ANL P1,#0FEH = CLR P1.0 ;令 Q端臵, 1”
ORL P1,#01H = SETB P1.0;令 S端臵, 1”,以免下次中断来时 Q端不能变, 0”
,单片机原理与应用技术, 教学课件
中断应用 前后 要做的几项工作
中断前
开中断允许,必须
选择优先级:根据需要选择,可有 /可无
设臵控制位,INTx—触发方式 (ITx)
Tx—TCON,TMOD,TRx,初值 ……
RI/TI—SCON,REN,RB8,TB8,……
中断后
进入中断服务 后, 保护现场, 关中断, ……
退出中断服务 前, 恢复现场,开中断,设 Tx的初
值,清 TI/RI,……
中断服务程序的最后一条指令必是 RETI
,单片机原理与应用技术, 教学课件
中断应用 程序举例:
P134例 2,通过 外部中断 1,在中断服务中将 B寄存器里的
内容 左环移一位 。
已知, (B)=01h,要求采用边沿触发,低优先级。
此例的 实际意义,在 INT1引脚接一个 按钮开关 到地,每
按一下按钮就申请一次中断,中断服务则是,依次点亮
八盏灯中的一盏 。
,单片机原理与应用技术, 教学课件
中断应用 程序举例:
P134例 2,通过 外部中断 1,在中断服务中将 B寄存器里的
内容 左环移一位 。
已知, (B)=01h,要求采用边沿触发,低优先级。
此例的 实际意义,在 INT1引脚接一个 按钮开关 到地,每
按一下按钮就申请一次中断,中断服务则是,依次点亮
八盏灯中的一盏 。
P1.0
P1.7
INT1 300?
,单片机原理与应用技术, 教学课件
ORG 0000H (P.134)
LJMP MAIN
ORG 0013H ;中断矢量
LJMP INT
MAIN,SETB EA ;开总中断允许, 开关,
SETB EX1 ;开分中断允许, 开关,
CLR PX1 ;0 优先级(也可不要此句)
SETB IT1 ;边沿触发
MOV B,#01H ;给 B 寄存器赋初值
HERE,SJMP HERE ;原地等待中断申请
INT,MOV A,B ;自 B寄存器中 取数
RL A ;左环移一次
MOV B,A ;存回 B,备下次取用
(MOV P1,A) ;输出到 P1口
RETI ;中断返回
中断服
务程序
,单片机原理与应用技术, 教学课件
单片机的定时 /计数器
,单片机原理与应用技术, 教学课件
2个 16位 定时器 /计数器
——(52系列有 3个 16位 Timer)
定时器,对片内机器时钟 (周期方波 )进行计数
计数器,对 Tx引脚 输入的负脉冲进行计数
与 Timer工作有关的 特殊功能寄存器:
TCON 和 TMOD
第五章 I/O,中断,定时 与串行通信
P.135
,单片机原理与应用技术, 教学课件
Timer的 2个特殊功能寄存器 (TCON,TMOD)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
定时器 控制 寄存器 TCON (88H) P.137
TFx,Timer0/1计数溢出标志位。
=1 计数溢出 ; =0 计数未满
TFx标志位 可用于 申请中断 或 供 CPU查询 。
在进入中断服务程序时会自动清零;但在
查询方式时必须软件清零。
TRx,Timer0/1运行控制位。
=1 启动计数; =0 停止计数
,单片机原理与应用技术, 教学课件
TR0/TR1,Timer0/1运行控制位,
TR0/TR1 =0 时,Timer0/1停止计数
TR0/TR1 =1 时,Timer0/1启动计数
定时器 T0/T1 中断申请过程
?在已经开放 T0/T1中断允许且已被启动的前提下:
?T0/T1加满溢出 时 TF0/TF1标志位自动臵, 1”
?检测到 TCON中 TF0/TF1变, 1”后,将产生指令:
LCALL 000BH/LCALL 001BH 执行中断服务程序,
?TF0/TF1标志位会自动清, 0”,以备下次中断申请。
定时 /计数器可按片内 机器周期 定时,也可对由
T0/T1引脚输入一个 负脉冲 进行加法计数
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON (88H)
,单片机原理与应用技术, 教学课件
GATE C / T M1 M0 GATE C / T M1 M0
定时器 方式 寄存器 TMOD (89H) P.137
T1 T0
M1,M0,工作方式定义位 ( 定义 4 种方式 ):
C/T, 计数器 /定时器选择位
= 1 外部事件 计数器 。对 Tx引脚的 负脉冲 计数;
= 0 片内时钟 定时器 。对 机器周期脉冲 计数定时
0 0,13位 Timer——用它无益,不要记它!
0 1,16位 Timer——经常用到
1 0:可自动重装的 8位 Timer——经常用到
1 1,T0 分为 2个 8位 Timer; T1 此时不工作
——因为没有带来甚麽好处,几乎 无 用
,单片机原理与应用技术, 教学课件
GATE C / T M1 M0 GATE C / T M1 M0
T1 T0
GATE门控位, Timer可由软件与硬件两者控制
?GATE = 0 ——普通用法
Timer的 启 /停 由 软件 对 TRx位写, 1”/“0”控制
定时器 方式 寄存器 TMOD(续)
(89H)
?GATE = 1 ——门控用法
Timer的 启 /停 由 软件 对 TRx位写, 1”/“0”
和 在 INTx引脚 上出现的信号的 高 /低 共同控制
,单片机原理与应用技术, 教学课件
阅读书上定时器应用程序举例:
P.140例 1,晶振 =6MHz,估算 Timer的定时时长
( max,min)
P.141例 2,要求对 T0产生 100mS定时进行初始
化。 (晶振 =6MHz)
P.141例 3,产生 T=2mS方波 (改为方式 2)
P.142例 4,请改为方式 1或 2再阅读,务请大家
不要陷入方式 0的困惑之中!
P.143例 5,定时 1 秒
P.144例 6,方式 3(双 8位定时器)的应用
,单片机原理与应用技术, 教学课件
定时器结构与工作方式
P.139
工作方式 1,——16位的定时 /计数器
振荡器 ?12
TLx THx
(8位 ) (8位 ) TFx
申请
中断
Tx端
TRx位
GATE位
INTx端
≥1
&
C/T=0
C/T=1
控制 =1
开关接通
或门
与门
,单片机原理与应用技术, 教学课件
?THx/TLx赋初值, THx赋高 8位,TLx赋低 8位
工作方式 1 的编程要点, 参阅 P.140
?TMOD选方式, 写, M1,M0”=01 b 选方式 1
?若不用门控位,直接用软件写 TRx控制启 /停
?若使用门控位,先臵位 TRx,然后由 INTx端
的 高 /低电平 来控制其启 /停
?若要允许 中断,还须先臵位 ETx,EA等中断
允许控制位,并编写 中断服务 程序
?若不用中断,可 查询,计数溢出标志 TFx”
的方式工作,但溢出标志 TFx须软件清 0
,单片机原理与应用技术, 教学课件
定时器 (方式 1)应用程序举例:
分析,已知 fosc = 6MHz 则:
(振荡周期) 1Tc=1/6MHz
(机器周期) 1Tm=12Tc=12/6MHz=2?S
?粗略地说,Tmin ? 2?S
16位定时器最大数值为,216=65536=0FFFFH+1
故选择 方式 1 工作可以得到:
?Tmax = 65536?2 = 131072?S= 131.072mS
P140例 1:若晶振频率为 6MHz,计算单片机的
最小与最大 定时时间:
,单片机原理与应用技术, 教学课件
分析,已知 fosc = 6MHz 则:
(机器周期) 1Tm=12Tc=12/6MHz=2?S
100mS÷ 2 ?S = 50000
16位定时器最大数值为:
216 = 65536 (=0FFFFH+1)
故选择方式 1工作可以满足要求。
计算 初值, 65536- 50000=15536=3CB0H
P141例 2:要求对 T0产生 100mS定时进行初始化。
(晶振 =6MHz)
定时器 (方式 1)应用程序举例:
,单片机原理与应用技术, 教学课件
GATE C / T M1 M0 GATE C / T M1 M0
定时器方式
寄存器 TMOD
由分析得知,T0选择方式 1,初值 =3CB0H
X X X X 0 0 0 1
初始化,MOV TMOD,#01H ;选 T0 方式 1
MOV TH0,#3CH ;赋初值高 8位
MOV TL0,#0B0H ;赋初值低 8位
SETB TR0 ;启动 T0定时
若需要定时器 0产生中断 还应当写如下语句:
SETB ET0 ;开 T0中断允许
SETB EA ;开总中断允许
以及相应的 中断服务程序 。
,单片机原理与应用技术, 教学课件
工作方式 2,——8 位自动重装的定时 /计数器
振荡器 ?12
TLx
(8位 ) TFx
申请
中断
Tx端
TRx位
GATE位
INTx端
≥1
&
C/T=0
C/T=1
控制 =1
开关接通
或门
与门
THx
(8位 )


位门开
,单片机原理与应用技术, 教学课件
? THx/TLx赋相同初值
在 TLx计数达到 0FFH 再加, 1”时,TL0
将溢出,进位位 直接进入, TFx”去申请
中断,同时 打开三态门,使 THx中的值
自动 重装 (Copy)进 TLx
工作方式 2 的编程:
? TMOD寄存器选方式:
写, M1,M0” = 10 b 选中方式 2
? 其他用法与各种方式 1完全相同
,单片机原理与应用技术, 教学课件
分析,fosc = 6MHz
1机器周期 = 2 ?S
1KHz方波周期 = 1 mS
半 个方 波 周期 =500?S
500uS÷ 2 uS = 250
若选择方式 2 工作,8位
定时器最大数值为:
28 =256 =0FFH + 1
可以满足要求。
计算初值, 256- 250=6
P141例 3(改 ):从 P1.0 脚输出频率 =1KHz方波。
设:晶振 =6MHz。利用 T1定时中断。
Th:半周期
T:周期
定时器(方式 2)应用 程序举例:
,单片机原理与应用技术, 教学课件
ORG 0000H
AJMP MAIN
ORG 001BH ; T1的中断矢量
CPL P1.0 ; 中断服务,P1.0取非
RETI ;中断返回
MAIN,MOV TMOD,#20H
MOV TH0,#6
MOV TL0,#6
SETB ET1
SETB EA
SETB TR1
HERE,AJMP HERE ;原地等待中断
END


化;选 T1方式 2;赋 重装值;赋 初值;开 T1中断;开总中断;启动 T1
,单片机原理与应用技术, 教学课件
T0,组织成 TL0和 TH0两个 8位定时 /计数器
Timer工作方式 3 ——几乎无用
T1,不再是 定时 /计数器了
T1 的 TR1和 TF1出借给 TH0当控制位使用,
剩下的 TH1/TL1寄存器只能当作普通寄存
器用。
,单片机原理与应用技术, 教学课件
振荡器 ?12
TL0
(8位 ) TF0
申请
中断
T0端
TR0位
GATE位
INT0端
≥1
&
C/T=0
C/T=1
控制 =1
开关接通
或门
与门
TH0
(8位 ) TF1
申请
中断
TR1位 控制 =1
Timer工作方式 3 结构:
? T0成为双 8位 Timer
? T1不再有 Timer功能
? TF1,TR1出借给 TH0
,单片机原理与应用技术, 教学课件
长定时举例( 设 晶振 =6MHz,要定时 1秒 ),
ORG 0000H ;P.143例 5
AJMP MAIN
ORG 001BH
AJMP TINT ;见下一页
MAIN,MOV TMOD,#10H ;选 T1方式 1
MOV TH1,#3CH ;赋 初值 3CB0H=15536(只能定 100mS)
MOV TL1,#0B0H
MOV 30H,#10 ;软件计数单元 30H 初值 =10
CLR F0 ;芯片复位时已经是, 0”,此句可有可

SETB ET1 ;开 T1中断
SETB EA ;开总中断
SETB TR1 ;启动 T1
HERE,JBC F0,TIMEUP ;原地等待, 1秒到, 的标志 F0
AJMP HERE
TIMEUP:(do something) ;定时 1秒到了以后要做的事情
AJMP HERE
中断
服务
在主
程序

,单片机原理与应用技术, 教学课件
长定时举例(续),
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP TINT
MAIN,…………………
TINT,DJNZ 30H,RTN ;若中断不到 10次就返回
SETB F0 ;已经中断够 10次了, 臵 1”标志位
MOV 30H,#10 ;为下一个 1秒定时做准备
RTN,MOV TH1,#3CH ;再赋定时 100mS的初值 3CB0H
MOV TL1,#0B0H
RETI ;中断返回
END
,单片机原理与应用技术, 教学课件
将此例的中断服务改写 在中断服务程序中,
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP TINT ;见下一页
MAIN,MOV TMOD,#10H ;选 T1方式 1
MOV TH1,#3CH ;赋初值 3CB0H=15536(只能定 100mS)
MOV TL1,#0B0H
MOV 30H,#10 ;软件计数单元 30H 初值 =10
CLR F0 ;芯片复位时已经是, 0”,此句可有可无
SETB ET1 ;开 T1中断
SETB EA ;开总中断
SETB TR1 ;启动 T1
HERE,AJMP HERE ;原地等待中断
,单片机原理与应用技术, 教学课件
长定时举例(续),
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP TINT
MAIN,…………………
TINT,DJNZ 30H,RTN ;若中断不到 10次就返回
MOV 30H,#10 ;为下一个 1秒定时做准备
(do something);定时 1秒到了以后要做的事情 )
RTN,MOV TH1,#3CH ;再赋初值
MOV TL1,#0B0H
RETI ;中断返回
END




,单片机原理与应用技术, 教学课件
定时器小结,( 2个 16位加法计数器)
? 运行 /停止 由 TRx位控制,(当 GATE=1时:
由 TRx位和 Tx引脚上的信号共同控制 )
? 工作方式 由 TMOD决定 ;
计数 /定时 由 C/T位决定
工作方式 0( 13位) 永远不用
工作方式 3( T0拆为双 8位) 几乎 无 用
工作方式 1( 16位) 经常用到
工作方式 2( 8位自动重装) 经常用到
? 从初值按机器周期或外部脉冲递加,溢出位
TFx申请中断 ; 中断允许 由 ETx位和 EA位控制,
,单片机原理与应用技术, 教学课件
串行口与串行通信
,单片机原理与应用技术, 教学课件
串行通信的基本特征是 数据 逐位顺序 进行传送
串行通信的格式及约定(如:同步方式、通讯速
率、数据块格式、信号电平 …… 等)不同,形成
了多种串行通信的协议与接口标准。
常见的有:
? 通用异步收发器 (UART)——本课程介绍的串口
? 通用串行总线( USB)
? I2C总线
? CAN总线
? SPI总线
? RS-485,RS-232C,RS422A标准 …… 等等
第五章 I/O,中断,定时与 串行通信
(P.144)
,单片机原理与应用技术, 教学课件
全双工串行接口 (UART)
? 数据通信的 几个术语:
并行,数据各位 同时 进行传送
串行,数据 逐位顺序 进行传送
? 全双工,(串行通信 )收 /发 可同时 进行
半双工,(串行通信 )收 /发 不可 同时进行
? 异步串行通信,以 字符 为单位进行传送
同步串行通信,以 数据块 为单位进行传送
波特率 (bps.):单位时间传送的位数
,单片机原理与应用技术, 教学课件
51单片机的串行接口 (P.151)
SBUF
(发)
SBUF
(收)
发送控制器 TI
接收控制器 RI
移位寄存器






T1
?1
A



(门 )移位寄存器
RxD
TxD
去申请中断
引脚
引脚
CP
U


,单片机原理与应用技术, 教学课件
串行口的结构
? 两个同名的 接收 /发送缓冲寄存器 SBUF
指令 MOV SBUF,A 启动一次数据发送,可向 SBUF
再发送下一个数
指令 MOV A,SBUF 完成一次数据接收,SBUF可再
接收下一个数
? 接收 /发送数据,无论是否采用中断方式
工作,每接收 /发送一个数据都必须用指
令对 RI/TI 清 0,以备下一次收 /发。
? 串行口相关的 SFR(SCON,PCON)
,单片机原理与应用技术, 教学课件
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
? SM0,SM1,串行口 4种工作方式的选择位。
0 0 方式 0,8位移位寄存器 I/O,波特率 固定 为 fosc/12
0 1 方式 1,8位 UART( 1+8+1位),
波特率 可变,按公式计算
1 0 方式 2,9位 UART( 1+8+1+1位),
波特率 固定 =fosc x1/32或 1/64
1 1 方式 3,9位 UART( 1+8+1+1位),
波特率 可变,按公式计算
? SM2:串行口 多机通信 控制位
(作为方式 2、方式 3的 附加控制位 )
串行口控制寄存器 SCON(98H) P.151
,单片机原理与应用技术, 教学课件
? RI,TI,串行口收 /发数据申请中断标志位
= 1 申请中断; = 0 不申请中断
? TB8,方式 2,3中,是要发送的第 9位数据。
多机通信中,TB8=0 表示发送的是数据;
TB8=1 表示发送的是地址。(奇偶校验)
? RB8,在方式 2,3中,是收到的第 9位数据。
在多机通信中,用作区别地址帧 /数据帧的
标志。(奇偶校验)
SM0 SM1 SM2 REN TB8 RB8 TI R1
? REN,串行口接收允许控制位
= 1 表示允许接收; = 0 禁止接收。
SCON
,单片机原理与应用技术, 教学课件
SMOD — — — GF1 GF0 PD 1DL
电源控制寄存器 PCON( 97H) P.152
——特殊功能寄存器 PCON不能按位寻址 ——
? SMOD,在串行口工作方式 1,2,3 中,
是 波特率加倍位
=1 时,波特率加倍
=0 时,波特率不加倍。
(在 PCON中只有这一个位与串口有关 )
? GF1,GF0,用户可自行定义使用的通用标志位
PCON
,单片机原理与应用技术, 教学课件
? PD:掉电方式控制位
=0:常规工作方式。
=1:进入掉电方式,
?振荡器 停振
?片内 RAM和 SRF的值保持不变
?P0—P3口维持原状。
?程序 停止
只有复位能使之退出掉电方式。
SMOD — — — GF1 GF0 PD IDLPCON
,单片机原理与应用技术, 教学课件
? IDL:待机方式 (空闲方式 )控制位
=0:常规工作方式。
=1:进入待机方式:
?振荡器 继续振荡
?中断, 定时器, 串口 功能继续有效
?片内 RAM和 SRF保持不变
?CPU状态 保持,P0—P3口维持原状
?程序 停顿 。
中断和复位能退出待机,继续后面的程序。
SMOD — — — GF1 GF0 PD 1DLPCON
,单片机原理与应用技术, 教学课件
? PD:掉电控制位
=0:常规方式。
=1:掉电方式,
?振荡器 停振
?片内 RAM和 SRF不变
?P0—P3口维持原状
?程序 停止
只有复位能退出掉电
? IDL:待机控制位
=0:常规方式。
=1:待机方式:
?振荡器 继续振荡
?中断,定时器,串口 有效
?片内 RAM和 SRF不变
?CPU状态,P0—P3维持原状
?程序 停顿 。
中断和复位能退出待机,继
续后面的程序。
SMOD — — — GF1 GF0 PD 1DLPCON
,单片机原理与应用技术, 教学课件
串行口工作方式 0 P.153
工作方式 0,8位移位寄存器 I/O方式
? 发送,SBUF中的串行 数据 由 RxD逐位移出;
TxD输出 移位时钟,频率 =fosc1/12;
?每送出 8位数据 TI就自动臵 1;
?需要用 软件清零 TI。
? 接收:串行 数据 由 RxD逐位移入 SBUF中;
TxD输出 移位时钟,频率 =fosc1/12;
?每接收 8位数据 RI就自动臵 1;
?需要用 软件清零 RI。
,单片机原理与应用技术, 教学课件
? 经常配合,串入并出”“并入串出” 移位
寄存器一起使用扩展接口(第六章)。
? 方式 0工作时,多用查询方式编程:
发送,MOV SBUF,A 接收,JNB RI,$
JNB TI,$ CLR RI
CLR TI MOV A,SBUF
工作方式 0,8位移位寄存器 I/O方式 (续 )
? 复位时,SCON 已经被清零,缺省值, 方式 0。
? 接收前,务必先臵位 REN=1 允许接收数据 。
,单片机原理与应用技术, 教学课件
串行口方式 0的扩展应用 —— 经常用到
串行口常用工作方式 0扩展出并行 I/O口,
工作方式 1,2,3则常用于串行通信
A
B
CLK
h g f e d c b a
CLR AB CLK CLR AB CLK CLR
+5V
74LS164 74LS164 74LS164
74LS164是 串入并出 芯片; 74LS165是 并入串出 芯片
h g f e d c b a h g f e d c b a
+5V
共阳 LED
数码管
VCC
TxD
RxD
51单片机
,单片机原理与应用技术, 教学课件
共阳极
h g f e d c b a
a
b
c
d
g
e
f
h
共阳 LED数码管
公共端 (字位 ) 接高电平,
笔划 (字段 ) 臵为低电平
就被点亮了
h g f e d c b a
累加器 A
1 1 0 0 0 0 0 0
0C0H =,0”
? 比如要显示, 0”
须令 a b c d e f 为, 0”
电平,g h为, 1”电平。
? 再 比如要显示, 3”
须令 a b c d g 为, 0”
电平,e f h为, 1”电平。 1 0 1 1 0 0 0 0
0B0H =,3”
,单片机原理与应用技术, 教学课件
例,利用串行口 工作方式 0扩展出 8位并行 I/O口,
驱动 共阳 LED数码管显示 0—9。
A
B
CLK
h g f e d c b a
CLR
+5V
VCC
TxD
RxD
51单片机
74LS164
共阳 LED
数码管
,单片机原理与应用技术, 教学课件
根据上图编写的通过串行口和
74LS164 驱动共阳 LED数码管
(查表 )显示 0-9数字的子程序:
DSPLY:MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
RET
TABLE:DB 0C0H,0F9H,0A4H
DB 0B0H,99H,92H
DB 82H,0F8H,80H,90H
h g f e d c b a
累加器 A
1 1 0 0 0 0 0 0
0C0H =,0”
1 0 1 1 0 0 0 0
0B0H =,3”
共阳极
h g f e d c b a
a
b
c
d
g
e
f
h
,单片机原理与应用技术, 教学课件
? 常用于串行通讯。除发 /收 8位数据外,还
在 D0位前有一个 起始位, 0”;
在 D7位后有一个 停止位, 1”。
? 方式 1工作时:
发送端 自动添加 一个起始位和一个停止位;
接收端 自动去掉 一个起始位和一个停止位。
工作方式 1:8位 UART(1+8+1位 )波特率 可变
——P.153-154
? 波特率可变
——用定时器 T1作波特率发生器:
公式,波特率 =( 2SMOD/32) ?T1的溢出率
,单片机原理与应用技术, 教学课件
波特率 =(2SMOD/32)?T1的溢出率 ( P155)
? 溢出率,T1溢出的频繁程度
即,T1溢出一次所需时间的倒数。
? 初值 X = 2n - 2
SMOD ? fosc
32 ? 波特率 ? 12
? 波特率 =
2SMOD ? fosc
32 ? 12(2n - X)
其中,X 是定时器初值
,单片机原理与应用技术, 教学课件
? 初值 X = 2n -
2SMOD ? fosc
32 ? 波特率 ? 12
? 例 P157中 计算波特率 的部分:
题目要求用 T1工作于 方式 2来产生波特率 1200,
已知晶振频率 =6MHz。要求出 T1的 初值,
初值 X = 28 -
20 ? 6?106
32 ? 1200 ? 12
= 256 - = 256 - 13.02
6?106
460800
? 243 = 0F3H ——结果后面要用到
,单片机原理与应用技术, 教学课件
? 表格有多种,晶振也不止一种
常用波特率和 T1初值查表 P.156表 (部分 )
串口波特率
(方式 1,3) fosc
SMOD位
(PCON中 )
定时器 T1
C/T 方式 初值
19200 6MHz 1 0 2 0FEH
9600 6MHz 1 0 2 0FDH
4800 6MHz 0 0 2 0FDH
2400 6MHz 0 0 2 0FAH
1200 6MHz 0 0 2 0F4H
600 6MHz 0 0 2 0E8H
110 6MHz 0 0 2 72H
,单片机原理与应用技术, 教学课件
? RxD引脚为 接收端, TxD引脚为 发送 端,由波特率
发生器 T1控制发送速度,不同于方式 0:收 /发都
需要由 TxD送出移位时钟 。
? T1作波特率发生器时 初始化包括,
选 定时器 工作方式 2(TMOD选 8位自动重装 );
将计算 (或查表 )出的 初值 X赋给 TH1,TL1;
启动 T1 (SETB TR1);
对 T1不要开中断 !!
工作方式 1的接收 /发送 P.153-154
? 串行口的初始化包括,
对 SCON选工作方式
对 PCON设波特率加倍位, SMOD”(缺省值 =0)
如果是接收数据,仍要先臵, 1”REN位
,单片机原理与应用技术, 教学课件
MAIN,ORG 0023H
MOV TMOD,#20H SBR1:JNB RI,SEND
MOV TL1,#0F3H LCALL SIN
MOV TH1,#0F3H SJMP NEXT
SETB TR1 SEND:LCALL SOUT
MOV SCON,#50H NEXT:RETI
…………
SETB EA SIN,……
SETB ES RET
LCALL SOUT SOUT:……
SJMP $ RET
P157例,串行通信 方式 1应用
用 T1工作于方式 2,产生波特率 1200bps
,单片机原理与应用技术, 教学课件
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
? SM0,SM1,串行口工作方式选择位。
0 1,方式 1,8位 UART( 1+8+1位)
? REN,串行口 接收允许 位。 REN=1 允许接收
串行口控制寄存器 SCON
0 1 0 1 0 0 0 0
? TB8,RB8,TI,RI等位由运行中间的情况
决定,可先写成, 0”
? SM2,串行口 多机通信 控制位,作为方式 2,3
的 附加控制位,此处不用,可写成, 0”
,单片机原理与应用技术, 教学课件
MAIN,ORG 0023H
MOV TMOD,#20H SBR1:JNB RI,SEND
MOV TL1,#0F3H LCALL SIN
MOV TH1,#0F3H SJMP NEXT
SETB TR1 SEND:LCALL SOUT
MOV SCON,#50H NEXT:RETI
…………
SETB EA SIN,……
SETB ES RET
LCALL SOUT SOUT:……
SJMP $ RET
P157例,串行通信 方式 1应用
用 T1工作于方式 2,产生波特率 1200bps
,单片机原理与应用技术, 教学课件
发送子程序 接收子程序
SOUT,SIN:
MOV A,@R0 MOV A,SBUF
MOV C,P MOV C,P
CPL C CPL C
MOV ACC.7,C ANL A,#7FH
INC R0 MOV @R1,A
MOV SBUF,A INC R1
CLR TI CLR RI
RET RET
P157例 (续 )

除 删除
,单片机原理与应用技术, 教学课件
? 由于波特率固定,常用于 单片机间 通讯。
数据由 8+1位组成,通常附加的一位
(TB8/RB8)用于, 奇偶校验, 。
工作方式 2,——P.154
9位 UART(1+8+1+1位 )两种 波特率
? 方式 2的波特率 = fosc ? 2SMOD/64
即, fosc ?1/32 或 fosc ?1/64 两种
,单片机原理与应用技术, 教学课件
? 奇偶校验 是检验串行通信双方传输的数据正确
与否的 一个措施, 并不能保证通信数据的传输一
定正确 。
换言之:如果 奇偶校验发生错误,表明数据传
输一定出错了;如果奇偶校验没有出错,绝不等
于 数据传输完全正确。
? 奇校验,8位 有效数据连同 1位 附加位中,
二进制, 1”的个数 为 奇数
偶校验,8位 有效数据连同 1位 附加位中,
二进制, 1”的个数 为 偶数
,单片机原理与应用技术, 教学课件
? 约定 接收 采用 奇校验
若接收到的 9位 数据中, 1”的个数为奇数,
则表明接收 正确,取出 8位有效数据即可;
若接收到的 9位 数据中, 1”的个数为 偶数,
则表明接收 出错 !应当进行 出错处理 。
? 约定 发送 采用 奇校验
若 发送 的 8位有效数据中, 1”的个数为 偶数,
则要 人为添加 一个附加位, 1”一起发送;
若 发送 的 8位有效数据中, 1”的个数为 奇数,
则要 人为添加 一个附加位, 0”一起发送。
采用 偶校验 时,处理方法与 奇校验 相反
,单片机原理与应用技术, 教学课件
回顾:
程序状态字寄存器 PSW中有一个 奇偶状态位 P
CY AC F0 RS0 OV PRS1
PSW.7 PSW.0
P (PSW.0):奇偶状态位。
P=1 表示目前累加器中, 1”的个数为 奇数
P=0 表示目前累加器中, 1”的个数为 偶数
CPU随时监视着 Acc的, 1”的个数 并自动反映在 P
工作方式 2 的 奇偶校验用法
,单片机原理与应用技术, 教学课件
? P.154的程序段 选用 偶校验 方式 发送
PIPL,PUSH PSW ;保护现场
PUSH ACC
CLR TI ;清发送中断标志以备下次发送
MOV A,@R0 ;取由 R0所指向的单元中的数据
MOV C,P ;将奇偶标志位通过 C放进 TB8
MOV TB8,C ;一起发送出去
MOV SBUF,A ;启动发送
INC R0 ;指针指向下一个数据单元
POP ACC ;恢复现场
POP PSW
RETI ;中断返回
串口方式 2 的 奇偶校验用法:
,单片机原理与应用技术, 教学课件
? P.154的程序段 选用 偶校验 方式 发送
如果 A 中的数的 1的个数是奇数( P=1),
将 TB8写成, 1”一起发出去;
反之:若( P=0)则写 TB8=“0”发出去。
? P.155的程序段 选用 偶校验 方式 接收
若收到的数中 P=0,且检查到 RB8=0就可能对了
若收到的数中 P=1,且检查到 RB8=1就可能对了
若 P=0且 RB8=1或 P=1且 RB8=0就一定出错了 !
串口方式 2 的 奇偶校验用法:
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
串行口控制寄存器 SCON
B8 R
,单片机原理与应用技术, 教学课件
? P.155程序段 选用 偶校验 方式 接收,
PIPL,PUSH PSW ;保护现场
PUSH ACC
CLR RI ;清发送中断标志以备下次发送
MOV A,SBUF;读进收到的数据
MOV C,P ;奇偶标志位 ?C =JNB P,L1
JNC L1 ;C=0时转到 L1 P=0时转到 L1
JNB RB8,ERR;P=1时转到 L2,若 RB8=0“出错,
SJMP L2 ;RB8=1 则表明接收正确,转 L2
L1,JB RB8,ERR;P=0且 RB8=1表明, 出错,
L2,MOV @R0,A ;P=0且 RB8=0表明接收正确
INC R0 ;指针指向下一个数据单元
POP ACC ;恢复现场
POP PSW ERR:出错处理 ……
RETI ;中断返回 RETI
,单片机原理与应用技术, 教学课件
工作方式 3:当 SM0,SM1为 11时,串行口工作于方式 3
9位 UART(1+8+1+1位 ) 波特率可变
串口方式 3和方式 2唯一的区别是波特率机制不同 。
? 方式 2的波特率固定为时钟周期的 32或 64分频,
不可变。此工作方式与其他串行通讯设备连接困
难,因此不常用。
? 方式 3的 波特率可变,按前面的公式计算:
波特率 =(2SMOD/32)?T1的溢出率 ( P155)
? 波特率 =
2SMOD ? fosc
32 ? 12(2n - X)
其中,X 是定时器初值
,单片机原理与应用技术, 教学课件
OVER !