第3讲-IO-中断-定时-串口_第1页
第3讲-IO-中断-定时-串口_第2页
第3讲-IO-中断-定时-串口_第3页
第3讲-IO-中断-定时-串口_第4页
第3讲-IO-中断-定时-串口_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《单片微机原理及应用》教学课件第三讲:I/O,中断,定时与串口本讲重点:接口概念,单片机的编址与译码方法;

中断概念,响应条件,处理原则,中断服务;

定时器/计数器工作方式1,2的用法;

串行通讯的波特率,4种工作方式.《单片微机原理及应用》教学课件第四章

I/O,中断,定时与串行通信I/O接口的作用/功能/定义

(P67)数据性质不同数据协议/格式不同速度不一致所需功率/电平不匹配所需测控点数量不匹配

计算机/单片机与外设之间起桥梁作用的电路或部件——接口(interface)。

协调两者间的差异。

《单片微机原理及应用》教学课件

本课程中讲到的接口可以是口地址→可寻址的寄存器/端口地址由选用的地址线条数与地址线名决定接口与端口

(InterfaceandPort)☞地址线条数n决定:寻址范围=2nMCS-51寻址范围=216=65536=64K字节☞地址线在地址总线中的序名决定具体地址一个端口可能有多个口地址;一个口地址只能唯一地指向某个端口。→器件→功能模块→电路板卡→设备/装置→……《单片微机原理及应用》教学课件站在单片机/计算机一侧来看待上述过程叫编址。站在单片机/计算机外侧来看待上述过程叫译码。接口地址的编址/译码/寻址概念(P68):通过适当的地址线(或控制线,或I/O线),物理上形成某个或某些片选/使能等信号,实现与接口对象的一一对应的过程。通过软件与译码电路硬件实现对外设的片选或使能控制过程叫寻址。《单片微机原理及应用》教学课件编址是设计过程(在先)译码和寻址是应用过程(在后)对I/O与存储器编址通常有两种方式:☞

独立编址方式:

I/O与存储器分别编址(例如IBM-PC)☞

统一编址方式:

I/O与存储器合在一起编址(单片机应用系统)编址有两种方式

(P.92)<P.68《单片微机原理及应用》教学课件

单片机对外部器件实现一一对应的“片选”通常要用单片机的地址总线A15—A0中的部分或全部,甚至也可以用某些I/O线。A15A14A13A12A11A10A9A8P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0口是低8位地址与数据复用口线选寻址与译码寻址

(P.92)A7/D7A6/D6A5/D5A4/D4A3/D3A2/D2A1/D1A0/D0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2口是高8位地址口。《单片微机原理及应用》教学课件P2.7P2.5P2.6P0口/CE/CE/CEP2.2~2.0RAM

(2K)

A10A9A8P2.5

RAM片选线(0000H—07FFH)P2.2,P2.1,P2.0与P0口共同寻址

2K字节存储单元地址范围:XX0XX00000000000XX0XX11111111111☞

线选寻址:用一条或几条地址线对外寻址

MCS-51单片机AD7-0D7-0D7-0Q7-0Q7-0《单片微机原理及应用》教学课件P2.7P2.5P2.6P0口/CE/CE/CEP2.2-2.0RAM(2K)

A10A9A8P2.7

做输出锁存器的片选线地址范围:0XXXXXXXXXXXXXXXMCS-51单片机AD7-0D7-0D7-0Q7-0P2.6

做输入缓冲器的片选线地址范围:X0XXXXXXXXXXXXXX锁存器缓冲器(例:7FFFH)(例:0BFFFH)《单片微机原理及应用》教学课件P2.7P2.5P2.6/CE/CE/CE常用译码器件:

74LS138:3-8译码器☞

译码寻址:用地址线加译码器件对外寻址

