单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口_第1页
单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口_第2页
单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口_第3页
单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口_第4页
单片机原理,接口及应用---第5章 单片机的定时计数器与串行接口_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理、接口及应用单片机原理、接口及应用-嵌入式系统技术基础嵌入式系统技术基础第5章 单片机的定时/计数器与串行接口 第1节 单片机的定时器/计数器1 定时/计数器的结构与工作原理2 定时器/计数器的控制3 定时/计数器的工作方式4 定时/计数器的编程和应用1 定时定时/计数器的结构与工作原理计数器的结构与工作原理2 定时器/计数器的控制3 定时/计数器的工作方式4 定时/计数器的编程和应用定时器可根据设定时间进行计时的装置计数器可对输入脉冲数进行统计的装置电子定时器机械定时器电子计步器机械计数器典型的定时器和计数器产品单片机纯软件定时/计数方法:定时空循环预定周次,等待预定时间计数读取I

2、/O口电平,统计变化次数基本思路:CPU负责统计状态变化的次数,待预定结果出现后发出结束信息。delay(unsigned int time ) unsigned int j = 0; for(;time0;time-) for(j=0;j125;j+);存在问题:占用过多CPU机时单片机软硬件定时/计数方法:等待CPU响应系统时钟脉冲加1计数器溢出标志溢出定时器外来信号脉冲加1计数器溢出标志溢出等待CPU响应计数器外来信号脉冲加1计数器溢出标志溢出等待CPU响应系统时钟脉冲K定时/计数器定时器本质上是计数器,前者是对时钟脉冲进行计数,后者则是对外定时器本质上是计数器,前者是对时钟脉冲进行计数

3、,后者则是对外来脉冲进行计数来脉冲进行计数计数器的溢出空间可随计数初值改变定时时间tt =(计数器最大值-计数初值)机器周期 =(2n-a)12/fosc (微秒)基本工作原理:定时时间定时时间t与与n、x、fosc三个因素有关三个因素有关TFx(X = 0、1)定时/计数器的结构两个外部引脚T0(P3.4)和T1(P3.5)两个16位定时器T0 (TH0、TL0)和T1 (TH1、TL1)两个控制寄存器TCON和TMOD1 定时/计数器的结构与工作原理2 定时器定时器/计数器的控制计数器的控制3 定时/计数器的工作方式4 定时/计数器的编程和应用第6章 单片机的定时器单片机的定时器/计数器计

4、数器T0方式控制寄存器TMOD控制寄存器TCONGATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(89H)定时器1定时器0/C T /C T T1门控位门控位参与定时器的启停管理方式选择位方式选择位00-方式001-方式110-方式211-方式3模式选择位模式选择位CT=0-定时CT=1-计数 T1TF1TR1TF0TR0IE1IT1IE0IT08FH8DH8CH8BH8AH89H88HTCON8EH(88H)定时器控制位外部中断控制位启动控制位启动控制位TR1=1-启动TR1=0-停止溢出标志位溢出标志位TF=1-溢出TF=0-清零门控位门控位允许TR1启

5、动计数器(=0)允许INT1启动计数器(=1)GATEC/TM1M0GATEC/TM1M0D7D5D4D3D2D1D0TMODD6(89H)定时器1定时器0/C T /C T 初始状态初始状态:允许TRx启动计数器、定时模式、方式0TF1TR1TF0TR0IE1IT1IE0IT08FH8DH8CH8BH8AH89H88HTCON8EH(88H)定时器控制位外部中断控制位初始状态初始状态:没有定时/计数溢出,TRx处于关闭状态单片机复位时,两个寄存器的所有位都被清单片机复位时,两个寄存器的所有位都被清0。1 定时/计数器的结构与工作原理2 定时器/计数器的控制3 定时定时/计数器的工作方式计数器

6、的工作方式4 定时/计数器的编程和应用工作方式0使用13位的定时/计数器(THi7-0+TLi4-0)定时时间 t = (213 - a)12/fosc (s)计数初值 a = 213 - tfosc/12若fosc=12MHz,方式0最大定时量t=213s=8.192ms最小定时量t=1s解:设fosc=12MHz 计数初值a=213-5100012/12=3192= 1100 0111 1000TH0TL00 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 6 3 1 8 H 举例: 计算T0方式0定时5ms的计数初值a注意:方式0的TL0高3位未用,可填0 ,因此 a= 01

