关于单片机工作方式等.ppt_第1页
关于单片机工作方式等.ppt_第2页
关于单片机工作方式等.ppt_第3页
关于单片机工作方式等.ppt_第4页
关于单片机工作方式等.ppt_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

1、工程背景下的单片机原理及系统设计,Powerpoint 制作: 五邑大学信息学院 课程主讲:王洪涛,工程背景下的单片机原理及系统设计,MCS-51系列单片机内部定时/计数器、 中断系统及串行口I/O口的应用 第十一讲内容提示 5.8串行口及串行通信(续) 5.9 RS-232C接口标准 5.11 多个中断源同时开放时应注意的问题,工程背景下的单片机原理及系统设计,(2)方式1、2、3 当设置SCON中的SM0、SM1为01、10、11时,串行口工作在方式1、2、3。串口均为异步串行通信口,其中TXD是发送端,RXD是接收端。发送或接收帧信息包括1位起始位(固定为0)、8(方式1)或9位(方式2

2、、3)串行数据(低位在前,高位在后)和一位停止位(固定为1)共10或11位,这是他们的共性。,工程背景下的单片机原理及系统设计,方式1、3的波特率是可变的。波特率与定时器T1或T2的溢出率、SMOD位有关。注意:51机的T0不能作为波特率发生器用。方式2的波特率固定为: (5-4) 方式1、方式3波特率与定时器T1溢出率、SMOD位关系如下: (5-5),工程背景下的单片机原理及系统设计,5-5式分子中的SMOD是PCON的SMOD位。当SMOD位为1时,波特率是SMOD为0时的两倍。因此,PCON寄存器中的SMOD位被称为波特率倍增位。对方式1、2、3都成立。 如前所述,波特率(这里等同于比

3、特率)是每秒钟传输数据的倍数。在异步串行数据传输时,表面上看来双方的同步是靠波特率实现(移位)的。,工程背景下的单片机原理及系统设计,但为了降低误码率,提高通信的靠性,接收方若在每个数据位时间间隔中点(信号畸变最小处),将数据移位并锁存,可以克服因信号的畸变导致的通信错误。实现的上述目的一种方法是进行时间细分,如图5-34所示,在每传输1位的时间段内,插入16个等宽时钟脉冲。当接收方收检测到发送方的起始信号后,以延迟8个时钟脉冲后的时刻为同步参考点。之后每16个时钟脉冲移位并锁存数据,如图所示,这些作用点正好是每位信号的中点。我们将每传输一位数据的时钟脉冲个数称为波特率因子,图5-34的波特率

4、因子 = 16。,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计, 方式1的发送 在TI为0情况下(表示串行口发送控制电路处于空闲状态),任何写缓冲器SBUF指令(如MOV SBUF,A)均会触发串行发送过程:51 串行口自动在8个数据位的前、后分别插入一个起始位和一个停止位,构成10位信息帧,按设定的波特率依次输出起始位、8个数据位(顺序为b0b7)和停止位。当8位数据发送结束后(即开始发送停止位)时,串行口自动将发送中断标志TI置1。TI标志可用来查询发送过程是否完成。在中断处于开放状态下,TI有效时,将导致串行中断。,工程背景下的单片机原理及系统设计, 方式1的接收过

5、程 在接收中断标志RI为0(串行接收缓冲寄存器SBUF处于空闲)情况下,当REN位为1时,串行口处于接收状态。此时,串行口不断检测RXD引脚的电平状态(检测频率是移位脉冲的波特率因子倍),当发现RXD引脚由高电平变为低电平后,表明发送端开始发送起始位,便自动启动接收过程。按设定波特率顺序读出数据位和停止位。,工程背景下的单片机原理及系统设计,当接收完一帧信息(即接收到停止位)后,如果RI位为0,便将接收到的内容装入串行数据输入缓冲寄存器SBUF中,并将串行接收中断标志RI置1。因此RI可作为接收过程是否已完成查询标志用。在串口中断及总中断处于开放状态下,RI有效时将触发串行中断。 值得注意是C

6、PU响应串行中断后,不会自动清除RI或TI标志位,需要用指令如“CLR”等清除RI或TI标志。以便继续进行串口的收/发工作。,工程背景下的单片机原理及系统设计, 方式2和方式3的帧数据格式与方式1的区别 串行口方式2与方式3都是9位异步串行通信口,唯一区别是方式2的波特率固定为时钟频率的32或64分频,不可变。由于他的波特率与通用串行通信设备对不上,因此只用于51机之间的通信,方式2的波特率是所有方式中最高的,这是他的优点。 方式3与方式1在波特率方面没有区别。区别在于帧格式上:方式2、方式3是9位数据格式。一帧信息为11位,由一位起始位、9位串行数据、一位停止位。,工程背景下的单片机原理及系

7、统设计,发送方在方式2、方式3时,9位数据的构成与写入顺序为:必须先将第9位(用b8)表示,写入SCON的TB8位,他通常用于表示同帧中的字节数据(b0b7)的性质如:数据或命令等辨识信息。在双机通信(多机通信不适用)中,第9位数据也可作为帧数据的奇偶校验信息;第2步,将8位数据写入SBUF,注意:一但执行写SBUF命令,发送过程便被启动,除非TI为“1”。这就是为什么先写第9位数据的原因。由于方式3波特率可变,因此,串行口方式3比方式2应用范围更广。,工程背景下的单片机原理及系统设计,方式2、方式3中,接收的信息的第9位在SCON寄存器的RB8位中。8位数据仍在SBUF中。 方式2、方式3是