P0.7-P0.074LS138Y0ABCGG2AG2B0#1#2#7#+5VMCS-51Y1Y2Y7/CE74LS139:双2-4译码器《单片微机原理及应用》教学课件单片机的中断系统《单片微机原理及应用》教学课件数据的输入/输出传送方式(P.69)查询传送方式(LOOKUP):传送前一方先查询另一方的状态,若已经准备好就传送,否则就继续查询/等待中断传送方式(IRQ):一方通过申请中断的方式与另一方进行数据传送无条件传送方式:一方对另一方来说总是准备好的直接存储器存取方式(DMA):双方直接通过总线传送数据,不经CPU中转第四章

I/O,中断,定时与串行通信《单片微机原理及应用》教学课件

数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。中断功能强弱是计算机性能优劣的重要标志提高CPU效率解决速度矛盾实现并行工作应付突发事件……中断传送方式特点

《单片微机原理及应用》教学课件①中断源②中断申请③开放中断④保护现场⑤中断服务⑥恢复现场⑦中断返回中断涉及的几个环节(前面提到的甲方)(甲方发出信号提出申请)(乙方同意传送)(安排好当前的工作)(响应乙方的要求)(完事后,回去……)(继续做打断前的工作)《单片微机原理及应用》教学课件单片机的中断源及TCONCPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。51子系列允许5个(52子系列6个)中断源:

2个外部中断请求:INT0,INT12个片内定时器/计数器T0和T1中断请求:

TF0,TF1,(TF2——52子系列有T2)

1个串行口中断请求:TI/RICPU识别中断申请的依据:《单片微机原理及应用》教学课件单片机的中断源及TCONCPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。CPU识别中断申请的依据:TcTsTmTmTc=1/foscTs=6TcTm=12Tc=6TsS5S6S4S3S2S5S6S4S3S2S1——此图见P.10《单片微机原理及应用》教学课件定时器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONTF0/TF1:定时器溢出中断申请标志位:

=0:定时器未溢出;

=1:定时器溢出申请中断,进中断后自动清零。TR0/TR1:定时器运行启停控制位:

=0:定时器停止运行;

=1:定时器启动运行。TCON:Timer控制寄存器,是管理定时器工作的SFR(其中低4位管外部中断)《单片微机原理及应用》教学课件定时器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONIE0/IE1:外部中断申请标志位:

=0:没有外部中断申请;

=1:有外部中断申请。IT0/IT1:外部中断请求的触发方式选择位:

=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效.TCON:Timer控制寄存器,低4位管理外部中断From:/uvision/db_sim_functions.asp《单片微机原理及应用》教学课件在CPU已经开放了外部中断允许的前提下:在INT0/INT1引脚输入一个负脉冲或低电平,TCON寄存器中的IE0/IE1标志位自动变“1”,检测到IE0/IE1变“1”后,将产生指令:

LCALL0003H(/0013H)执行中断服务程序,并将IE0/IE1标志位自动清“0”,以备下次申请。外部中断(INT0,INT1)申请过程阅读P.75例4-2,使用外部中断1。《单片微机原理及应用》教学课件单片机的中断矢量与优先级(P.70)中断矢量:MCS-51单片机的5个中断源分别对应有各自的中断服务程序入口地址——中断矢量000BHTF0定时/计数器0(T0)002BHTF2定时/计数器2(T2)0023HRI/TI串行口接收/发送001BHTF1定时/计数器1(T1)0013HIE1外部中断1(INT1)0003HIE0外部中断0(INT0)中断优先级中断矢量申请标志中断源最高优先级最低优先级表4-5中断矢量表(P.73)《单片微机原理及应用》教学课件

PT2PSPT1

PX1

PT0PX0IPPX0/PX1:INT0/1优先级控制位:

=0

时属低优先级;=1

时属高优先级。PT0/PT1/PT2:T0/1/2中断优先级控制位:

=0

时属低优先级;=1

时属高优先级。PS1:串行口中断优先级控制位:

=0

时属低优先级;=1

时属高优先级。中断优先级控制寄存器IP(0B8H)(P.72)《单片微机原理及应用》教学课件对同时发生多个中断申请时:☞不同优先级的中断同时申请(很难遇到)

——先高后低☞相同优先级的中断同时申请(很难遇到)

——按序执行☞正处理低优先级中断又接到高级别中断