7、10 0011 0001 1000 = 6318H编程时需将此初值装载到Tx中,例如:TH0 = 0 x63;TL0 = 0 x18;工作方式1使用16位定时/计数器(THi7-0+TLi7-0)定时时间为:t = (216- a)12/fosc (微秒) 定时范围扩大到1s 65ms(fosc = 12MHz时) 计数初值无需修正: a = 216- tfosc/12 使用过程中计数初值需要重装载延时时间 t = (28-a)12/fosc (微秒)可自动重装载计数初值(TLx溢出后THx中数值可自动装入TLx适合于作串口波特率发生器(定时精度较高)工作方式2采用8位计数器常数寄存器T0的工

8、作方式的工作方式3主要用于当当T1用作串行口的波特率发生器的情况用作串行口的波特率发生器的情况TH0+TF1+TR1组成的8位定时器TL0+TF0+TR0组成的8位定时/计数器T1组成的无中断功能的定时器特点特点:方式3下T0可有2个具有中断功能的8位定时器3个定时器在定时器T0用作方式3时,T1仅方式2有意义。TL1 TH1使用定时使用定时/ /计数器的步骤:计数器的步骤:强调强调:TMOD的工作方式字只能以字节形式给出T0 (1)设置TMOD工作方式字工作方式字确定T0? T1?确定定时模式?计数模式?确定方式0、方式1、方式2、方式3? 确定定时/计数器的工作状态 由于定时器由于定时器/

9、计数器以加计数器以加1方式计数,假设计数值为方式计数,假设计数值为x,则应装入定时器则应装入定时器/计数器的初值为:计数器的初值为: (n为不同方式下计数器的位数为不同方式下计数器的位数) x2n (2)设置合适的计数初值产生期望的定时间隔:每个机器周期包括12个振荡周期,若晶振频率为6MHz,一个机器周期: 定时时间为TC:Tp为机器周期:计数个数为: 则应装入的计数初值为:2uS1061212T6p晶晶振振频频率率 x2n pcTTx ( 2 ) 设 置 合 适 的 计 数 初 值 产 生 期 望 的 定 时 间 隔: 计数初值 a = 2n - tfosc/12 (相当于负数的补码形式)

10、 = - tfosc/12TH0 = -t / 256;TL0 = -t % 256;装载初值,例:(12MHz晶振) ET0 = 1;EA = 1;void tx_srv (void) interrupt n n 3)确定采用何种方式处理溢出结果 查询方式?中断方式?若是查询方式采用条件判断语句if (TF0) while (!TF0) 若是中断方式中断初始化和中断服务程序:4)启动定时器: TR0 = 1 或 TR1= 1 5)进行定时或计数结束后的工作6)为下次定时/计数做准备(清TF标志+重装载初值) 若是中断方式,则无需软件清TF标志位; 若是查询方式,还需软件清除TF标志位 若是方

11、式2,没有重装载问题,否则需重装载初值1 定时/计数器的结构与工作原理2 定时器/计数器的控制3 定时/计数器的工作方式4 定时定时/计数器的编程和应用计数器的编程和应用 例例1 1 假设系统时钟频率采用假设系统时钟频率采用6MHz6MHz,要在,要在P1.0P1.0上输出一个周期为上输出一个周期为2ms2ms的方波,如图所示。的方波,如图所示。 思路思路:方波的周期用:方波的周期用T0来确定,让来确定,让T0每隔每隔1ms计数溢出计数溢出1次次(每每1ms产生一次中断产生一次中断),CPU响应中断后,在中断服响应中断后,在中断服务程序中对务程序中对P1.0取反。取反。 (1)(1)计算初值计

12、算初值X X 设初值为设初值为X X,则有,则有: :机器周期为机器周期为 12/(612/(610106 6)=2)=21010-6-6 (2(21616-X)-X)2 21010-6-6=1=11010-3-3 2 21616-X=500 X=65036-X=500 X=65036 X X化为化为1616进制,即进制,即X=FE0CH=1111111000001100BX=FE0CH=1111111000001100B。 所以,所以,T0T0的初值为:的初值为: TH0=0FEH TL0=0CHTH0=0FEH TL0=0CH (2) (2)初始化程序设计初始化程序设计 对寄存器对寄存器I

13、PIP、IEIE、TCONTCON、TMODTMOD的相应位进行正确设置,将的相应位进行正确设置,将计数初值送入定时器中。计数初值送入定时器中。(3)(3)程序设计程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。时器中,为下一次中断作准备。 参考程序:参考程序: ORG 0000HORG 0000HRESET: AJMP MAIN RESET: AJMP MAIN ;转主程序;转主程序 ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 AJMP IT0PAJMP IT0P ;转