8、多机通信方式,在应用时要留意多机通信控制位SM2的含义。,工程背景下的单片机原理及系统设计,5.8.5双机通信及编程举例 1.最简单的双机通信例子 双机通信也称为点对点通信。是通信中最基本的形式。顾名思义,双机通信就是两台机的信息交换过程。本节我们只讨论单片机之间的双机通信问题,至于单片机与PC机之间的通信问题,将在本章的后续部分讨论。,工程背景下的单片机原理及系统设计,若两片51机相距很近,可以不需任何调制与电平转换而直接互联,其通信电路如图5-35所示。我们可将这种联接方式与打电话(双方耳朵与听筒的交叉)进行对比,更容易理解。就象打电话双方必须用双方都能懂的语言交流一样。注意:图中的地线是

9、用于统一双方的“0”参考电位的。 方式1、2、3都能进行双机通信,但要注意:在点对点通信时,为避免复杂操作,双方都要将SM2置“0”。,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计,【例5-16】 两个8031系统进行最高速率通信。要求使用串口方式2,8031A作为发送方,不使用串口中断;B机接收,使用串口中断。设两机的focs相同,发送方只将一个字节数据,如0AAH发向B机便结束。 分析:本例是最简单、最基本的一个通信程序了。编写通信程序要全盘考虑双方的硬件设置(主要是工作方式、focs等),以实现波特率匹配;还要制定通信协议(发送信息的识别方法、数据有含义的解释方法、

10、通信数据的个数、一次通信过程的结束条件、要不要校验、用什么校验方式等)。,工程背景下的单片机原理及系统设计,本例中硬件条件:方式2、focs相等;协议简单:收/发一个数据,不要求校验和解释。 解 根据题目要求,发送方参考程序如下: ORG0000H AJMPSTART ORG0040H,工程背景下的单片机原理及系统设计,START:MOVSP,#5FH MOV SCON,#90H;方式2,允许接收SM2=0 MOVPCON,#80H;波特率加倍,最高速率 SETPSW.4 CLRPSW.3;工作区用2区 MOV SBUF,#0AAH WAIT2:JBCTI,STOP SJMP WAIT2 ST

11、OP:SJMPSTOP END,工程背景下的单片机原理及系统设计,接收方参考程序如下: ORG0000H AJMPSTART ORG0023H LJMPSINT ; 串行中断入口 ORG0040H START:MOV SCON,#90H;方式2,允许接收SM2=0 MOV PCON,#80H;波特率加倍 MOVIE,#90H;串口及总中断开放 CLRF0,工程背景下的单片机原理及系统设计,SETBPSW.4 CLRPSW.3;工作区用2区 WAIT1:JBCF0,TRDATA ; F0由中断服务程序置位 SJMPWAIT1; 置位或清零 TRDATA:CLRES;关串口中断,此为甲机的程序 M

12、OV A,SBUF SJMP $ SINT:CLRRI SETBF0;置成功接收标志,工程背景下的单片机原理及系统设计,RETI;中断返回 END 训练题 5-28 教材中【例5-15】中若focs= 6MHz,通信的波特率为多少?又串口方式2对通信双方的focs有何要求?,工程背景下的单片机原理及系统设计,2.串行通信数据校验方法之一:奇偶校验 受串行通信的距离、通信速率、信息量、通信线路、环境条件等因素的影响,可能会出现数据传输错误问题。 为保证通信的正确性,计算机中采用对通信数据的校对方法,确认数据传输的正确性。称为校验。实际上,校验是手段,纠错是目的。 我们将这种利用数据的奇偶性查错的

13、方法称为奇偶校验法。这是本书讨论的第一种校验法。,工程背景下的单片机原理及系统设计,奇偶校验的实现方法如下: 发送方将所发送的每一帧数据的奇偶状态位,作为发送数据的第九位数据写入SCON的TB8位,将字节数据写入发送缓冲器SBUF中后,帧数据开始发出。 接收方接收的每一帧数据,第九位数据存在SCON的RB8位中,字节数据在缓冲器SBUF中,接收方将SBUF中数据的奇偶性与RB8进行比较,两者相等则确定此帧数据通信正确无误,否则,这帧数据必然有错误。 对于校验的结果,通信双方根据通信协议进行相应的处理,这里没有通用方法。,工程背景下的单片机原理及系统设计,使用奇偶校验应注意的问题: (1)51机

14、只有在串口方式2、3时(9位数据)且SM2位必须为“0” 才有条件进行奇偶校验; (2)为测得数据的奇偶状态,用MOV A,SUBF指令最方便; (3)并不是所有的通信都要使用校验,更不是都要用奇偶校验,校验与否通信双方要在通信协议中确定。反映在习题中,要认真审题,要求校验,才能写校验的程序部分,避免犯画蛇添足的错误。,工程背景下的单片机原理及系统设计,【例5-17】 两个8031系统进行双机通信。要求使用串口方式2、奇偶校验、使用工作寄存器组2。8031A作为发送方,连续发送n个字节(片内RAM足够使用),B机接收。设两机的focs相同。只要校验的结果 分析:本例是奇偶校验应用问题。编写双机