——高打断低☞正处理高优先级中断又接到低级别中断

——高不理低中断优先级处理原则《单片微机原理及应用》教学课件(P.73)☞没有同级的中断或更高级别的中断正在处理;在中断源提出了中断申请且CPU此前已经允许中断的前提下,还须满足以下三个条件:☞正在执行的指令必须执行完最后1个机器周期;☞若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断。响应中断条件!《单片微机原理及应用》教学课件

EA

—ET2ESET1EX1ET0EX0IE中断允许寄存器IE(0A8H)

EX0/EX1/ET1/ET0/ES位:分别是INT0/1,Timer0/1,串行口的中断允许控制位:

=0时禁止中断;=1

时允许中断。ET2:T2中断允许控制位(仅52子系列有)

=0时禁止中断;=1

时允许中断。EA:总的中断允许控制位(总开关):

=0时禁止全部中断;=1

时允许中断。(P.71)《单片微机原理及应用》教学课件中断系统硬件结构(P.74)注:各中断允许控制位=0,开关断开;=1,开关接通IE0EX0TF0IE1TF1TIESET1EX1ET0外部中断请求0外部中断请求1内部定时器0内部定时器1内部串行口TRRIIE寄存器EA位IP寄存器各单路开关总开关中断源标志位查询机构高中断级中断请求低中断级中断请求中断入口中断源标志位INT0INT1中断入口中断源标志位10《单片微机原理及应用》教学课件外部中断及中断请求的撤除(P.71)低电平/负脉冲→INT0/INT1引脚可触发中断TF1TR1TF0TR0IE1

IT1IE0IT0TCON(88H)IT0/IT1:INT0/1的触发方式选择位:

IT0/IT1=0

时,INT0/INT1是低电平有效;

IT0/IT1=1

时,INT0/INT1是负跳变有效。低电平触发引脚上的低电平须持续到中断发生。若中断返回前仍未及时撤除低电平,将再次中断。负脉冲触发CPU在前一机器周期采到INT0/INT1引脚为高,后一机器周期采到为低才认为是一次中断请求。CPU可记忆申请、可自动撤除中断申请。《单片微机原理及应用》教学课件外部低电平中断的撤除外来的低电平→反相→CLK端产生上跳沿→D端的“0”打到Q端→申请中断INTxP1.0CLKSQD外来中断申请信号(低电平)MCS-5174LS74S=0则Q=1中断返回前对P1.0送“0”

→令Q端变为“1”指令如下:

ANLP1,#0FEH=CLRP1.0;令Q端置“1”

ORLP1,#01H=SETBP1.0;令S端置“1”,以免下次中断来时Q端不能变“0”《单片微机原理及应用》教学课件中断应用前后要做的几项工作

中断前开中断允许:必须选择优先级:根据需要选择,可有/可无设置控制位:INTx—触发方式(ITx)

Tx—TCON,TMOD,TRx,初值……

RI/TI—SCON,REN,RB8,TB8,……中断后进入中断服务后:保护现场,关中断,……退出中断服务前:恢复现场,开中断,设Tx的初值,清TI/RI,……中断服务程序的最后一条指令必是RETI《单片微机原理及应用》教学课件中断应用程序举例:P.75例4-2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。

已知:(B)=01h,要求采用边沿触发,低优先级。此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。《单片微机原理及应用》教学课件中断应用程序举例:P75例4-2:通过外部中断1,在中断服务中将B寄存器里的内容左环移一位。

已知:(B)=01h,要求采用边沿触发,低优先级。此例的实际意义:在INT1引脚接一个按钮开关到地,每按一下按钮就申请一次中断,中断服务则是:依次点亮八盏灯中的一盏。P1.0P1.7INT1300《单片微机原理及应用》教学课件

ORG0000HLJMPMAIN

ORG0013H;中断矢量

LJMPINTMAIN:SETBEA;开总中断允许“开关”

SETBEX1;开分中断允许“开关”

CLRPX1;0优先级(也可不要此句)

SETBIT1;边沿触发