14、;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 0100HORG 0100HMAIN: MOV SP,#60H MAIN: MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#01HMOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 ACALL PT0M0ACALL PT0M0;调用初始化子程序;调用初始化子程序PT0M0PT0M0HERE: AJMP HEREHERE: AJMP HERE ;自身跳转;自身跳转PT0M0: MOV TL0,#0CHPT0M0: MOV TL0,#0CH;T0T0中断服务程序,中断服务程序,T0T0重新置初值重新

15、置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB TR0 SETB TR0 ;启动;启动T0T0 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开中断开中断 RETRET ITOP: MOV TL0,#0CH ITOP: MOV TL0,#0CH ;T0T0中断服务子程序,中断服务子程序,T0T0置初值置初值 MOV TH0,#0FEHMOV TH0,#0FEH CPL P1.0 CPL P1.0 ;P1.0P1.0的状态取反的状态取反 RETIRETI查询方式查询方式的参考程序的参考程序: : MOV

16、TMOD,#01H MOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 SETB TR0 SETB TR0 ;接通;接通T0T0 LOOP: MOV TH0,#0FEH LOOP: MOV TH0,#0FEH ;T0T0置初值置初值 MOV TL0,# 0CHMOV TL0,# 0CH LOOP1 LOOP1:JNB TF0,LOOP1 JNB TF0,LOOP1 ;查询;查询TF0TF0标志标志 CLR TR0 CLR TR0 ;T0T0溢出,关闭溢出,关闭T0T0 CPL P1.0 CPL P1.0 ;P1.0P1.0的状态求反的状态求反 SJMP LOOPSJMP LOO

17、P 【例】对上例使用定时器/计数器T0的方式0,设定1ms的定时。在P1.0引脚上产生周期为2ms的方波输出。晶体振荡器的频率为fosc=6MHz。解:(1)定时常数计算振荡器频率为 fosc=6MHz=6106 6HZ方式0计数器长度 n=13 2n n=21313=8192定时时间: t=1ms=110-3-3s机器周期: Tp12/(6106 6)2us计数值: xTc/Tp1ms/2us500那么应装入的初值为 81925007692定时常数TC转换成二进制数TCB11110 0000 1100 B。所以TCH1EH,TCL0CH。那么应该写入T0的形式为TH0=1EH,TL0=0CH

18、。 例例2 2 假设假设系统时钟为系统时钟为6MHz6MHz,编写定时器编写定时器T0T0产生产生1 1秒定时秒定时的程序。的程序。(1 1)T0T0工作方式的确定工作方式的确定定时时间较长,采用哪一种工作方式?定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出: 方式方式0 0最长可定时最长可定时16.384ms16.384ms; ; 方式方式1 1最长可定时最长可定时131.072ms131.072ms; ; 方式方式2 2最长可定时最长可定时512512 s s。选方式选方式1 1,每隔,每隔100ms100ms中断一次,中断中断一次,中断

19、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次计数的实现次计数的实现 采用循环程序法。采用循环程序法。(4 4)程序设计)程序设计 参考程序参考程序 : : ORG 0000HORG 0000HRESETRESET: LJMP MAIN LJMP MAIN ;上电,转主程序入口;上电,转主程序入口MAINMAIN ORG 00

20、0BHORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN: MOV SP,#60HMOV SP,#60H ;设堆栈指针;设堆栈指针 MOV B,#0AH MOV B,#0AH ;设循环次数;设循环次数1010次次 MOV TMOD,#01H MOV TMOD,#01H ;设;设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;给;给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CH

21、 SETB TR0 SETB TR0 ;启动;启动T0T0 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断 HEREHERE: SJMP HERE SJMP HERE ;等待中断;等待中断ITOPITOP: MOV TL0,#0B0H MOV TL0,#0B0H ;T0T0中断子程序,重装初值中断子程序,重装初值 MOV TH0,#3CH MOV TH0,#3CH ; DJNZ BDJNZ B,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定时时间到,停止定时时间到,停止T0T0工作工作 LOOPL

22、OOP: RETI RETI 例例3 3 利用利用T1T1的方式的方式2 2对外部信号计数,对外部信号计数,要求每计满要求每计满100100个数,将个数,将P1.0P1.0取反。取反。 本例是本例是方式方式2 2计数模式计数模式的应用。的应用。(1 1)选择工作方式)选择工作方式外部信号外部信号由由T1(P3.5) T1(P3.5) 脚输入脚输入, ,每发生一次负跳变计数器加每发生一次负跳变计数器加1 1,每输入每输入100100个脉冲,计数器产生溢出中断,在中断服务程序个脉冲,计数器产生溢出中断,在中断服务程序中将中将P1.0P1.0取反一次。取反一次。T1 T1 方式方式2 2的控制字为的