15、通信程序,延用【例5-15】的方法,再将奇偶校验的内容加进去。发/收程序的过程是往复式的,他们结构基本相同。因此,先写发送程序,再修改为接收程序就容易多了。 本例的特点是奇偶校验和多帧数据的收/发。另外还采用发送中断编程,注意体会。,工程背景下的单片机原理及系统设计,发送方参考程序如下: ORG0000H AJMPSTART ORG0023H LJMPSINT ; 串行中断入口 ORG0040H START:MOVSP,#5FH MOVR7,# n CLR01H;01H = 0通信成功,= 1通信错误 CLRF0;F0 = 1启动发送,工程背景下的单片机原理及系统设计,MOV SCON,#80

16、H;方式2,不允许接收SM2=0 MOVPCON,#80H;波特率加速 MOV IE,#90H;串口及总中断 SETBPSW.4 CLRPSW.3;工作区用2区 WAIT1:JBCF0,TRDATA; F0由过程设置 SJMPWAIT1; 置位或清零 TRDATA:MOV A,R0 MOVC,P;取奇偶位 MOV TB8,C;装入TB8作为第9位数据,工程背景下的单片机原理及系统设计,MOV SBUF,A INC R0 ;CPU可进行其他工作 WAIT2:JBC 01H,AGAIN SJMP WAIT2 AGAIN:DJNZ R7,TRDATA;R7为发送字节数 MOVR7,# n;重复初值

17、LJPMWAIT1 SINT:CLRTI SETB01H,工程背景下的单片机原理及系统设计,RETI END 接收方参考程序如下: ORG0000H AJMPSTART ORG0023H LJMPSINT ; 串行中断入口 ORG0040H START:MOVSP,#5FH,工程背景下的单片机原理及系统设计,MOVR6,# n CLR01H;01H = 0成功,= 1错误 CLRF0;F0 = 1一次接收完成 MOV SCON,#90H;允许接收SM2=0 MOV PCON,#80H;波特率加速 MOV IE,#90H;串口及总中断 SETBPSW.4 CLRPSW.3;工作区用2区 ;CPU

18、可进行其他工作,工程背景下的单片机原理及系统设计,WAIT1:JBCF0,USEDATA;F0数据成功接收 SJMPWAIT1;置位或清零 USEDATA:JBC01H,DELERR;转通信出错处理 ;通信正常处理 SJMPOTHER DELERR:;通信出错处理程序部分 OTHER:;CPU进行的其他工作 MOVR7,# n SJMP WAIT1,工程背景下的单片机原理及系统设计,SINT:CLRRI;接收中断服务程序 MOVA,SBUF MOV R1,A INCR0 DECR6 JNBP,NOP;P为0转移 JNBRB8,ERR;P为1,RB8为0转错误处理 SJMPCON1 NOP:JN

19、BRB8,CON1 ERR:ESTB01H;置出错标志,工程背景下的单片机原理及系统设计,CON1:CJNER6,#00H,CONJ;没收完继续 SETBF0;接收完成标志 CONJ:RETI;中断返回END,工程背景下的单片机原理及系统设计,小结:整个通信过程收、发数据的时刻是随机的,但多数情况下,发送数据的时机都是在CPU的掌控之下的,即什么情况下该发什么数据都在程序中安排好的。在这种情况下,常用查询方式编写数据发送程序部分,而不用中断方式编程,效果更好。至于数据接收的时刻,则完全是随机的,用串口中断来实时响应“数据到”事件。由于只在数据接收时开放了串口中断,因此中断服务程序只需对接收数据

20、进行处理。 串口接收中断的使用方法也应视具体通信任务而定,工程背景下的单片机原理及系统设计,训练题 5-29若教材中【例5-17】中,n = 256,例题的计数器能装得下吗?若认为装得下,n 的初取值为何?若认为装不下,修改程序结构。注意要用片外RAM!,工程背景下的单片机原理及系统设计,3.定时器T1溢出率的计算 串口方式1、3波特率可变,且与T1定时器T1溢出率有关。串口方式1、3波特率的计算方法由式(5-5)给出: (1)T1工作于方式0 很少用,从略,可自学。 (2)T1工作于方式1 方式1为16位定时器,设T1的初值Z(16位)则T1的溢出率(m)为: (5-6),工程背景下的单片机

21、原理及系统设计,式中:NR为执行T1溢出到恢复初值的中断服务的周期数:NR = N1+N2 其中N1为CPU从响应中断到转入中断服务程序所需的周期数,一般N1=5;N2为执行为定时器重装初值的周期数,取N2=4。所以:NR = 9。,工程背景下的单片机原理及系统设计,(3)T1工作于方式2 方式2为自动恢复初值的8位定时器,设T1的初值Z(8位),则T1的溢出率(m)为:(5-7) 因为T1方式2不需要中断处理,所以NR=0。 通常,用于波特率发生器时,T1选用方式2较好。最重要的理由是他的自动重装特性,省去中断服务程序,节省了CPU的开销。只有对于非常低的波特率,定时器方式2不能用时,才选用