MOVB,#01H;给B

寄存器赋初值HERE:SJMPHERE;原地等待中断申请INT:MOVA,B;自B寄存器中取数

RLA;左环移一次

MOVB,A;存回B,备下次取用

(MOVP1,A);输出到P1口

RETI;中断返回中断服务程序《单片微机原理及应用》教学课件单片机的定时/计数器《单片微机原理及应用》教学课件2个16位定时器/计数器

——(52系列有3个16位Timer)定时器:对片内机器时钟(周期方波)进行计数计数器:对Tx引脚输入的负脉冲进行计数与Timer工作有关的特殊功能寄存器:

TCON和

TMOD第四章I/O,中断,定时与串行通信P.75《单片微机原理及应用》教学课件Timer的2个特殊功能寄存器(TCON,TMOD)TF1TR1TF0TR0IE1IT1IE0IT0定时器控制寄存器TCON(88H)P.76TFx: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”后,将产生指令:

LCALL000BH/LCALL001BH

执行中断服务程序,

TF0/TF1标志位会自动清“0”,以备下次中断申请。

定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数TF1TR1TF0

TR0

IE1IT1IE0IT0TCON(88H)《单片微机原理及应用》教学课件GATEC/T

M1

M0GATEC/T

M1

M0定时器方式寄存器TMOD(89H)P.76T1T0M1,M0:工作方式定义位(定义4种方式):C/T:计数器/定时器选择位

=1外部事件计数器。对Tx引脚的负脉冲计数;

=0片内时钟定时器。对机器周期脉冲计数定时00:13位Timer——用它无益,不要记它!01:16位Timer——经常用到10:可自动重装的8位Timer——经常用到11:T0分为2个8位Timer;T1此时不工作

——因为没有带来甚麽好处,几乎无用《单片微机原理及应用》教学课件GATEC/TM1M0GATEC/TM1M0T1T0GATE门控位:Timer可由软件与硬件两者控制

GATE=0——普通用法

Timer的启/停由软件对TRx位写“1”/“0”控制定时器方式寄存器TMOD(续)(89H)

GATE=1——门控用法

Timer的启/停由软件对TRx位写“1”/“0”

和在INTx引脚上出现的信号的高/低共同控制《单片微机原理及应用》教学课件阅读书上定时器应用程序举例:P.78例1:

晶振=6MHz,估算Timer的定时时长(max,min)P.80例3:

要求对T0产生250μS定时进行初始化。(晶振=6MHz)P.80例4:

产生T=2mS方波(试改为方式2)P.80例4:

请改为方式1为2再阅读,务请大家不要陷入方式0的困惑之中!P.81例5:定时1秒(晶振=12MHz)《单片微机原理及应用》教学课件定时器结构与工作方式

P.78工作方式1:——16位的定时/计数器振荡器12TLx

THx(8位)(8位)TFx申请中断Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制=1开关接通或门与门见P.78图4-4《单片微机原理及应用》教学课件

THx/TLx赋初值:THx赋高8位,TLx赋低8位;工作方式1的编程要点:P.79

TMOD选方式:写“M1,M0”=01b选方式1;

若不用门控位,直接用软件写TRx控制启/停

若使用门控位,先置位TRx,然后由INTx端的高/低电平来控制其启/停;

若要允许中断,还须先置位ETx、EA等中断允许控制位,并编写中断服务程序;

(如P80例4-3,工作方式2)

若不用中断,可查询“计数溢出标志TFx”

的方式工作,但溢出标志TFx须软件清0;

(如P80例4-4,工作方式1)《单片微机原理及应用》教学课件定时器(方式1)应用程序举例:分析:已知fosc

=6MHz则:(振荡周期)1Tc=1/6MHz

(机器周期)1Tm=12Tc=12/6MHz=2S

粗略地说:Tmin2S16位定时器最大数值为:216=65536=0FFFFH+1

故选择方式1

工作可以得到:

Tmax=655362=131072S=131.072mSP.78例1:若晶振频率为6MHz,计算单片机的最小与最大定时时间:《单片微机原理及应用》教学课件分析:已知fosc