23、控制字为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=9CHTH1=9CH(3 3)程序设计)程序设计 ORG 0000HORG 0000HLJMP MAINLJMP MAINORG 001BHORG 001BH;T1T1中断服务程序入口中断服务程序入口 C

24、PL 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 TR1 SETB TR1 ;启动;启动T1 T1 SETB ET1 SETB ET1 ;开中断;开中断SETB EASETB EAHERE: AJMP HEREHERE: AJMP HERE 门控位的应用门控位的应用 门控

25、位门控位GATE为为1时,时,TRx=1,INTx=1才能启动定时器。利才能启动定时器。利用这个特性可以测量外部输入脉冲的宽度。用这个特性可以测量外部输入脉冲的宽度。例例5 利用利用T0门控位测试门控位测试 INT0引脚上出现的正脉冲宽度,已知引脚上出现的正脉冲宽度,已知晶振频率为晶振频率为12MHz,将所测得值最高位存入片内,将所测得值最高位存入片内71H单元,单元,低位存入低位存入70H单元。单元。解:设外部脉冲解:设外部脉冲 由由(P3.2)输入,输入,T0工作于定时方式工作于定时方式 1 (16位计数位计数),GATE设为设为1。测试时,应在。测试时,应在INT0 低电平时,低电平时,

26、设置设置TR0为为1(16位计数位计数);当;当INT0 变为高电平时,就启动计变为高电平时,就启动计数;数; 再次变低时,停止计数。此计数值与机器周期的乘积即再次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉冲的宽度。因为被测正脉冲的宽度。因fosc=12MHZ,机器周期为,机器周期为1us,测试过程如下。测试过程如下。源程序如下:源程序如下: MOV TMOD,#09H ; 设设T0为方式为方式1 MOV TL0,#00H ;设计初值取最大值;设计初值取最大值 MOV TH0,#00H MOV R0,#70H JB P3.2, $ ;等;等P3.2(INT0 )变低变低 SETB

27、TR0 ;启动;启动T0准备工作准备工作 JNB P3.2, $ ;等待;等待P3.2(INT0 )变高变高 JB P3.2,$ ; 等待等待P3.2(INT0 )变低变低 CLR TR0 ;停止计数停止计数T0从从0开始计数开始计数INT0INT0 09H (TMOD) 1 TR0 0 TR0T0停止计数停止计数 MOV R0,TL0 ;存放结果;存放结果 INC R0 MOV R0,TH0 SJMP $ 运行中读定时器运行中读定时器/ /计数器计数器在读取运行中的定时器在读取运行中的定时器/ /计数器时,计数器时,需注意:若恰好出现需注意:若恰好出现TLXTLX溢溢出向出向THXTHX进位

