版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章第六章 定时器定时器/ /计数器与串行通信口计数器与串行通信口定时器定时器/ /计数器学习目标计数器学习目标 v定时器定时器/ /计数器的结构及原理计数器的结构及原理v定时器定时器/ /计数器的各种工作方式计数器的各种工作方式v掌握定时器计数器的应用掌握定时器计数器的应用6.1.1 6.1.1 定时定时/ /计数器的基本原理计数器的基本原理 1. 1. 定时功能定时功能-计数输入信号是内部时钟脉计数输入信号是内部时钟脉冲,每个冲,每个机器周期机器周期使寄存器的值加使寄存器的值加1 1。所以,。所以,计数频率是振荡频率的计数频率是振荡频率的1/121/12。2. 2. 计数功能计数功能-计
2、数脉冲来自相应的计数脉冲来自相应的外部输入外部输入引脚,引脚,T0T0为为P3.4P3.4,T1T1为为P3.5P3.5。当输入脉冲信号。当输入脉冲信号从从1 1到到0 0的的负跳变负跳变时,计数器就自动加时,计数器就自动加1 1。计数的。计数的最高频率为振荡频率的最高频率为振荡频率的1/241/24。定时定时/ /计数器的计数器的核心部件核心部件是是二进制加二进制加1 1计数器计数器(TH0(TH0、TL0TL0或或TH1TH1、TL1) TL1) 。6.1.2 6.1.2 定时器计数器的控制寄存器定时器计数器的控制寄存器 1 1启启/ /停与中断控制寄存器停与中断控制寄存器TCONTCON
3、 (88H88H) D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0中断请求标志触发方式选择触发方式选择启动定时启动定时/ /计数器计数器0 低电平低电平1 下降沿下降沿0 停止停止1 启动启动 TCONTCON可可位位寻址,字节地址是寻址,字节地址是88H88H,复位复位时所有位时所有位清零清零。低。低4 4位与外部中断有关,已介绍。高位与外部中断有关,已介绍。高4 4位的功位的功能如下:能如下: (1) (1) TF1TF1、TF0TF0计数溢出标志位,计数计数溢出标志位,计数溢出时溢出时由由硬件硬件自动自动置置1 1,向,向CPUCPU请求中
4、断,当请求中断,当CPUCPU响应时,由响应时,由硬件清硬件清0 0。 (2) (2) TR1TR1、TR0TR0计数运行控制位计数运行控制位 1 1:启动定时器:启动定时器/ /计数器工作计数器工作 0 0:停止定时器:停止定时器/ /计数器工作计数器工作 2 2工作方式控制寄存器工作方式控制寄存器TMOD TMOD (89H89H) 控 制 T1控 制 T0和T 类同001与INT 无关00与INT 有关01定时器模式计数器模式GATEC/TM10MGATE C/TMM89H101M0M00011011方 式方式0方式1方式2方式3GATEGATE门控位门控位 v0 0:以运行控制位:以运
5、行控制位TRTRX X(X=0,1X=0,1)来)来启动启动定时器定时器/ /计计数器运行。数器运行。v1 1:TRTRX X=1=1且且中断引脚中断引脚( (INT0INT0或或INT1INT1) )上为上为高电平高电平时,时,启动启动定时器定时器/ /计数器运行。计数器运行。计数脉冲输入6.1.3 6.1.3 定时器计数器的工作方式(定时器计数器的工作方式(4 4种)种) 1. 1. 方式方式013013位方式位方式 TFXTXTRXGATEINTX11&C/T=1振荡器1/12C/T=0TLX THX8位低5位13位计数器定时器计数器2. 2. 方式方式116116位方式位方式 振荡器1
6、/12TLX THXTFX11&TXTRXGATEINTXC/T=0C/T=18位8位16位计数器3. 3. 方式方式2828位自动装入时间常数方式位自动装入时间常数方式 TFX振荡器1/1211&TXTRXGATEINTXC/T=0C/T=1TLX THX初值初值同时同时送送THTHX X、TLTLX X,启动后可,启动后可无限次无限次运行,常用运行,常用于于串行口波特率串行口波特率的产生。的产生。 去串口去串口4. 4. 方式方式3232个个8 8位方式位方式 只适用只适用于定时器于定时器/ /计数器计数器T0T0 。此时。此时T1T1可用来作可用来作串行口波特率产生器。串行口波特率产生器
7、。 T0T0分为两个独立的分为两个独立的8 8位计数器位计数器: :TL0TL0和和TH0TH0 。TL0TL0使用使用T0T0的状态控制位的状态控制位C/TC/T* *、GATEGATE、TR0TR0、,而、,而TH0TH0被被固定为固定为一个一个8 8位位定时器定时器(不不能作外部计数模式),能作外部计数模式),并使用定时器并使用定时器T1T1的状态控制位的状态控制位TR1TR1和和TF1TF1。 各引脚与各引脚与T0T0的逻辑关系如图所示:的逻辑关系如图所示: 当当T1T1用作用作串行口的串行口的波特率发生器时,波特率发生器时,T0T0才工作才工作在方式在方式3 3。T0T0处于方式处于
8、方式3 3时,时, T1T1可定为方式可定为方式0 0、方式、方式1 1和方式和方式2 2,用来作为串行口的波特率发生器(通常,用来作为串行口的波特率发生器(通常设置成方式设置成方式2 2 ),或不需要中断的场合。),或不需要中断的场合。 6.1.4 6.1.4 定时定时/ /计数器常数的计算计数器常数的计算1 1计数器初值的计算计数器初值的计算把计数器计满为零所需要的计数值设定为把计数器计满为零所需要的计数值设定为C C,计,计数初值设定为数初值设定为TCTC,由此可得到公式:,由此可得到公式:TCTC= =M M- -C C式中,式中,M M为计数器模值,该值和计数器工作方式为计数器模值,
9、该值和计数器工作方式有关。在方式有关。在方式0 0时时M M为为213;在方式;在方式1 1时时M M为为216;在;在方式方式2 2和方式和方式3 3时时M M为为28。把计数值换算成二进制装入把计数值换算成二进制装入THTHX X、TLTLX X中。中。2 2定时器初值的计算定时器初值的计算 在定时器模式下,计数器由单片机主脉冲经在定时器模式下,计数器由单片机主脉冲经1212分频后计数。因此,定时器定时时间分频后计数。因此,定时器定时时间T T的公式:的公式:T=T=(M-TM-TC C)T TP P 上式也可写成:上式也可写成:T TC C=M-T/T=M-T/TP P M M:模值,和
10、定时器的工作方式有关;:模值,和定时器的工作方式有关; T TP P:单片机的机器周期(振荡周期:单片机的机器周期(振荡周期T TCLKCLK的的1212倍);倍);T TC C:定时器的定时初值。:定时器的定时初值。 例例:方式:方式1 1,定时时间为,定时时间为5ms,5ms,主频为主频为6MHz6MHz,求计数,求计数初值?初值?3.3.初始化设置顺序初始化设置顺序工作方式控制字工作方式控制字TMODTMOD的设置;的设置;计数计数初值初值的装入;的装入;开中断开中断;启启/ /停停位的设置等。位的设置等。 6.1.5 6.1.5 定时器定时器/ /计数器的编程和应用计数器的编程和应用
11、由于由于方式方式0 0是为兼容是为兼容MCS-48MCS-48而设,其计数初值而设,其计数初值计算复杂,在实际应用中,一般不用方式计算复杂,在实际应用中,一般不用方式0 0,而采,而采用方式用方式1 1。一、方式一、方式1 1应用应用 例:假设系统时钟频率采用例:假设系统时钟频率采用6MHz6MHz,要在,要在P1.0P1.0上输出一上输出一个周期为个周期为2ms2ms的方波,如图所示。的方波,如图所示。 设:需要装入设:需要装入T0T0的初值为的初值为X X,则有,则有: :(2(21616-X)-X)2 21010-6-6=1=11010-3-3 2 21616-X=500 X=65036
12、-X=500 X=65036 X X化为化为1616进制,即进制,即X=FE0CH=1111111000001100BX=FE0CH=1111111000001100B。 所以,所以,T0T0的初值为:的初值为: TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH (1) (1)计算初值计算初值 (2)(2)初始化程序设计初始化程序设计 (3) (3)程序设计程序设计 中断服务程序除了完成要求的产生方波这一工作中断服务程序除了完成要求的产生方波这一工作之外,之外,还要还要注意将计数注意将计数初值重新装入初值重新装入定时器中,为定时器中,为下一次产生中断作准备。下一次产生中断作准备
13、。 参考程序:参考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;转主程序;转主程序 ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 AJMP IT0PAJMP IT0P ;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#01HMOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 ACALL PT0M0ACALL PT0M0;调用子程
14、序;调用子程序PT0M0PT0M0HERE: AJMP HERE HERE: AJMP HERE ;自身跳转;自身跳转PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH;T0T0初始化程序,初始化程序,T0T0置初值置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;启动;启动T0T0 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开中断开中断 RETRETITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中断服务子程
15、序,中断服务子程序,T0T0重置初重置初值值 MOV TH0,#0FEHMOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的状态取反的状态取反 RETIRETI例:例:假设系统时钟为假设系统时钟为6MHz6MHz,编写定时器编写定时器T0T0产生产生1 1秒定秒定时的程序。时的程序。(1 1)定时器)定时器T0T0工作方式的确定工作方式的确定因定时时间较长,采用哪一种工作方式?由定时器各因定时时间较长,采用哪一种工作方式?由定时器各种工作方式的特性,可计算出:种工作方式的特性,可计算出: 方式方式0 0最长可定时最长可定时16.384ms16.384ms; ;
16、方式方式1 1最长可定时最长可定时131.072ms;131.072ms; 方式方式2 2最长可定时最长可定时512512 s s。选方式选方式1 1,每隔,每隔100ms100ms中断一次,中断中断一次,中断1010次为次为1s1s。 (2 2)计算计数初值)计算计数初值因为:因为:(2(21616-X)-X)2 21010-6 -6 = 10= 10-1-1所以:所以:X=15536=3CB0HX=15536=3CB0H因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H (3 3)1010次计数的实现次计数的实现 对于中断对于中断1010次计数,采用次计数,采用循环程
17、序循环程序的方法实现。的方法实现。(4 4)程序设计)程序设计 参考程序参考程序 : : ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;上电,转主程序入口;上电,转主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P ;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60HMOV SP,#60H;设堆栈指针;设堆栈指针 MOV B,#0AHMOV B,#0AH;设循环次数;设
18、循环次数1010次次 MOV TMOD,#01H MOV TMOD,#01H;设;设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;给;给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CH SETB TR0 SETB TR0 ;启动;启动T0T0 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断 HEREHERE: SJMP HERESJMP HERE ;等待中断;等待中断 ITOPITOP: MOV TL0,#0B0H MOV TL0,#0B0H
19、;中断子程序,重装初值;中断子程序,重装初值 MOV TH0,#3CH MOV TH0,#3CH ; DJNZ BDJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定时时间到,停止定时时间到,停止T0T0工作工作 LOOPLOOP: RETI RETI 例:例:利用定时器利用定时器T1T1的的方式方式2 2对外部信号计数,要求每计对外部信号计数,要求每计满满100100个数,将个数,将P1.0P1.0取反。取反。 (1 1)选择工作方式)选择工作方式 外部信号由外部信号由T1(P3.5) T1(P3.5) 脚输入脚输入, ,每发生一次每发生一次负跳变负跳变计数器加计数器
20、加1 1,每输入,每输入100100个脉冲,计数器产生溢出中个脉冲,计数器产生溢出中断,在中断服务程序中将断,在中断服务程序中将P1.0P1.0取反一次。取反一次。 T1T1工作在方式工作在方式2 2的控制字为的控制字为TMOD=60HTMOD=60H。不使用不使用T0T0时时,TMODTMOD的低的低4 4位可任取位可任取,但不能使但不能使T0T0进入方式进入方式3 3,这里取全这里取全0 0。(2 2)计算)计算T1T1的初值的初值X=2X=28 8-100=156=9CH-100=156=9CH 因此,因此,TL1TL1的初值为的初值为9CH9CH,重装初值寄存器,重装初值寄存器TH1=
21、9CHTH1=9CH(3 3)程序设计)程序设计 ORG 0000HORG 0000H LJMP MAIN LJMP MAINORG 001BHORG 001BH ;T1T1中断服务程序入口中断服务程序入口 CPL P1.0CPL P1.0 ;P1.0P1.0位取反位取反 RETIRETI ORG 0100HORG 0100HMAIN:MAIN: MOV TMOD,#60H MOV TMOD,#60H ;设;设T1T1为方式为方式2 2计数计数 MOV TL0,#9CH MOV TL0,#9CH ;T0T0置初值置初值 MOV TH0,#9CH MOV TH0,#9CH SETB TR1SET
22、B TR1 ;启动;启动T1T1 SETB ET1 SETB ET1 ;允许;允许T1T1中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断HERE: AJMP HEREHERE: AJMP HERE6.1.6 6.1.6 定时器定时器/ /计数器的计数器的实时性实时性 注意注意:从回从回0 0溢出到主机响应中断造成的时延。溢出到主机响应中断造成的时延。 方法方法: :在中断服务程序中对在中断服务程序中对TLXTLX、THXTHX、重新置初值时重新置初值时,应,应将当前的将当前的TLXTLX、THXTHX值读出来重新补偿到初值中。值读出来重新补偿到初值中。 CLR EAC
23、LR EA;禁止中断;禁止中断 MOV AMOV A,TLXTLX;读;读TLXTLX中已计数值中已计数值 ADD AADD A,#LOW#LOW;LOWLOW为低字节初值为低字节初值 MOV TLXMOV TLX,A A;设置低字节初值;设置低字节初值 MOV AMOV A,#HIGE#HIGE ;高字节初值送;高字节初值送A A ADDC A ADDC A,THXTHX;高字节初值补偿;高字节初值补偿 MOV THXMOV THX,A A;设置高字节初值;设置高字节初值 SETB EA SETB EA ;开中断;开中断6.1.7 6.1.7 运行中运行中读定时器读定时器/ /计数器计数器方
24、法方法:先读(:先读(THXTHX),后读(),后读(TLXTLX),再读(),再读(THXTHX)。若)。若两次读得(两次读得(THXTHX)相同,则读得的内容正确。若前后)相同,则读得的内容正确。若前后两次读得的(两次读得的(THXTHX)有变化,则再重复上述过程,这)有变化,则再重复上述过程,这次重复读得的内容就应是正确的。次重复读得的内容就应是正确的。RDTIME:MOV A,TH0RDTIME:MOV A,TH0 ;读(;读(TH0TH0) MOV R0,TL0MOV R0,TL0 ;读(;读(TL0TL0) CJNE A,TH0,RDTIMECJNE A,TH0,RDTIME;比较
25、;比较2 2次读得的(次读得的(TH0TH0), ,不相等则重复读不相等则重复读 MOV R1,AMOV R1,A ;(;(TH0TH0)送入)送入R1R1中中 RETRETv单片机串行通信单片机串行通信I/OI/O接口的结构接口的结构v串行通信控制寄存器串行通信控制寄存器v单片机串行通信的工作方式单片机串行通信的工作方式v串行通信应用。串行通信应用。 6.2 6.2 单片机的串行通信单片机的串行通信通通信信方方式式6.2.1 6.2.1 串行通信的概念串行通信的概念 并行通信方式并行通信方式空间上区分各位数据空间上区分各位数据 及联络控制信号。占及联络控制信号。占 用传输线多,速度快。用传输
26、线多,速度快。串行通信方式串行通信方式时间上区分各位数据时间上区分各位数据 及联络控制信号。占及联络控制信号。占 用传输线少,速度慢。用传输线少,速度慢。串行通信方式串行通信方式 -信息传输在一个方向上只占信息传输在一个方向上只占用一跟通信线,它既作为数据线,又作为联络用一跟通信线,它既作为数据线,又作为联络线。线。 信息信息格式格式上分上分 异步通信方式异步通信方式按字符传输按字符传输 同步通信方式同步通信方式按数据块传输,要按数据块传输,要求时钟严格同步。求时钟严格同步。 一、异步通信方式一、异步通信方式 数据是以数据是以帧帧为单位传送的。为单位传送的。每每1 1帧帧数据数据由由1 1个字
27、符代码组成,而每个字符代码组成,而每1 1个字符代码又是由个字符代码又是由起始位起始位、数据位数据位、奇偶校验位奇偶校验位和和停止位停止位四个四个部分组成。部分组成。 异步通讯双方的两项约定异步通讯双方的两项约定(1 1)帧格式帧格式:帧格式的规定是双方能够在对同:帧格式的规定是双方能够在对同一种一种0 0和和1 1的串理解成同一种意义。从通用、方的串理解成同一种意义。从通用、方便的角度出发,一般还是使用一些标准为好,便的角度出发,一般还是使用一些标准为好,如采用如采用ASCIIASCII标准(串行通信中为标准(串行通信中为1010位)。位)。 (2 2)波特率波特率:( (位位/ /秒秒)
28、)对传送速率的规定。对传送速率的规定。 例:要求每秒传送例:要求每秒传送120120个字符,每帧为个字符,每帧为1010位。位。解:解: 10b10b120120s s1200b1200bs s12001200波特波特 每位传输时间为每位传输时间为0.83ms0.83ms二、同步通信方式二、同步通信方式 在同步通信中,以一串字符为一个传送在同步通信中,以一串字符为一个传送单位,字符间不加标识位,在一串字符单位,字符间不加标识位,在一串字符开开始始用用同步字符同步字符标识,硬件要求高,通讯双标识,硬件要求高,通讯双方须在方须在时钟上必须严格同步时钟上必须严格同步。数据传输时,。数据传输时,中间不
29、允许断流中间不允许断流,否则将出错。,否则将出错。三、串行通信的制式三、串行通信的制式四、串行通信中的数据校验四、串行通信中的数据校验奇偶校验:是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。循环冗余校验循环冗余校验(CRC):CRC在传输或者储存之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。五、通用异步收发器(五、通用异步收发器(UARTUART)的功能)的功能1.1.发送器发送器:并:并串数据格式转换,添加标识串数据格式转换,添加标识位和校验位,一帧发送结束,设置结束标志,位和校验位,一帧发送结束,设置结束标志,
30、申请中断。申请中断。2.2.接收器接收器:串:串并数据格式转换,检查错误,并数据格式转换,检查错误,去掉标识位,保存有效数据,设置接收结束去掉标识位,保存有效数据,设置接收结束标志,申请中断。标志,申请中断。3.3.控制器控制器:接收编程命令和控制参数,设置:接收编程命令和控制参数,设置工作方式:同步工作方式:同步/ / 异步、字符格式、波特率、异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。校验方式、数据位与同步时钟比例等。6.2.2 MCS-516.2.2 MCS-51单片机串行口结构单片机串行口结构 MCS-51 MCS-51有一个可编程的全双工串行通有一个可编程的全双工串行通
31、信接口,可作为通用异步接收信接口,可作为通用异步接收/ /发送器发送器UARTUART,也可作为同步移位寄存器。它的帧,也可作为同步移位寄存器。它的帧格式有格式有8 8位、位、1010位和位和1111位,可以设置为固位,可以设置为固定波特率和可变波特率,给使用者带来很定波特率和可变波特率,给使用者带来很大的灵活性。大的灵活性。一、串行口控制寄存器一、串行口控制寄存器SCON 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H (98H) SM0 SM1 SM2 REN TB8 RB8 TI RI (1 1)SM0SM0、SM1SM1:串行口工作方式选择位:串行口工作方式选择位 SM
32、0 SM1 工作方式 功能描述 波特率 0 0 0 1 1 0 1 1 方式 0 方式 1 方式 2 方式 3 8 位同步移位寄存器 10 位 UART 11 位 UART 11 位 UART fosc12 可变 fosc64 和 fosc32 可变 1.1.串行控制寄存器串行控制寄存器SCONSCON(2 2)SM2SM2:多机通讯控制位。:多机通讯控制位。方式方式0 0时,时,SM2SM2一定要为一定要为0 0。方式方式1 1时,如时,如SM2=1SM2=1则只有接收到有效停止位则只有接收到有效停止位时,时,RIRI(接收中断请求位)才置(接收中断请求位)才置1 1。方式方式2 2或方式或
33、方式3 3,当,当SM2=1SM2=1且接收到的第九位数且接收到的第九位数据据RB8=1RB8=1时,时,RIRI才置才置1 1。 (3 3)RENREN:串行接收允许位。:串行接收允许位。由软件置位或清由软件置位或清除除。软件置。软件置1 1时,串行口允许接收,清零后禁时,串行口允许接收,清零后禁止接收。止接收。(4 4)TB8TB8:在方式:在方式2 2和方式和方式3 3中是发送数据的第中是发送数据的第9 9位。位。可约定作为可约定作为奇偶校验位奇偶校验位或在或在多机通信中多机通信中作为区别作为区别地地址帧址帧或或数据帧数据帧的标识位。的标识位。(5 5)RB8RB8:在方式:在方式2 2
34、和方式和方式3 3中是接收的第中是接收的第9 9位数据,位数据,方式方式1 1时,若时,若SM2=0SM2=0,RB8RB8为接收到的停止位。方式为接收到的停止位。方式0 0中不使用中不使用RB8RB8。 (6 6)TITI:发送中断标志位,由:发送中断标志位,由硬件置位硬件置位,必须用,必须用软件清软件清0 0 。(7 7)RIRI:接收中断标志位,由:接收中断标志位,由硬件置位硬件置位,必须用,必须用软件清软件清0 0 。TITI、RIRI以以“或或逻辑逻辑”的的关系关系向主机向主机请求中断请求中断,必须必须在中断处理程序中在中断处理程序中查询查询TITI和和RIRI进行判断进行判断,分别
35、处理。,分别处理。2.2.专用寄存器专用寄存器PCONPCON电源控制寄存器电源控制寄存器PCONPCON中只有一位中只有一位SMODSMOD与串行口与串行口工作有关,它的位格式为:工作有关,它的位格式为:SMOD=1SMOD=1:波特率提高一倍:波特率提高一倍SMOD=0SMOD=0:波特率不提高一倍:波特率不提高一倍单片机复位时,单片机复位时,SMOD=0SMOD=0。PCON D7 D6 D5 D4 D3 D2 D1 D0 (87H) SMOD GF1 GF0 PD IDL 二、二、 单片机串行口的工作方式单片机串行口的工作方式1 1方式方式0 0:同步移位寄存器方式,多用于:同步移位寄
36、存器方式,多用于I/OI/O口的口的扩展。扩展。q一帧一帧8 8位,无起始位和停止位。位,无起始位和停止位。qRXDRXD:数据输入:数据输入/ /输出端。输出端。TXDTXD:同步脉冲输出端,:同步脉冲输出端,每个脉冲对应一个数据位。每个脉冲对应一个数据位。q波特率固定为:波特率固定为:B = fosc/12B = fosc/12q发送过程:写入发送过程:写入SBUFSBUF,启动发送,一帧发送结,启动发送,一帧发送结束,束,TI=1TI=1。接收过程:。接收过程:REN=1REN=1且且RI=0RI=0,启动接收,启动接收,一帧接收完毕,一帧接收完毕,RI=1RI=1。(1 1)方式)方式
37、0 0发送发送的工作过程:的工作过程:q单片机执行了一条对接收缓冲器单片机执行了一条对接收缓冲器SBUFSBUF的写指令,开的写指令,开始工作。始工作。q数据就从数据就从RXDRXD端串行输出,由端串行输出,由D0(D0(低位低位) )开始发送。开始发送。q上面传送的数据是在上面传送的数据是在TXDTXD的脉冲作用下进行的。的脉冲作用下进行的。q发送完一帧数据后,中断标志位发送完一帧数据后,中断标志位TITI被置被置1 1,向,向CPUCPU申申请中断,表示请中断,表示SBUFSBUF已空,可以再接收从已空,可以再接收从CPUCPU来的数据。来的数据。中断响应后,中断响应后,TITI需用软件清
38、需用软件清0 0。 对外接的移位寄存器来说,这就叫做对外接的移位寄存器来说,这就叫做“串入并串入并出出”。 (2 2)方式)方式0 0接收接收的工作过程:的工作过程:q在在REN=1REN=1且且RI=0RI=0时,启动了一次接收过程。时,启动了一次接收过程。q数据从数据从RXDRXD端串行输入到单片机内的接收缓冲器端串行输入到单片机内的接收缓冲器SBUFSBUF,由,由D0(D0(低位低位) )开始接收。开始接收。q接收的数据是在接收的数据是在TXDTXD的脉冲作用下进行的,从外接的脉冲作用下进行的,从外接的移位寄存器(的移位寄存器(74LS16574LS165)一位一位地取出。)一位一位地
39、取出。q接收完一帧数据后,接收完一帧数据后,RIRI被置被置1 1,向,向CPUCPU申请中断表申请中断表示示SBUFSBUF已满,已满,CPUCPU可以调取可以调取SBUFSBUF中的数据了。中断响中的数据了。中断响应后,应后,RIRI需用需用软件清软件清0 0。 2 2方式方式1 1q这是最常用的这是最常用的1010位且波特率可调的异步串行数位且波特率可调的异步串行数据通信方式。据通信方式。q其中其中1 1位起始位位起始位“0”0”,8 8位数据位位数据位( (低位在前低位在前) ),1 1位停止位位停止位“1”1”。起始位和停止位是在发送时。起始位和停止位是在发送时自自动动插入的。插入的
40、。qTXDTXD(P3.0P3.0)和)和RXD RXD (P3.1P3.1)分别用于发送和接)分别用于发送和接收收1 1位数据。位数据。q接收数据时,停止位进入串行口控制器接收数据时,停止位进入串行口控制器SCONSCON的的RB8RB8位中位中( (位地址位地址9AH)9AH)。 (1 1)方式方式1 1的的发送发送过程过程(A)(A)发送条件是发送条件是TI=0 TI=0 。(B) CPU(B) CPU执行一条写入指令执行一条写入指令SBUFSBUF后,启动了串行口工后,启动了串行口工作,开始发送数据。作,开始发送数据。(C) (C) 数据从数据从TXDTXD端输出,控制输出数据的移位脉
41、冲的端输出,控制输出数据的移位脉冲的频率,由内部定时器频率,由内部定时器T TX X决定。换句话说:发送信号的决定。换句话说:发送信号的波特率由波特率由T TX X控制,所以方式控制,所以方式1 1波特率是可变的。波特率是可变的。(D)(D)发送完一帧数据后,中断标志发送完一帧数据后,中断标志TITI置置1 1,将,将CPUCPU申请申请中断,并且将中断,并且将TXDTXD端也置端也置1 1作为停止位。作为停止位。(A) (A) REN=1REN=1且且RI=0RI=0时时,若检测到检测到RXDRXD上有从上有从1 1到到0 0的的跳变,则启动接收器。跳变,则启动接收器。(B) (B) 位检测
42、器以位检测器以1616倍于波特率的速率对倍于波特率的速率对RXDRXD中每一中每一位数据位数据( (第第7 7、8 8、9 9份脉冲份脉冲) ) 采样采样3 3次,取其中两次相次,取其中两次相同的值进行判断,以消除干扰,提高可靠性。同的值进行判断,以消除干扰,提高可靠性。 (C)(C)在本帧数据接收完后,必须同时满足两个条件在本帧数据接收完后,必须同时满足两个条件数据才有效:数据才有效:a) a) RI=0RI=0;b) b) SM2=0SM2=0或停止位为或停止位为1 1。停止位的信息装入停止位的信息装入RB8RB8,置位,置位RIRI。中断被响应后,。中断被响应后,由软件使由软件使RI=0
43、RI=0。 (2 2)方式方式1 1的的接收接收过程过程3 3方式方式2 2和方式和方式3 3q工作方式工作方式2 2和工作方式和工作方式3 3都是每帧都是每帧1111位异步通信位异步通信格式,由格式,由TXDTXD和和RXDRXD发送和接收,工作过程完全相发送和接收,工作过程完全相同。只是它们的波特率不同。同。只是它们的波特率不同。( (方式方式2 2的波特率是的波特率是固定固定的,的,方式方式3 3的波特率是由定时器的波特率是由定时器T TX X控制的控制的) )q每一帧的数据格式为:每一帧的数据格式为:1 1位起始位,位起始位,8 8位数据位位数据位( (低位在前低位在前) ),1 1位
44、可编程的第位可编程的第9 9数据位,数据位,1 1位停止位。位停止位。q发送发送数据时,第数据时,第9 9位数据位数据(SCON(SCON中的中的TB8TB8) )可设置可设置为为0 0或或1 1,以表明不同的含义,也可以将奇,以表明不同的含义,也可以将奇/ /偶校验偶校验位放入其中进行奇位放入其中进行奇/ /偶校验。偶校验。q接收接收数据时,第数据时,第9 9位数据进入位数据进入SCONSCON中的中的RB8RB8。 (2 2)当当满足:满足: RI=0RI=0 SM2=0 SM2=0或或SM2=1SM2=1、接收的第、接收的第9 9位数据为位数据为RB8=1RB8=1时时: :q将前将前8
45、 8位数据送入位数据送入SBUFSBUF中;中;q第第9 9位数据装入位数据装入SCONSCON中的中的RB8RB8位中;位中;q将将RIRI置置1 1,向,向CPUCPU申请中断。申请中断。(1 1)和方式)和方式1 1相比,除相比,除波特率波特率发生源略有发生源略有不同不同,发送时由发送时由TB8TB8提供第提供第9 9位数据外,其余功能基本相位数据外,其余功能基本相同。同。若不满足上述条件,则放弃接收结果,也不置若不满足上述条件,则放弃接收结果,也不置位位RIRI。三、串行通信的波特率三、串行通信的波特率1.1.方式方式0 0的波特率的波特率 在方式在方式0 0下,串行口通信的波特率是固
46、定的,其下,串行口通信的波特率是固定的,其值为值为fosc/12fosc/12(foscfosc为主机频率)。为主机频率)。2.2.方式方式2 2的波特率的波特率 在方式在方式2 2下,通信波特率为下,通信波特率为fosc/32fosc/32或或fosc/64fosc/64,根据特殊功能寄存器根据特殊功能寄存器PCONPCON中中SMODSMOD位的状态来决定串位的状态来决定串行口在那个波特率下工作。选择公式为:行口在那个波特率下工作。选择公式为:OSCSMOD642f波特率3.3.方式方式1 1或方式或方式3 3的波特率的波特率在这两种方式下,串行口波特率是由在这两种方式下,串行口波特率是由
47、定时器的溢定时器的溢出率出率决定的,因而波特率是可变的。波特率的公决定的,因而波特率是可变的。波特率的公式为:式为:溢出率定时器波特率XSMODT322)21(12TKOSCX初值溢出率定时器f式中:式中:K K为定时器为定时器T TX X的位数。的位数。溢出率溢出率:单位时间内定时:单位时间内定时/ /计数器回计数器回0 0溢出的次数。溢出的次数。 例:例:fosc=6MHzfosc=6MHz,SMOD=1SMOD=1,定时,定时/ /计数器计数器1 1工作在方工作在方式式2 2,波特率,波特率24002400(位(位/ /秒),则初值秒),则初值N N为:为: 初始化程序段如下:初始化程序
48、段如下:MOV TMODMOV TMOD,#20H #20H ;设置定时;设置定时/ /计数器计数器1 1,方式,方式2 2MOV TH1MOV TH1,#F3H#F3HMOV TL1MOV TL1,#F3H #F3H ;设置定时时间常数;设置定时时间常数N NSETB TR1 SETB TR1 ;启动定时器;启动定时器1 1MOV PCONMOV PCON,#80H #80H ;设置;设置SMOD=1SMOD=1MOV SCONMOV SCON,#50H #50H ;设置串行通信方式;设置串行通信方式1 1,允许接收,允许接收F3H2431232240010622566N常用的波特率及计数器
49、初值6.2.3 MCS-516.2.3 MCS-51串行通信技术串行通信技术一、双机串行通信技术一、双机串行通信技术 双机通信接口双机通信接口初始化编程格式:初始化编程格式:SIOSIO:MOV SCONMOV SCON,# #控制状态字控制状态字 ;写方式字且;写方式字且TI=RI=0TI=RI=0 (MOV PCON (MOV PCON,#80H) #80H) ;波特率加倍;波特率加倍 (MOV TMOD(MOV TMOD,#20H ) #20H ) ;T1T1作波特率发生器作波特率发生器 (MOV TH1(MOV TH1,#X ) #X ) ;选定波特率;选定波特率 (MOV TL1(M
50、OV TL1,#X ) #X ) (SETB TR1) (SETB TR1) (SETB EA) (SETB EA) ;开串行口中断;开串行口中断 (SETB ES)(SETB ES)1.1.串行口初始化串行口初始化2.2.发送程序发送程序(1 1) 查询方式:查询方式:TRAMTRAM: MOV AMOV A,R0 R0 ;取数据;取数据 MOVMOV SBUF SBUF,A A ;发送一个字符;发送一个字符WAITWAIT: JBCJBC TI TI,NEXT NEXT ;等待发送结束;等待发送结束 SJMP WAITSJMP WAITNEXTNEXT: INCINC R0 R0 ;准备下
51、一次发送;准备下一次发送 SJMP TRAMSJMP TRAM(2 2)中断方式:)中断方式: ORG ORG 0023H 0023H ;串行口中断入口;串行口中断入口AJMP SINTAJMP SINT MAIN MAIN: ;初始化编程;初始化编程 TRAMTRAM: MOVMOV A A,R0 R0 ;取数据;取数据MOVMOV SBUF SBUF,A A ;发送第一个字符;发送第一个字符 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR TICLR TI ;中断服务程序;中断服务程序INCINC R0 R0MOVMOV A A,R0 R0 ;取数据;取数
52、据MOVMOV SBUF SBUF,A A ;发送下一个字符;发送下一个字符RETIRETI3.3.接收程序接收程序REN=1REN=1、RI=0RI=0等待接收,当等待接收,当RI=1RI=1,从,从SBUFSBUF读取数据。读取数据。(1 1)查询方式:)查询方式: WAITWAIT:JBCJBCRIRI,NEXTNEXT;查询等待;查询等待SJMPSJMP WAITWAITNEXTNEXT:MOVMOVA A,SBUF SBUF ;读取接收数据;读取接收数据MOVMOVR0R0,A A;保存数据;保存数据INCINCR0R0 ;准备下一次接收;准备下一次接收SJMPSJMP WAITWA
53、IT(2 2)中断方式:)中断方式: ORG ORG 0023H 0023H ;串行口中断入口;串行口中断入口AJMP SINTAJMP SINT MAIN MAIN: ;初始化编程;初始化编程 H H:SJMPSJMP H H ;其它工作;其它工作 SINTSINT:CLR RICLR RI ;中断服务程序;中断服务程序MOVMOV A A,SBUF SBUF ;读取接收数据;读取接收数据MOVMOV R0 R0,A A ;保存数据;保存数据INCINC R0 R0 ;准备下一次接收;准备下一次接收RETIRETI 编程使乙机从甲机接收编程使乙机从甲机接收1616个字节数据块,并存入个字节数
54、据块,并存入片外片外3000H3000H300FH300FH单元。接收过程中要求判奇偶校验单元。接收过程中要求判奇偶校验标志标志RB8RB8。若出错则置。若出错则置F0F0标志为标志为1 1,若正确则置,若正确则置F0F0标志标志为为0 0,然后返回。,然后返回。 编程把甲机片内编程把甲机片内RAM50HRAM50H5FH5FH单元中的数据块从串单元中的数据块从串行口输出。定义在方式行口输出。定义在方式3 3下发送,下发送,TB8TB8作奇偶校验位。作奇偶校验位。采用定时器采用定时器1 1方式方式2 2作波特率发生器,波特率为作波特率发生器,波特率为12001200波波特,特,foscfosc
55、11110592MHz0592MHz,预置值,预置值TH1TH10E80E8H H。4.4.双机通信编程实例双机通信编程实例发送子程序如下:发送子程序如下: MOVTMOD,#20H ;设置定时器1为方式2 MOVTL1,0E8H ;设预置值 MOVTH1,0E8H SETBTRI ;启动定时器1 MOVSCON,0C0H ;设置串行口为方式3 MOVPCON,00H ;SMOD0 MOVR0,#50H ;设数据块指针 MOVR7,10H ;设数据长度10HTRS: MOVA,R0 ;取数据送至A MOVC,P MOVTB8,C ;奇偶位P送至TB8 MOVSBUF,A ;启动发送WAIT:JNBTI,WAIT ;判1帧是否发送完 CLRTI INCR0 ;更新数据单元 DJN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 同居生子分手协议书电子版
- 天津市小型建设工程合同的适用范围
- 《地铁设施设备系统》课件
- 2025年宜春货运从业资格证模拟考试题目
- 2025年陇南道路货物运输从业资格证考试
- 2025年泸州货物从业资格证考试题
- 动物屠宰产业升级
- 智能家居投资管理办法
- 挖掘机地铁建设施工合同
- 汽车行业市场调研全解析
- 医疗器械员工培训记录
- 中国船舶发展史
- 危险废物的培训总结
- 浙江省公路水运工程工地试验室管理暂行办法
- 国家开放大学电大《管理英语4》形考任务5试题及答案
- 六类网线检测报告(共9页)
- 安徽中电龙子湖工业园区12MW光伏发电示范项目二工区设备采购第一批35kV箱式变电站技术协议
- 注塑换模作业指导书
- 国家住宅装饰装修工程施工规范标准
- 光伏清洗机器人项目可行性研究报告写作范文
- 四柱液压压力机系统设计说明书(共17页)
评论
0/150
提交评论