=6MHz则:(机器周期)1Tm=12Tc=12/6MHz=2S100mS÷2S=5000016位定时器最大数值为:

216=65536(=0FFFFH+1)

故选择方式1工作可以满足要求。计算初值:65536-50000=15536=3CB0HP.80例4-3(改):要求对T0产生100mS定时进行初始 化。(晶振=6MHz)定时器(方式1)应用程序举例:***注:教材只需延长时间250us即可,采用工作方式2

可以满足需要!《单片微机原理及应用》教学课件GATEC/TM1M0GATEC/TM1M0定时器方式寄存器TMOD由分析得知:T0选择方式1,初值=3CB0H

XXXX0001初始化:MOVTMOD,#01H;选T0方式1

MOVTH0,#3CH;赋初值高8位

MOVTL0,#0B0H;赋初值低8位

SETBTR0;启动T0定时若需要定时器0产生中断还应当写如下语句:

SETBET0;开T0中断允许

SETBEA;开总中断允许以及相应的中断服务程序。《单片微机原理及应用》教学课件工作方式2:——8位自动重装的定时/计数器振荡器12TLx(8位)TFx申请中断Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制=1开关接通或门与门THx(8位)溢出位门开图4-5工作方式2电路逻辑结构图《单片微机原理及应用》教学课件☞THx/TLx赋相同初值在TLx计数达到0FFH再加“1”时,TL0

将溢出,进位位直接进入“TFx”去申请中断,同时打开三态门,使THx中的值自动重装(Copy)进TLx工作方式2的编程:☞TMOD寄存器选方式:写“M1,M0”=10

b选中方式2☞其他用法与各种方式1完全相同《单片微机原理及应用》教学课件分析:fosc

=6MHz1机器周期=2S

1KHz方波周期=1mS

半个方波周期=500S500uS÷2uS=250若选择方式2工作,8位定时器最大数值为:

28=256=0FFH+1可以满足要求。计算初值:256-250=6P.80例4-3(改):从P1.0脚输出频率=1KHz方波。设:晶振=6MHz。利用T1定时中断。Th:半周期T:周期定时器(方式2)应用程序举例:《单片微机原理及应用》教学课件

ORG0000HAJMPMAIN

ORG001BH;T1的中断矢量

CPLP1.0;中断服务:P1.0取非

RETI;中断返回MAIN:MOVTMOD,#20HMOVTH0,#6MOVTL0,#6SETBET1SETBEASETBTR1HERE:AJMPHERE;原地等待中断

END初始化;选T1方式2;赋重装值;赋初值;开T1中断;开总中断;启动T1《单片微机原理及应用》教学课件T0:

组织成TL0和TH0两个8位定时/计数器Timer工作方式3——几乎无用T1:不再是定时/计数器了

T1

的TR1和TF1出借给TH0当控制位使用,

剩下的TH1/TL1寄存器只能当作普通寄存器用。《单片微机原理及应用》教学课件振荡器12TL0(8位)TF0申请中断T0端TR0位GATE位INT0端≥1&C/T=0C/T=1控制=1开关接通或门与门TH0(8位)TF1申请中断TR1位控制=1Timer工作方式3结构:☞T0成为双8位Timer

☞T1不再有Timer功能☞TF1,TR1出借给TH0

☞TH1/TL1当普通寄存器用《单片微机原理及应用》教学课件长定时举例(设晶振=6MHz,要定时1秒):ORG0000H ;P.81例5(改)

AJMPMAIN ;教材采用12MHz

ORG001BH ;延时50ms

AJMPTINT;见下一页MAIN:MOVTMOD,#10H;选T1方式1MOVTH1,#3CH;赋初值3CB0H=15536(只能定100mS)MOVTL1,#0B0H;前面讲过

MOV30H,#10;软件计数单元30H初值=10

CLRF0;芯片复位时已经是“0”,此句可有可无

SETBET1;开T1中断

SETBEA;开总中断