28、的情况,则读得的(进位的情况,则读得的(TLXTLX)值就完全不对。)值就完全不对。同样,同样,先读(先读(THXTHX)再读()再读(TLXTLX)也可能出错。)也可能出错。方法:先读(方法:先读(THXTHX),后读(),后读(TLXTLX),再读(),再读(THXTHX)。若两次读得)。若两次读得(THXTHX)相同,则读的内容正确。)相同,则读的内容正确。若前后两次读的(若前后两次读的(THXTHX)有)有变化,则再重复上述过程,这次重复读得的内容就应是正确变化,则再重复上述过程,这次重复读得的内容就应是正确的。下面是有关的程序,读得的(的。下面是有关的程序,读得的(TH0TH0)和(

29、)和(TL0TL0)放置在)放置在R1R1和和R0R0内。内。RDTIME:MOV A,TH0RDTIME:MOV A,TH0;读(;读(TH0TH0) MOV R0,TL0MOV R0,TL0;读(;读(TL0TL0) CJNE A,TH0,RDTIMECJNE A,TH0,RDTIME;比较;比较2 2次读得的(次读得的(TH0TH0);不相等则重复读;不相等则重复读 MOV R1,AMOV R1,A ;(;(TH0TH0)送入)送入R1R1中中 RETRET 本节小结1、定时器和计数器本质上都是计数器,前者是对时钟脉冲进行计数,后者则是对外来脉冲进行计数。2、设置TMOD工作方式字工作方

30、式字可确定定时/计数器的工作状态;设置合适的计数初值可产生期望的定时间隔。3、定时器共有4种工作方式,其中方式1采用16位计数器,方式2采用8位计数器,可以自动重装载计数常数。第第2节节 单片机的串行通信技术单片机的串行通信技术1 串行通信概述2 串行口的结构组成及控制寄存器3 串行通信工作方式及应用举例4 串行通信设计应用举例1 串行通信概述串行通信概述 1.1 数据通信 1.2 异步通信和同步通信 1.3 波特率的概念和串行通信的传输方向 2 串行口的结构组成及控制寄存器3 串行通信工作方式及应用举例4 串行通信接口常用的数据通信包括两种形式:并行通信和串行通信。并行通信 (1)并行方式并

31、行方式数据的各位同时发送或同时接收。 传送速度快,但因需要多根传输线,故一般只在近距离通 信中使用。串行通信 (2)串行方式串行方式数据的各位依次逐位发送或接收。 传输速度慢,但因只需较少传输线,故适合于远距离通信。1 串行通信概述串行通信概述 1.1 数据通信 1.2 异步通信和同步通信 1.3 波特率的概念和串行通信的传输方向 2 串行口的结构组成及控制寄存器3 串行通信工作方式及应用举例4 串行通信接口异步通信异步通信以字符为单位组成字符帧进行的数据传送以字符为单位组成字符帧进行的数据传送在串行数据通信中,有同步通信和异步通信两种方式。一帧数据由起始位起始位、数据位数据位、可编程位可编程

32、位和停止位停止位构成特点收发双方不同步时,能够依靠在每帧开始时的不断对齐,自行纠正偏差,故对收发双方的时钟精度要求较低,但因每个字节都要建立一次同步,所以工作速度较低。 同步通讯数据格式数据以块为单位连续传送。在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。特点数据是以数据块为单位连续传送的,结构紧凑,传输效率高,但要求双方有准确的时钟,对硬件要求高。1 串行通信概述串行通信概述 1.1 数据通信 1.2 异步通信和同步通信 1.3 波特率的概念和串行通信的传输方向 2 串行口的结构组成及控制寄存器3 串行通信工作方式及应用举例4 串行通信接口 波特率为每秒钟发送

33、二进制数码的位数,即b/S (位/秒)。在串行通信中,数据传输速率的快慢,通过波特率来衡量。 例如,在异步通信中传输速度为360字符/秒,每个字符又包含10位,则波特率为: 360字符/秒 * 10位/字符 3600波特标准波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。 在串行通信中,按照传输数据的流向,可分成三种传输形式: 单工通信 半双工通信 全双工通信 Simplex Half Duplex Full Duplex 80C51 内部设有一个全双工串行接口收发双方角色固定不能互换收发双方角色可换但需切换收发双方互不影响双向通信RXDR

34、eceive Data接收数据 TXDTransmit Data发送数据 80C51单片机串行单片机串行IO口是可提供同步或异步两种通信方口是可提供同步或异步两种通信方式的全双工串行接口。它由下面几个特殊功能寄存器组成,式的全双工串行接口。它由下面几个特殊功能寄存器组成, 发送数据寄存器发送数据寄存器(SBUF)、 接收数据寄存器接收数据寄存器(SBUF)、 串行口控制寄存器串行口控制寄存器(SCON) 电源控制寄存器电源控制寄存器(PCON) 80C51 内部设有一个全双工串行接口123456ABCD654321DCBATitleNum berR evisionSizeBDate:4-Jun

35、-2007 Sheet of File:F:开 发 M yDesign.ddbDrawn B y:发 送 中 断TXDR XD接 收 中 断发 送 SB UF内 部 总 线接 收 SB UF输 入 移 位 寄 存 器第 八 位SC ONPC ON分 频 器XTAL1T1溢 出1 串行通信概述2 串行口的结构组成及控制寄存器串行口的结构组成及控制寄存器 2.1串行口的结构组成 2.2串行口控制寄存器3 串行通信工作方式及应用举例4 串行通信接口 若干寄存器: 两个数据缓冲器SBUF(99H)+串行控制寄存器SCON(98H) +移位寄存器+. 。CPU 两个引脚:数据接收RXD(P3.0) 和数

36、据发送TXD(P3.1)。(1)发送数据过程(中断法) 内部数据并行写入SBUF发发数据串行送出中断标志位TI硬件置硬件置1CPU响应中断TI软件清零软件清零,写入下一数据CPU (2)接收数据的过程(中断法) 外界数据串行送入移位寄存器数据并行送入SBUF收收标志位RI硬件置硬件置1CPU响应中断RI软件清零软件清零,读走数据CPUD0D1D2D3D4D5D6D7传送数据同步时钟同步时钟数据传送数据传送将串行数据按一定节拍(同步时钟脉冲)输出到传输线上,或从传输线上读入。同步时钟信号可由系统时钟或定时器产生同步时钟和传送数据的关系:发送数据发送数据时,发送时钟的下降沿下降沿将数据串行移位输出

37、;接收数据接收数据时,接收时钟的上升沿上升沿开始对数据位采样。1 串行通信概述2 串行口的结构组成及控制寄存器串行口的结构组成及控制寄存器 2.1串行口的结构组成 2.2串行口控制寄存器3 串行通信工作方式及应用举例4 串行通信接口(1) 串行数据缓冲器,SBUFSBUF在物理上有两个SBUF:一个用于发送,另一个用于接收。在逻辑上只有一个SBUF(99H)。可根据用法区分功能:uchar counter; 待发送存放变量SBUF = counter; 完成一次数据发送counter = SBUF; 完成一次数据接收CPU(2) 串口控制寄存器,SCON(98H)SM2、TB8、RB8主要用于

38、多机通讯(1 1)SM0SM0、SM1SM1串行口串行口4种工作方式的选择位种工作方式的选择位 表表 串行口的串行口的4 4种工作方式种工作方式SM0 SM1 SM0 SM1 方式方式 功功 能能 说说 明明 0 0 0 0 0 0 同步移位寄存器方式(用于扩展同步移位寄存器方式(用于扩展I/OI/O口)口) 0 1 0 1 1 1 8 8位异步收发,波特率可变(由定时器控制)位异步收发,波特率可变(由定时器控制) 1 0 1 0 2 2 9 9位异步收发,波特率为位异步收发,波特率为fosc/64fosc/64或或fosc/32fosc/32 1 1 1 1 3 3 9 9位异步收发,波特率

39、可变(由定时器控制)位异步收发,波特率可变(由定时器控制)(2 2)SM2 SM2 多机通信控制位多机通信控制位 用于方式用于方式2 2或方式或方式3 3中(中(9 9位位)。)。 当串行口以当串行口以方式方式2 2或方式或方式3 3接收接收时,时,如果如果SM2=1SM2=1,只有当接收到的第只有当接收到的第9 9位数据(位数据(RB8RB8)为)为“1”1”时,才时,才将接收到的前将接收到的前8 8位数据送入位数据送入SBUFSBUF,并置并置“1” RI1” RI,产生中断,产生中断请求;当接收到的第请求;当接收到的第9 9位数据(位数据(RB8RB8)为)为“0”0”时,则将接收时,则

40、将接收到的前到的前8 8位数据丢弃。位数据丢弃。如果如果SM2=0SM2=0,则不论第,则不论第9 9位数据是位数据是“1”1”还是还是“0”0”,都将,都将 前前8 8位数据送入位数据送入SBUFSBUF中,并置中,并置“1” RI1” RI,产生中断请求。,产生中断请求。在在方式方式1 1时,如果时,如果SM2=1SM2=1,则只有收到停止位时才会激活,则只有收到停止位时才会激活RIRI。在在方式方式0 0时,时,SM2SM2必须为必须为0 0。 (3 3)RENREN允许串行接收位允许串行接收位 由软件置由软件置“1”1”或清或清“0”0”。REN=1 REN=1 允许串行口接收数据。允

41、许串行口接收数据。 REN=0 REN=0 禁止串行口接收数据。禁止串行口接收数据。 (4 4)TB8TB8发送的第发送的第9 9位数据位数据方式方式2 2和和3 3时,时,TB8TB8是要发送的第是要发送的第9 9位数据,可作为位数据,可作为奇偶校验位奇偶校验位使使用,也可作为用,也可作为地址帧地址帧或或数据帧数据帧的标志。的标志。 =1=1为地址帧为地址帧, , =0=0为数据帧为数据帧 (5 5)RB8RB8接收到的第接收到的第9 9位数据位数据方式方式2 2和和3 3时,时,RB8RB8存放接收到的第存放接收到的第9 9位数据。在方式位数据。在方式1 1,如果,如果SM2=0SM2=0

42、,RB8RB8是接收到的停止位。在方式是接收到的停止位。在方式0 0,不使用,不使用RB8RB8。 (6 6)TITI发送中断标志位发送中断标志位方式方式0 0时时,串行发送第,串行发送第8 8位数据结束时由硬件置位数据结束时由硬件置“1”1”,其它工作方式其它工作方式,串行口发送停止位的开始时置,串行口发送停止位的开始时置“1”1”。TI=1TI=1,表,表示一帧数据发送结束,可供软件查询,也可申请中断。示一帧数据发送结束,可供软件查询,也可申请中断。CPUCPU响应中断后响应中断后, , 向向SBUFSBUF写入要发送的下一帧数据。写入要发送的下一帧数据。TITI必须由软必须由软件清件清0

43、 0。(7 7)RIRI接收中断标志位接收中断标志位 方式方式0 0时时,接收完第,接收完第8 8位数据时,位数据时,RIRI由硬件置由硬件置1 1。其它工作方式其它工作方式,串行接收到停止位时,该位置,串行接收到停止位时,该位置“1”1”。RI=1RI=1,表,表示一帧数据接收完毕,并申请中断示一帧数据接收完毕,并申请中断, CPU, CPU从接收从接收SBUFSBUF取走数取走数据。该位状态也可软件查询。据。该位状态也可软件查询。RIRI必须由软件清必须由软件清“0”0”。(3) 电源控制寄存器,PCON(87H))(212322anfoscSMOD波特率由定时器产生的同步时钟 通过SM0

44、和SM1不同的取值,可选择串行通信中的四种工作方式。SM0 SM1工作方式说明波特率 0 0方式0同步移位寄存器fosc/12 0 1方式110位异步收发由定时器控制 1 0方式211位异步收发fosc/32或fosc/64 1 1方式311位异步收发由定时器控制1 串行通信概述2 串行口的结构组成及控制寄存器3 串行通信工作方式串行通信工作方式 3.1 方式0(八位同步移位寄存器方式) 3.2 方式1(十位异步收发通信模式) 3.3 方式2、方式3数据帧格式及应用举例 4 串行通信接口 1方式方式0方式方式0为移位寄存器方式,通过外接为移位寄存器方式,通过外接CM0S或或TTL移位寄存器实现

45、串行、并移位寄存器实现串行、并行转换。该工作方式用于扩展行转换。该工作方式用于扩展I0接口。接口。在这种方式下,传送的数据为在这种方式下,传送的数据为8位,数据只能从位,数据只能从RxD端输入输出。端输入输出。TxD端端用于输出移位同步时钟信号,其波特率固定为振荡频率的用于输出移位同步时钟信号,其波特率固定为振荡频率的112,即每个,即每个机器周期传送一位数据。方式机器周期传送一位数据。方式0可以认为是同步工作方式。可以认为是同步工作方式。(1)方式)方式0输出输出 第5章 MCS-51系列单片机的并行、串行输入/输出接口(2)方式)方式0输入输入 八位同步移位寄存器方式八位同步移位寄存器方式

46、用于扩展并行用于扩展并行I/O接口接口 数据传输波特率固定为fosc/12由RXD引脚输入或输出数据(低位在前,高位在后)由TXD引脚输出同步时钟信号扩展输出口扩展输入口实例1 利用利用74LS164扩展并行输出口扩展并行输出口, ,并实现发光二极管循环控制功能并实现发光二极管循环控制功能74LS164为8位串并转换移位寄存器能将串行输入数据转为并行输出引脚功能描述A、B串行数据输入引脚QAQG并行数据输出引脚CLOCK移位脉冲输入端CLEAR移位寄存器清零端工作原理:1)CLEAR端若为低电平,输出端QAQG都为0;2)CLEAR端若为高电平,且CLOCK端出现上升沿脉冲,则 输出端锁存输入