22、定时器T1方式1。,工程背景下的单片机原理及系统设计,【例5-18】波特率计算方法与误差分析。设串行口工作于方式1或方式3,波特率定为2400,T1工作于方式2系统fosc=6MHz。求T1的初值和波特率的误差 解:综合(5-5)、(5-6)式,得 (5-8) 本例中:整理(5-8)式得 (5-9),工程背景下的单片机原理及系统设计,取SMOD=0得Z=249.49,由于Z只能取整数,若取取Z=250时,波特率为 波特率相对误差为 同理若取Z=249则:波特率为2232,波特率相对误差为误差过大,不易使用。实践表明:当两个串行通信设备之间的波特率误差超过2.5%时,串行通信将无法进行,且通信速

23、率越高,发送、接收波特率的允许误差范围就越小。,工程背景下的单片机原理及系统设计,为此,取SMOD=1,计算得Z=242.98,取Z=243=F3H, 波特率=2403.8,误差为0.16%,可满足精度要求。但误差不能完全消除。 彻底消除波特率误差的办法,调整单片机系统的fOSC,当其为1.8432整数或半整数频率均可以消除波特率非整数误差,当Z出现小数时,可调整SMOD使之为整数(1.8432的有理数倍频率也可以),11.0592MHz则为最常用的一种常用的频率,因为11.0592 是1.8432的6倍,且与标准51最高频率(12MHz)最接近的一个。这样标准设备及PC常用的波特率在51机上

24、都可无误差的产生出来。,工程背景下的单片机原理及系统设计,为使用者提供方便。因此要学会波特率-定时器初值查表的方法。常用波特率列于表5-6中。,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计,在学习串行通信时常见错误:混淆串行口工作方式和定时器工作方式。 【例5-19】两台51以串口方式1进行通信,约定波特率为9600。A机的focs为11.0592MHz,B机的focs为7.3728MHz,编写A机为发送方,B机为接收方,只进行一个字节数据通信的程序。 解:本例的目的是学习在51机的开发系统下实现通信的编程与操作过程。 第一步:设两机相距

25、不远,不需要任何形式的调制与电平转换,直接用导线作为通信线路,如图5-32所示,工程背景下的单片机原理及系统设计,第二步:确定定时器工作方式,计算定时器初值。 作为波特率发生器用,T1最好用的就是方式2。下面则是初值的计算问题: A机的初值Z可直接从表5-6中查出为FDH(SMOD=0); A机的初值Z计算过程如下:将式(5-9) ,中的2400改为9600并取SMOD=0得,工程背景下的单片机原理及系统设计,易知:取SMOD=1时,Z = 256 4 = 252 = FCH;在两个可取的初值中,应尽量取SMOD=0的,因为他的波特率因子大。 第三步:编写发送方参考程序如下: ORG0000H

26、 AJMPSTART ORG0040H START:MOVSP,#5FH MOVSMOD,#20H;T1方式2、定时 MOVTH1,#0FDH,工程背景下的单片机原理及系统设计,MOVTL1,#0FDH MOV SCON,#40H;方式1,禁止接收SM2=0 MOV PCON,#00H;波特率不加倍 SETBTR1;开启波特率发生器 MOV SBUF,#0AAH WAIT:JBCTI,STOP SJMP WAIT STOP:SJMPSTOP END,工程背景下的单片机原理及系统设计,第四步:COPY发送程序,稍加修改得接收方参考程序如下: ORG0000H AJMPSTART ORG0040H

27、 START:MOVSP,#5FH MOVSMOD,#20H;T1方式2、定时 MOVTH1,#0FEH MOVTL1,#0FEH,工程背景下的单片机原理及系统设计,MOV SCON,#50H;方式1,允许接收 MOVPCON,#00H;波特率不加倍 SETBTR1;开启波特率发生器 WAIT:JBCRI,RECI SJMPWAIT RECI:MOVA,SBUF SJMP$ END,工程背景下的单片机原理及系统设计,第五步:分别在A、B两台开发机的PC机的编译器上,对这两个源程序进行编译、连接,通过后,进入调试界面; 若上述调试成功,A、B方交换程序,反向收/发,多数是成功的。若不然,仿真器的

28、芯片可能有损。 再此基础上,将程序复杂化,如连续收/发多个字节试试,收益将会很大。,工程背景下的单片机原理及系统设计,4.串行通信数据校验方法之二:累加和校验 与奇偶不同,累加和校验以组为单位进行,效率高 累加和校验的原理和工作过程如下: 数据传送时,发送方在数据发送前先逐一对每个数据进行累加求和。累加和可以是任意位,但一般采用8位,存放累加和的寄存器称为累加和寄存器。注意,在累加过程中溢出的部分自动丢弃,即累加和只保留和的低8位。在每组数据发送完后,发送方要接着将这组数据的累加发出去,以为接收方提供的校验依据。,工程背景下的单片机原理及系统设计,接收方每次接收一个数据,进行一次累加,形成累加

