,单片微机原理及应用,教学课件第三讲:
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
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 !