SETBTR1;启动T1HERE:JBCF0,TIMEUP;原地等待“1秒到”的标志F0AJMPHERETIMEUP:(dosomething);定时1秒到了以后要做的事情

AJMPHERE中断服务在主程序中《单片微机原理及应用》教学课件长定时举例(续):

ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中断不到10次就返回

SETBF0;已经中断够10次了“置1”标志位

MOV30H,#10;为下一个1秒定时做准备RTN: MOVTH1,#3CH;再赋定时100mS的初值3CB0H MOVTL1,#0B0HRETI;中断返回

END《单片微机原理及应用》教学课件将此例的中断服务改写在中断服务程序中:

ORG0000HAJMPMAINORG001BHAJMPTINT;见下一页MAIN:MOVTMOD,#10H;选T1方式1MOVTH1,#3CH;赋初值3CB0H=15536(只能定100mS)MOVTL1,#0B0HMOV30H,#10;软件计数单元30H初值=10CLRF0;芯片复位时已经是“0”,此句可有可无

SETBET1;开T1中断

SETBEA;开总中断

SETBTR1;启动T1HERE:AJMPHERE;原地等待中断《单片微机原理及应用》教学课件长定时举例(续):ORG0000HAJMPMAINORG001BHAJMPTINTMAIN:…TINT:DJNZ30H,RTN;若中断不到10次就返回

MOV30H,#10;为下一个1秒定时做准备(dosomething);定时1秒到了以后要做的事情)RTN:MOVTH1,#3CH;再赋初值

MOVTL1,#0B0HRETI;中断返回

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.82)《单片微机原理及应用》教学课件全双工串行接口(UART)☞数据通信的几个术语:

并行:数据各位同时进行传送

串行:数据逐位顺序进行传送☞全双工:(串行通信)收/发可同时进行半双工:(串行通信)收/发不可同时进行☞异步串行通信:以字符为单位进行传送同步串行通信:以数据块为单位进行传送波特率(bps.):单位时间传送的位数《单片微机原理及应用》教学课件51单片机的串行接口(P.82)SBUF(发)SBUF(收)发送控制器TI接收控制器RI移位寄存器波特率发生器T11A累加器(门)移位寄存器RxDTxD去申请中断引脚引脚CPU内部MOVA,SBUFMOVSBUF,A《单片微机原理及应用》教学课件串行口的结构☞两个同名的接收/发送缓冲寄存器SBUF(99H)

指令MOVSBUF,A

启动一次数据发送,可向SBUF

再发送下一个数指令MOVA,SBUF

完成一次数据接收,SBUF可再接收下一个数☞接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对RI/TI

清0,以备下一次收/发。☞串行口相关的SFR(SCON,PCON)《单片微机原理及应用》教学课件

SM0SM1

SM2RENTB8RB8

TIRISCON☞SM0,SM1:串行口4种工作方式的选择位。

00方式0:8位移位寄存器I/O,波特率固定为fosc/12

01方式1:8位UART(1+8+1位),

波特率可变,按公式计算

10方式2:9位UART(1+8+1+1位),

波特率固定=foscx1/32或1/64

11方式3:9位UART(1+8+1+1位),

波特率可变,按公式计算☞

SM2:串行口多机通信控制位

(作为方式2、方式3的附加控制位)串行口控制寄存器SCON(98H)P.83《单片微机原理及应用》教学课件☞

RI,TI:串行口收/发数据申请中断标志位=1申请中断;=0不申请中断☞

TB8:方式2、3中,是要发送的第9位数据。多机通信中,TB8=0表示发送的是数据;

TB8=1表示发送的是地址。(奇偶校验)☞

RB8:在方式2、3中,是收到的第9位数据。在多机通信中,用作区别地址帧/数据帧的标志。(奇偶校验)

SM0SM1

SM2RENTB8RB8

TIR1☞

REN:串行口接收允许控制位

=1表示允许接收;=0禁止接收。SCON《单片微机原理及应用》教学课件SMOD———GF1GF0PD

IDL电源控制寄存器

PCON(97H)P.83——特殊功能寄存器PCON不能按位寻址——☞