29、和。当一组数据接收完后,还要再接收一个由发送方发来的累加和数据帧。将这个累加和数据与本机产生的累加和进行比较。若两者相等则可认为这组数据收、发正确,否则,收/发过程中至少存在一次错误。至于每组数据多少,根据双方制定的通信协议确定。 对于校验的结果,通信双方根据通信协议进行相应的处理。这里没有通用方法。 使用累加和校验应注意的问题: 累加和校验不需要9位数据格式支持,即51机串口方式1、2、3都可进行累加和校验; 并不是所有的实际通信都要使用校验,是否要进行数据校验。要根据通信双方的通信协议而定。,工程背景下的单片机原理及系统设计,【例5-20】设通信双方51机的fosc均为11.0592 MH

30、z,双方约定:波特率9600,8位数据,采用累加和校验。编写程序实现如下工作: A机发送:将外部数据存储器4000H42FF单元的内容发送至B机。 通信协议:A机在发送之前先将数据块长度发给B机,若B机接收正确,应答00H,否则,回答其他任意字节数据作应答后,重新接收。以后每发完256字节(不足256时当计数器低位字节为0时),向B机发送一个累加校验和。当数据全部发送完后,若B机接收正确,应答00H,否则,应答其他数据,准备重新接收。主机收到正确应答后,则结束本次通信过程,否则重发数据直到成功。,工程背景下的单片机原理及系统设计,发送方子程序清单: TRT: MOVTMOD,#20H;波特率设

31、置 MOVTL1,#0FDH MOVTH1,#0FDH SETBTR1 MOVSCON,#50H;方式1,REN=1 MOVPCON,#00H;串口初始化,工程背景下的单片机原理及系统设计,RPT: MOVDPTR,#4000H MOVR6,# NUMLOWH MOVR7,# NUMHIH MOV R5,#00H ;地址及长度计数器 MOVSBUF,R6 MOVA,R5 ADD A,R6 MOVR5,A;形成累加和送R5 ML0: JBCTI,ML1 SJMPML0,工程背景下的单片机原理及系统设计,ML1: MOVSBUF,R7;发送长度高8位 MOVA,R5 ADDA,R7 MOVR5,A

32、;形成累加和送R5 ML2: JBCTI,ML3 SJMPML2 ML3: MOVSBUF,R5;发累加和后清零 MOVR5,#00H ML4: JBCTI,ML5 SJMPML4,工程背景下的单片机原理及系统设计,ML5: JBCRI,ML6 ;等B机回答 SJMPML5 ML6: MOVA,SBUF JZML7 ;正确转ML7 LJMPPRT ;不正确重发 ML7: CJNER6,#00H,CONWO LJMPML9;计数低位为0转 CONWO:DECR6 MOVXA,DPTR ;读数据写入BUF MOVSBUF,A,工程背景下的单片机原理及系统设计,ADDA,R5;形成累加和 MOVR5

33、,A INCDPTR ML8: JBCTI,ML90 ;等待发完一字节 SJMPML8 ML90:LJMPML7 ML9: CJNER7,#00H,ML14;发完?否!只发了一页转 MOVSBUF,R5;完成,发最后一个累加和 MOVR5,#00H,工程背景下的单片机原理及系统设计,ML10: JBCTI,ML11 SJMPML10 ML11: JBCRI,ML12 ;等B机回答 SJMPML11 ML12: MOVA,SBUF JZML13;正确返回 LJMPRPT;错重发 ML13: RET ML14: DECR7 MOVSBUF,R5 ;发校验和,工程背景下的单片机原理及系统设计,MOV

34、R5,#00H ML15: JBCTI,CONWO;全部字节没发完继续 SJMPML15 本题目的限制条件为不能发0个数据,因此,在调用此程序时,要判断发送数是否为“0”。B机接收程序留作习题来完成。 【例5-20】用C语言编写【例5-19】的接收方程序。(自学),工程背景下的单片机原理及系统设计,训练题 5-33 用汇编语言编写教材中【例5-20】的接收方程序。,工程背景下的单片机原理及系统设计,【例5-22】串行口工作方式1及通信协议在本教材工程实例中的应用。 通信在实际中,一定要有通信协议,哪怕是最简单的。本工程只涉及应用协议部分。 本工程系统中键盘显示模块(图3-13)接收键盘命令,通

35、过串口发送到检测控制模块。我们将系统任务简化为:检测控制模块只有上、下、左、右及工作参数和工作6个键。前4个命令的用于加工机械与工件的定位(微调),工作参数则是工件的加工信息(多字节,其他命令为单字命令),在收到工作命令后,便进行一个工件的加工,如此反复。,工程背景下的单片机原理及系统设计,通信协议要对每个命令进行编码,键盘显示模块每发一个命令要求检测控制模块校验并应答,如应答不正确,则键盘显示模块将重发此命令。对命令的编码越自然越好。由于每个键都有对应的键值,所以上、下、左、右4个命令就用其键值编码,参数和工作用键值以外的任意数表示。 本系统采用灵活的校验方法,其实是累加和的变通 编程通信程