47、端的电平接线原理:数据发送端A(B)RXD ;同步时钟端CLKTXD;数据清除端CLRP1.0#includesbit MR=P10;void delay() /延时 unsigned int i; for (i=0; i20000; i+) void main() unsigned char index, LED; /定义LED指针和显示字模 SCON = 0; /设置串行模块工作在方式0 MR = 1; / CLEAR端1,允许输入数据 while (1) LED=0 xFE; / (1:灭 0:亮) for (index=0; index 8; index+) SBUF = LED; /

48、控制L0灯点亮 do while(!TI); /通过TI查询判别数据是否输出结束 LED = (LED1) |1); /左移1位,末位置1(1:灭 0:亮) if (LED= 0 xff) LED = 0 xfe; /若已循环一遍,准备重新开始 delay(); 实例1参考程序实例1运行效果1 串行通信概述2 串行口的结构组成及控制寄存器3 串行通信工作方式串行通信工作方式 3.1 方式0(八位同步移位寄存器方式) 3.2 方式1(十位异步收发通信模式) 3.3 方式2、方式3数据帧格式及应用举例 4 串行通信接口 10位数据异步通讯方式用于双机通信一帧信息:1个起始位(0)+8位数据位+1个

49、停止位(1) ,其中起始位和停止位是自动插入自动插入的。发送条件:由SBUF = counter即可启动发送过程发送完成:硬件TI置1接收条件:在允许接收位REN=1时即可启动接收过程接收完成:硬件RI置1,数据SBUF指定T1为波特率时钟发生器(波特率时钟可变))(232212anfoscSMOD波特率时钟通常选择定时器方式2(取fosc为11.0592MHz)序号波特率SMODa16250010 xff21920010 xfd3960000 xfd4480000 xfa5240000 xf46120000 xe8一般初始化过程例如:SCON=0 x50; /串口设为方式1,TI和RI清零,

50、允许接收PCON=0 x80; /波特率加倍(2)TMOD=0 x20; /T1设为定时方式2TH1=0 xcc; /定时器初值TL1=0 xcc; /重置的定时初值IE=10010000B;/中断使能(开中断)TR1=1; /启动T1GATETMODC/TM1M0M0M1GATEC/T(89H)双机通信协议双机通信协议通行方式:例如异步串行通信波特率: 例如2400b/s发机要求发送的呼叫信号:例如10H收机同意接收的应答信号:例如20H收机不同意接收的应答信号:例如30H告知数据正确的应答信号:例如0FH通信结束标志信号:例如0AH实例实例2:要求设计一个双机通信方案,甲机发送数据,乙机接

51、收数据。两机的振荡频率为12MHz,波特率设置为2.4k,工作在串口方式1。甲机循环发送0-15的数字,乙机接收后返回接收值。若发送值与返回值相等,继续发送下一数字,否则重复发送当前数字。发送值和接收值应显示在LED数码管上;采用查询法检查收发是否完成。实例2电路原理图实例2程序流程图实例2参考程序实例2参考程序实例2运行效果1 串行通信概述2 串行口的结构组成及控制寄存器3 串行通信工作方式串行通信工作方式 3.1 方式0(八位同步移位寄存器方式) 3.2 方式1(十位异步收发通信模式) 3.3 方式2、方式3数据帧格式及应用举例 4 串行通信接口 方式2和方式3的数据帧都是11位用于多机通

52、信格式为:一个起始位,8个数据位,一个可编程位可编程位和一个停止位可编程位在SCON的TB8和RB8位中,用于奇偶校验或多机通讯标识。可编程位可以由软件置1或清0;发送时在TB8中,连同八位数据通过串口发出。收到数据后,数据存入接收SBUF内,可编程位存入RB8中。可编程位用作数据校验位可编程位用作数据校验位常用校验方法:常用校验方法:在可编程位装入发送数据的奇偶校验位。例如,欲发送数据在可编程位装入发送数据的奇偶校验位。例如,欲发送数据45H45H(01000101B01000101B),发送数据包含二进制数),发送数据包含二进制数1 1的个数为奇数,因此奇偶校验位的个数为奇数,因此奇偶校验