SMOD:在串行口工作方式1、2、3中,

是波特率加倍位

=1时,波特率加倍

=0时,波特率不加倍。

(在PCON中只有这一个位与串口有关)

GF1,GF0:用户可自行定义使用的通用标志位PCON《单片微机原理及应用》教学课件☞

PD:掉电方式控制位

=0:常规工作方式。

=1:进入掉电方式:

振荡器停振

片内RAM和SRF的值保持不变

P0—P3口维持原状。程序停止

只有复位能使之退出掉电方式。

SMOD———GF1GF0

PDIDLPCON《单片微机原理及应用》教学课件☞

IDL:待机方式(空闲方式)控制位

=0:常规工作方式。

=1:进入待机方式:振荡器继续振荡

中断、定时器、串口功能继续有效

片内RAM和SRF保持不变

CPU状态保持、P0—P3口维持原状

程序停顿。

中断和复位能退出待机,继续后面的程序。SMOD———GF1GF0

PD1DLPCON《单片微机原理及应用》教学课件☞

PD:掉电控制位

=0:常规方式。

=1:掉电方式:振荡器停振片内RAM和SRF不变P0—P3口维持原状程序停止只有复位能退出掉电

IDL:待机控制位

=0:常规方式。

=1:待机方式:振荡器继续振荡中断,定时器,串口有效片内RAM和SRF不变CPU状态,P0—P3维持原状程序停顿。中断和复位能退出待机,继续后面的程序。SMOD———GF1GF0

PDIDLPCON《单片微机原理及应用》教学课件串行口工作方式0

P.84工作方式0:8位移位寄存器I/O方式☞发送:SBUF中的串行数据由RxD逐位移出;

TxD输出移位时钟,频率=fosc1/12;

每送出8位数据TI就自动置1;

需要用软件清零

TI。☞接收:串行数据由RxD逐位移入SBUF中;

TxD输出移位时钟,频率=fosc1/12;

每接收8位数据RI就自动置1;

需要用软件清零RI。《单片微机原理及应用》教学课件☞经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口(第6章)。

☞方式0工作时,多用查询方式编程:

发送:MOVSBUF,A接收:JNBRI,$JNBTI,$CLRRI

CLRTIMOVA,SBUF工作方式0:8位移位寄存器I/O方式(续)☞复位时,SCON

已经被清零,缺省值:方式0。☞接收前,务必先置位

REN=1允许接收数据。《单片微机原理及应用》教学课件串行口方式0的扩展应用——经常用到串行口常用工作方式0扩展出并行I/O口,工作方式1、2、3则常用于串行通信ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS16474LS164是串入并出芯片;74LS165是并入串出芯片hgfedcbahgfedcba+5V共阳LED数码管VCCTxDRxD51单片机《单片微机原理及应用》教学课件共阳极hgfedcbaabcdgefh共阳LED数码管公共端(字位)

接高电平,笔划(字段)

置为低电平就被点亮了hgfedcba累加器A110000000C0H=“0”☞比如要显示“0”

须令abcdef为“0”

电平,gh为“1”电平。☞再比如要显示“3”

须令abcdg为“0”

电平,efh为“1”电平。101100000B0H=“3”《单片微机原理及应用》教学课件例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示0—9。ABCLKhgfedcbaCLR+5VVCCTxDRxD51单片机74LS164共阳LED数码管《单片微机原理及应用》教学课件根据上图编写的通过串行口和74LS164驱动共阳LED数码管(查表)显示0-9数字的子程序:DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90Hhgfedcba累加器A110000000C0H=“0”101100000B0H=“3”共阳极hgfedcbaabcdgefh《单片微机原理及应用》教学课件☞常用于串行通讯。除发/收8位数据外,还在D0位前有一个起始位“0”;在D7位后有一个停止位“1”。☞方式1工作时:发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。工作方式1:8位UART(1+8+1位)波特率可变

——P.84☞波特率可变

——用定时器T1作波特率发生器:公式:波特率=(2SMOD/32)T1的溢出率《单片微机原理及应用》教学课件波特率=(2SMOD/32)T1的溢出率(P.85)☞