36、序时,先编写键盘显示模块这部分的,键盘响应部分的程序与【例5-13】一样,在本例中就只写通信部分。其主体结构如下:,工程背景下的单片机原理及系统设计,void si_send_data(uchar s_data) SBUF = s_data; while(TI != 1); TI = 0; ,工程背景下的单片机原理及系统设计,void repeak (void)/*限时等待串口回答函数*/ delay_times = 6000; while(RI = 0) delay_times -=1; DelayX1ms(1); if (delay_times = 0) break; ,工程背景下的单片机

37、原理及系统设计,Main()/*主程序部分,同接收程序*/ TMOD=0 x21;/*定时器0方式1,定时器1方式2*/ TL1 = 0 xfd;/*置初值*/ TH1 = 0 xfd; PCON = 0 x80;/*PCON = 0 x80,波特率19.2K*/ SCON = 0 x50;/*串行口为方式1*/ TR1 = 1; IT0 = 1; IT1 = 1; IE=0 x07;/*开中断,允许INT0,INT1,T0中断*/ /* 主程序其他部分*/,工程背景下的单片机原理及系统设计,STEP77:while (INTM_MARK =0);/*见例5-13*/ if (INTM_MAR

38、K = 0 x01)/*RIGHT键*/ si_send_data(0 x01); if (INTM_MARK = 0 x07)/*LEFT键*/ si_send_data(0 x07); if (INTM_MARK = 0 x04)/*UP键*/ si_send_data(0 x04); if (INTM_MARK = 0 x09)/*DOWN键*/ si_send_data(0 x79); if (INTM_MARK = 0 x02)/*R键,确定*/ goto R_key; INTM_MARK = 0; gotoSTEP77;,工程背景下的单片机原理及系统设计,R_key:si_send

39、_data(0 x77);/*77H为工作参数编码*/ Ep_Use_Data19 = 0; for (i=7;i13;i+)/*发送6个数*/ SBUF = Ep_Use_Datai; Ep_Use_Data19+=Ep_Use_Datai;/*形成累加和*/ while(TI != 1); TI = 0; ,工程背景下的单片机原理及系统设计,repeak();/*等待时间为6秒*/ if (RI = 1) RI = 0; si_re_data = SBUF; if (si_re_data != Ep_Use_Data19)/*累加和不对,重发*/ goto R_key; else goto

40、 STEP9;,工程背景下的单片机原理及系统设计,STEP9:si_send_data(0 xaa);/*AAH为工作编码*/ repeak();/*等待时间为6秒*/ if (RI = 1) RI = 0; si_re_data = SBUF; if (si_re_data != Ep_Use_Data19)/*累加和不对,重发*/ goto WAIT; else goto STEP9;,工程背景下的单片机原理及系统设计,WAIT: while(RI != 1); RI = 0; si_re_data = SBUF; if (si_re_data != 0 x92)/*0 x92为加工完成码

41、*/ goto DETR;/*转应答不对处理*/ goto R_key;/*重复加工*/ /* 主程序其他部分*/ ,工程背景下的单片机原理及系统设计,编写检测控制模块程序时,第一步先做好程序框架如下: #define ON 0 xaa void s_int(void) interrupt 4 /*单片机串口中断原型*/ status4 = 1; RI = 0; /*清中断标志*/ rece_count = SBUF; ,工程背景下的单片机原理及系统设计,while(1) ES = 1;EA = 1; if (status7 =1) /*status7为系统重新工作命令标志*/ break;

42、while(status4 = 1) status4 = 0; switch (rece_count) ,工程背景下的单片机原理及系统设计,case 0 x01:/*RIGHT微调一个单位*/ ; break; case 0 x07:/*LEFT微调一个单位*/ ; break; case 0 x04:/*UP键*/ ; break;,工程背景下的单片机原理及系统设计,case 0 x09:/*DOWN键*/ ; break; case 0 x02:/*R键后才可进行加工*/ ; break; case 0 x77:/*加工参数键*/ ; break;,工程背景下的单片机原理及系统设计,cas

43、e 0 x77:/*加工指令键*/ for (i=0;i6;i+)/*接收加工参数*/ while(RI = 0); RI = 0; OpDatai = SBUF; OpData7+=OpDatai; si_send_data(OpData7);/*发送累加和*/; break;,工程背景下的单片机原理及系统设计,case ON:/* 0 xaa加工命令*/ /* 执行加工命令并完成*/ES = 0; SBUF = 0 x92;/*通报加工完成*/ while(TI != 1); TI = 0; ES = 1; break;,工程背景下的单片机原理及系统设计,5.8.6多机通信原理及系统设计

44、1.51机多机通信的物理基础 串行口方式2、3支持多机通信。对其控制集中在SCON的SM2位上。SM2为多机通信控制位。 SM2=1,则接收到的第9位数据(RB8)为0时,不启动接收中断标志RI(即保持RI=0),并且将接收到的前8位数据丢弃。RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI 当SM2=0时,则不论第9位数据为0或1,只要串行口收到有效数据帧,置位RI,并将前8位数据装入SBUF中。 其中RB8是寄存器SCON的一个控制位,当串行口工作在方式2和方式3时,为接收到的第9位数据,他是发送方第9位数据,工程背景下的单片机原理及系统设计,(TB8)的对应数据位。注意:作为