53、位P=1P=1,在发送数据,在发送数据45H45H时,将时,将P=1P=1赋值到可编程位赋值到可编程位TB8TB8,连同数据共同发出。,连同数据共同发出。对方接收后,只要将实际数据的奇偶关系与对方接收后,只要将实际数据的奇偶关系与RB8RB8进行对比,即可知道收发进行对比,即可知道收发过程是否有误。过程是否有误。可编程位用作多机通讯位多机通讯位要要保证主机与所选择的从机实现可靠地通讯保证主机与所选择的从机实现可靠地通讯,必须保证串口具,必须保证串口具有识别功能。有识别功能。SCONSCON中的中的SM2SM2位位就是满足这一条件而设置的就是满足这一条件而设置的多机通讯控制位。多机通讯控制位。原

54、理:原理:在串行口以方式在串行口以方式2 2(或方式(或方式3 3)接收时,)接收时,若若SM2=1SM2=1,表示置,表示置多机通讯功能位,这时有两种可能:多机通讯功能位,这时有两种可能: (1 1)接收到的第接收到的第9 9位数据为位数据为1 1时时,数据才装入,数据才装入SBUFSBUF,并,并置中置中断标志断标志RI=1RI=1向向CPUCPU发出中断请求;发出中断请求; (2 2)接收到的)接收到的第第9 9位数据为位数据为0 0时时,则,则不产生中断标志不产生中断标志,信息信息将抛弃将抛弃。若若SM2=0SM2=0,则则接收的第接收的第9 9位数据不论是位数据不论是0 0还是还是1 1,都产生,都产生RI=1RI=1中断中断标志,接收到的数据装入标志,接收到的数据装入SBUFSBUF中。中。应用上述特性,便可实现应用上述特性,便可实现MCS-51MCS-51的多机通讯。的多机通讯。 设多机系统中有一主机和设多机系统中有一主机和3 3个个80318031从机,从机,如下图。如下图。 主机的主机的RXDRXD与从机的与从机的TXDTXD相连,主机相连,主机TXDTXD与从机的与从机的RXDRXD端相连。端相连。从机地址分别为从机地址分别为00H00H、01H01H、02H02H。 多机通讯工作过程:多机通讯工作过程:(1 1)从机串行

温馨提示

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

评论

0/150

提交评论