溢出率:T1溢出的频繁程度即:T1溢出一次所需时间的倒数。☞

初值X=2n

-

2SMOD

fosc32

波特率

12☞

波特率

=2SMOD

fosc32

12(2n

-X)其中:X是定时器初值《单片微机原理及应用》教学课件☞

初值X=2n-

2SMOD

fosc32波特率

12☞

P.86例4-6中计算波特率的部分:题目要求用T1工作于方式2来产生波特率1200,已知晶振频率=6MHz。要求出T1的初值:初值X=28

-

20

610632

1200

12=256-

=256-13.026106460800243=0F3H——结果后面要用到注:教材采用SMOD=1,波特率倍增!《单片微机原理及应用》教学课件

☞表格有多种,晶振也不止一种常用波特率和T1初值查表P.85表(部分)串口波特率(方式1,3)foscSMOD位(PCON中)定时器T1C/T方式初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H《单片微机原理及应用》教学课件☞RxD引脚为接收端,TxD引脚为发送端,由波特率发生器T1控制发送速度,不同于方式0:收/发都需要由TxD送出移位时钟。

☞T1作波特率发生器时初始化包括:

选定时器工作方式2(TMOD选8位自动重装);

将计算(或查表)出的初值X赋给TH1,TL1;

启动T1(SETBTR1);

对T1不要开中断

!!工作方式1的接收/发送P.84☞串行口的初始化包括:

对SCON选工作方式对PCON设波特率加倍位“SMOD”(缺省值=0)

如果是接收数据,仍要先置“1”REN位

《单片微机原理及应用》教学课件MAIN:ORG0023H

MOVTMOD,#20HSBR1:JNBRI,SEND

MOVTL1,#0F3HLCALLSIN

MOVTH1,#0F3HSJMPNEXT

SETBTR1SEND:LCALLSOUT

MOVSCON,#50HNEXT:RETI

…………SETBEASIN:……SETBESRETLCALLSOUT

SOUT:……SJMP$RETP86例:串行通信方式1应用用T1工作于方式2,产生波特率1200bps《单片微机原理及应用》教学课件

SM0SM1

SM2RENTB8RB8

TIR1SCON☞SM0,SM1:串行口工作方式选择位。

01:方式1,8位UART(1+8+1位)☞

REN:串行口接收允许位。REN=1允许接收串行口控制寄存器SCON

01

0

10000☞

TB8,RB8,TI,RI等位由运行中间的情况决定,可先写成“0”☞

SM2:串行口多机通信控制位,作为方式2、3

的附加控制位,此处不用,可写成“0”《单片微机原理及应用》教学课件MAIN:ORG0023H

MOVTMOD,#20HSBR1:JNBRI,SEND

MOVTL1,#0F3HLCALLSIN

MOVTH1,#0F3HSJMPNEXT

SETBTR1SEND:LCALLSOUT

MOVSCON,#50HNEXT:RETI

…………SETBEASIN:……SETBESRETLCALLSOUT

SOUT:……SJMP$RETP86例:串行通信方式1应用

用T1工作于方式2,产生波特率1200bps《单片微机原理及应用》教学课件发送子程序接收子程序SOUT:

SIN:

MOVA,@R0MOVA,SBUF

MOVC,PMOVC,PCPLCCPLC

MOV

ACC.7,C

ANLA,#7FH

INCR0MOV@R1,AMOVSBUF,AINCR1CLRTICLRRIRETRETP86例

(续)删除删除注:《单片微机原理及应用》张毅坤等主编《单片微机原理及应用》教学课件☞由于波特率固定,常用于单片机间通讯。数据由8+1位组成,通常附加的一位

(TB8/RB8)用于“奇偶校验”。工作方式2:——P.84

9位UART(1+8+1+1位)两种波特率☞方式2的波特率=fosc2SMOD/64

即:fosc1/32或fosc1/64两种《单片微机原理及应用》教学课件☞奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。换言之:如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。☞奇校验:8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论