45、奇偶校验位用,只是RB8的一个兼职工作。 2.多机通信的分类 多机通信分有主多机通信和多机通信两种系统。 有主多机通信系统,也称为主-从多机通信系统。 与主-从多机通信系统相比较,无主多机通信系统中,各计算机所处的地位相同,没有主-从之分。系统中每台计算机随时都可以启动一次通信过程。 主-从式多机通信系统构成如图5-36所示。 本书只讨论主-从通信技术。,工程背景下的单片机原理及系统设计,图5-36,工程背景下的单片机原理及系统设计,3.51机构成的主-从系统通信的步骤: 首先置所有从机SM2位为1,即从机处于监听状态 主机先发出一帧广播地址信息8位地址,第9位 为地址/数据信息标志位(主机通

46、过置TB8位为“1”或为 “0”来实现),该位为“1”表示为地址(命令)帧信息; 从机收地址帧后,与本机的从地址比较,如地址相符 ,则将SM2位清0,同时将自己的从地址发回主机(可 选),以表示应答(注意,从机发送内容一定为数据,即 从机的TB8位应恒为“0”),并准备接收主机随后发来的,工程背景下的单片机原理及系统设计,所有信息;其他与地址不符的从机保持SM2=1不变,退 出通信,他们将不会收到主机随后对指定从发出的数据, 直到收到主机发出新的地址帧。 主机收到从机的正确应答后(可选),进入本次通 信过程。这里关键是主机要将TB8置为零(数据信息标 志),这样只有被选中的从机可接收到主机的信

47、息,而组 内其他从机不受干扰,命令或数据全部发送完成后,即可 结束本次通信过程。,工程背景下的单片机原理及系统设计, 指定的从机接收命令或数据完成后,即可结束本次通信过程。注意:结束时,一定要置SM2为1,进入监听状态。否则,该从机从此再不能接收到主机的呼叫,而在主机给其他从机发送数据信息时,将给出错误应答,从而造成整个通信系统的崩溃。 重复步骤15,进行下一次通信过程。 4. 由51机构成的主-从系统通信协议 为保证通信的可靠性,可在每个通信过程中用往复应答来保证。当从机不应答时,可多次广播呼叫,另一方面为防止系统进入等待死循环,通信可加限时控制,一旦通信超时,则应退出通信,返回主程序准备再

48、次通信。,工程背景下的单片机原理及系统设计,5.8.7多机通信及编程举例 【例5-23】 主-从方式多机通信,设系统中所有51机fosc=11.0592MHz。要求:通信波特率9600。模拟通信内容:每次通信主机发一个字节的从机号(0255),接着发一个字节的读或写命令。如主机发写命令,主机接着发第三个数据;如主机发读命令,主机则接收从机发回的一字节数据,并返回主程序。从机接收到主机第一字节后,与自己的从机号比较,两者相等则从监听转为接收方式,完成本次通信后,从机回到监听方式并返回主程序;其他从机直接返回主程序。 解 只有方式2、3支持多机通信。但要求波特率9600,所以只能选用方式?,工程背

49、景下的单片机原理及系统设计,参考主机程序: ORG0000H SJMPSTART ORG0040H START:MOVSP,#60H MOVTMOD,#20H MOVTH1,#0FDH MOVTL1,#0FDH MOVPCON,#00H,工程背景下的单片机原理及系统设计,MOVSCON,#0C0H ; 方式3 SETBREN SETBTR1 SETBTB8;准备发(地址)命令 MOVSBUF,B;被呼叫的从机号存于B中 WAIT1:JBCTI,CON1;等待发送完成 SJMPWAIT1 CON1:CLRTB8;发送命令 MOVA,R5;命令存于R5中,00H为写01H为读 MOVSBUF,A,

50、工程背景下的单片机原理及系统设计,WAIT2:JBCTI,CON2 SJMPWAIT2 CON2:CJNEA,#00H,READ;转读命令处理 MOVA,R6;要发送的数据存于R6中 MOVSBUF,A WAIT3:JBCTI,CON3 SJMPWAIT3 CON3:SJMPSTOP READ:JBCRI,STOP1 SJMPREAD,工程背景下的单片机原理及系统设计,STOP1:MOVR7,SBUF;接收从机的数据存于R7中 STOP:SJMPSTOP END 从机参考程序: ORG0000H SJMPSTART ORG0023H LJMPSCOM ORG0050H,工程背景下的单片机原理及

51、系统设计,START:MOVSP,#60H MOVR0,#01H;R0为从机号,设为1号 CLRF0 MOVTMOD,#20H MOVTH1,#0FDH MOVTL1,#0FDH MOVPCON,#00H MOVSCON,#0E0H ;方式3,SM2=1(地址) SETBREN SETBES,工程背景下的单片机原理及系统设计,SETBTR1 SETBEA CHECK:JBCF0,STOP SJMPCHECK STOP:SJMPCHECK;调试程序用,再通信多次 SCOM:CLRRI CLREA MOVA,SBUF SUBBA,R0 JNZCON4;不是本机,退出中断,工程背景下的单片机原理及系

52、统设计,CLRSM2;是本机,准备接收命令 WAIT2:JBCRI,CON2 SJMPWAIT2 CON2:MOVA,SBUF JNZREAD;不是写命令,转读处理 WAIT3:JBCRI,CON3 SJMPWAIT3 CON3:MOVR1,SBUF ;(R1)为从机发给主机的内容 SJMPCON4,工程背景下的单片机原理及系统设计,READ:MOVSBUF ,R1 WAIT5:JBCTI,CON5 SJMPWAIT5 CON5:SETBF0 CON4:SETBEA SETBSM2 RETI END,工程背景下的单片机原理及系统设计,5.9 RS-232-C接口标准 5.9.1 RS-232-

53、C接口标准 DB9型RS-232-C串行接口连接器如图5-37所示。各信号含义如下: 地线GND 收/发数据端 RXD:串行数据接收,输入,空闲时为负电位(逻辑“1”); TXD:串行数据发送,输出空闲时为负电位(逻辑“1”);,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计, 联络(控制)信号 RTS: 发送请求,输出。当DTE准备好要向DCE发送数据时,向接收方(DCE)发送的信号。 CTS:清除发送,输入。当DCE接收到DTE的RTS请示信号后,如果准备好接收数据,就向DTE发送清除发送信号。 DTR:数据终端(DTE)就绪信号,输出。当DTE要与DCE通信时,则发送

54、此信号,在DTR的触发下,DCE与通信线相连,并且由DTR有效来保持这种连接。DTR是DCE设备的主控信号;,工程背景下的单片机原理及系统设计,DSR:数据设备(DCE)准备就绪信号,输入,当DCE收到DTR信号后,完成自身线路的连接后,就向DTE发出数据设备就绪信号; 以上四个信号对数据传输起着控制作用。事实上,只有当以下条件满足时,DTE才向DCE发送数据: DTR有效,为正电位; DSR有效,为正电位; RTS有效,为正电位; CTS有效,为正电位;,工程背景下的单片机原理及系统设计, 调制解调器状态信号 RI:振玲指示; CD: 载波检测,输入。当调制解调器收到远程载波信号后,如果准备

55、好与远程主机交换数据,就向数据终端(DTE)发出载波检测信号; RI、CD两信号是专为电话网设计的,只有利用调制解调器进行远程通信时才需要。,工程背景下的单片机原理及系统设计,5.9.2 RS-232-C逻辑电平 在RS-232-C标准中,为保证数据可靠传送,均采用EIA电平。规定用-3-15 V表示逻辑1,+3+15 V表示逻辑0。-3V+3V为过渡区,他保证即使信号线受到干扰,其信号的逻辑也不易发生变化。 此外,RS-232-C标准还规定发送端与接收端之间必须保证2V的噪声容限。 噪声容限定义:指发送端必须达到的逻辑电平的绝对值的下限与接收端识别输入逻辑所需绝对值下限之差。 RS-232-

56、C接收下限为|-3|V,噪声容限为2V,则发送端下限绝对值为3V+2V=5V。也就是说在发送,工程背景下的单片机原理及系统设计,端下限绝对值为3V+2V=5V。即在发送端+5V+15V表示逻辑0;-5V-15V表示逻辑1。 5.9.3 RS-232-C标准的电气连接方式 RS-232-C标准中,采用如图5-35所示的非平衡的连接方式。所谓非平衡的连接,就是每条信号线只有一条连线。缺点是信道噪声会叠加在信号上并全部反映到接收器中,这会加大通信的误码率;优点是降低了通信成本,在短距离通信中(RS-232-C标准中规定15米)常用。,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计

57、,5.9.4 RS-232-C设备与TTL/CMOS器件接口-电平转换 PC机及带有异步串口的设备,多数为标准RS-232-C电气标准接口。他们均采用EIA电平。在工程应用中,常需要单片机与PC机或其他带有RS-232-C接口设备进行通信。单片机串行口采用正逻辑的TTL电平,他们电平在幅度上和逻辑意义上都不兼容,但帧格式在逻辑上完全相同,因此他们是有互通条件的。要实现TTL电平与EIA电平系统的通信,只需在他们之间加电平转换(翻译)环节。,工程背景下的单片机原理及系统设计,RS-232-C与TTL之间电平转换芯片现在常用MAX232系列专用芯片。 该系列芯片内置了电压倍增电路及负电源电路,所以

58、集成度高,使用单+5 V电源工作,只需外接5个容量为0.11 F的电容即可提供两路RS-232-C与TTL电平之间转换通道,由于以上的优秀品质,被广泛应用。该系列中典型芯片MAX232的内部结构及典型应用如图5-39所示。,工程背景下的单片机原理及系统设计,工程背景下的单片机原理及系统设计,在实际应用系统中,可以使用RS-232-C中的4个联络(控制)信号,通过硬件握手方式,进一步保证通信质量,但这会增加硬件成本(单片机方需增加I/O、还要增加电平转换通道数量),特别是长距离时;也可以通过协议以软件握手的方式,一样可保证通信的可靠性。 到底应如何看图5-39与图5-35的区别?从硬件上看,图5-39由于在传输线上加入电平转换器,,工程背景下的单片机原理及系统设计,实现了通信双方的电平匹配,从帧的数据流格式上看,通信双方都没做任何改变,换句话说,如果一个不懂硬件的编程者,他在调试过单片机与单片机、PC

温馨提示

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

评论

0/150

提交评论