MCS-51单片机的定时器计数器.ppt

上传人:小飞机 文档编号:6512346 上传时间:2023-11-08 格式:PPT 页数:53 大小:401.50KB
返回 下载 相关 举报
MCS-51单片机的定时器计数器.ppt_第1页
第1页 / 共53页
MCS-51单片机的定时器计数器.ppt_第2页
第2页 / 共53页
MCS-51单片机的定时器计数器.ppt_第3页
第3页 / 共53页
MCS-51单片机的定时器计数器.ppt_第4页
第4页 / 共53页
MCS-51单片机的定时器计数器.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《MCS-51单片机的定时器计数器.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机的定时器计数器.ppt(53页珍藏版)》请在三一办公上搜索。

1、郑州大学,3.3 MCS-51单片机的定时器/计数器,3.3.1 定时器/计数器 1基本概念(1)计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。(2)定时:8051单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。,http:/,郑州大学,(3)定时的种类 软件定时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时

2、间。因此软件定时的时间不宜过长。硬件定时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。可编程定时器:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。,http:/,郑州大学,MCS-51单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时

3、、外部计数和检测等。计数器:对引脚T0(P 3.4)和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器:对系统晶振振荡脉冲的12分频输出进行计数。(1)定时器/计数器的结构组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。T0:TL0(低8位)和TH0(高8位)T1:TL1(低8位)和TH1(高8位),2MCS-51内部定时器/计数器,http:/,郑州大学,8051单片机内部的定时器/计数器的结构如下图所示。,http:/,郑州大学,(2)控制寄存器TCON(88H),TF1 TR1

4、 TF0 TR0 IE1 IT1 IE0 IT0,TF0/TF1:T0/1计数溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。=1:计数溢出;=0:计数未满。TR0/TR1:T0/1启停控制位。=1:启动计数;=0:停止计数。IE0/IE1和IT0/IT1:用于管理外部中断(前面已介绍过)。,http:/,郑州大学,M1,M0:工作方式选择位。=00:13位定时器/计数器;=01:16位定时器/计数器(常用);=10:可自动重装的8位定时器/计数器(常用);=11:T0 分为2个8位定时器/计数器;仅适用于T0。C/T:定时方式/计数方式选

5、择位。=1:选择计数器工作方式,对T0/T1引脚输入的外部事件的负脉冲计数;=0:选择定时器工作方式,对机器周期脉冲计数定时。如下页图所示。,(3)工作方式寄存器TMOD,T1,T2,http:/,郑州大学,GATE:门控位,定时器/计数器的启/停可由软件与硬件两者控制=0:软件控制,只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。=1:硬件控制,由外部中断请求信号/和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。其控制逻辑如下图所示。,http:/,郑州大学,3.3.2 定时器/计数器的工作方式,8051单片机的定时器/计数器共有四种工作模式

6、,现以T0为例加以介绍,T1与T0的工作原理相同,但方式3下T1停止计数。方式(如F0)和用户定义名称等几种方式。1工作方式0(M1M0=00,13位定时器/计数器)由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。2工作方式1(M1M0=01,16位定时器/计数器)由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。3工作方式2(M1M0=10,自动重装计数初值的8位定时器/计数器)16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时

7、必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。,http:/,郑州大学,4工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于T0)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。T0方式

8、3下的T1方式2,因定时初值能自动恢复,用作波特率发生器更为合适。,http:/,郑州大学,定时器/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。在应用时,其工作方式和工作过程均可通过程序设定和控制,因此,定时器/计数器在工作前必须先对其进行初始化,计算和设置初值。1.定时器T0/T1 中断申请过程(1)在已经开放T0/T1中断允许且已被启动的前提下,T0/T1加1计满溢出时 TF0/TF1标志位自动置“1”;(2)CPU 检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序;(3)TF0/TF1

9、标志位由硬件自动清“0”,以备下次中断申请。,3.3.3 定时器/计数器的应用,http:/,郑州大学,2.定时器/计数器初始化的步骤,(1)写TMOD,设置定时器/计数器的工作方式;(2)计算定时器/计数器的初值,写入TH0/TH1、TL0/TL1。(3)设置IE、IP,以开放相应的中断和设定中断优先级。3.定时器/计数器的定时器/计数器范围(1)工作方式0:13位定时器/计数器方式 最大计数值=213=8192(2)工作方式1:16位定时器/计数器方式 最大计数值=216=65536(3)工作方式2和工作方式3:8位的定时器/计数器方式因此,最大计数值=28=256,http:/,郑州大学

10、,3.计数器初值的计算,方法:用最大计数量减去需要的计数次数。即:TC=MC 其中:TC计数器需要预置的初值;M计数器的模值(最大计数值);方式0时,M=213;方式1时,M=216;方式2,3时,M=28;C计数器计满回0所需的计数值,即设计任务要求的计数值。例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC=M C=213 12=8180,http:/,郑州大学,4.定时器初值的计算,定时时间的计算公式为:T=(MTC)T0(或TC=MT/T0)其中:T定时器的定时时间,即设计任务要求的定时时间;T0计数器计数脉冲的周期,即单

11、片机系统主频周期的12倍;M计数器的模值;TC定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式0:Tmax=2131s=8.192ms工作方式1:Tmax=2161s=65.536ms工作方式2和3:Tmax=281s=0.256ms,http:/,郑州大学,例设外部有一个脉冲源。编制程序,对外部脉冲源进行计数并显示。解:将外部计数源连到引脚T1上,可用LED将计数的值显示出来,我们用P1口连接的8个LED来显示计到的数据。程序如下:ORG 0000H AJMP START;转入主程序 ORG 003

12、0H START:MOV SP,#60H;设置堆栈指针 MOV TMOD,#60H;定时器/计数器1作计数用 01100000B MOV TL1,#00H MOV TH1,#00H SETB TR1;启动计数器1开始运行 LOOP:MOV A,TL1;读计数器1的计数值送A MOV P1,A;将计数值输出到P1口,驱动LED显示 AJMP LOOP;转回LOOP END,5.定时器/计数器应用举例,http:/,郑州大学,P126 例3.6 设一只发光二极管LED和8051的P1.0脚相连。当P1.0脚是高电平时,LED不亮;当P1.0脚是低电平时,LED亮。编制程序用定时器来实现发光二极管L

13、ED的闪烁功能。已知单片机系统主频为12MHz。解:设置LED每60ms闪烁1次。选择定时器/计数器0工作在方式1。此时定时器对系统主频的12分频脉冲计数。T0=1微秒,TC=M-T/T0=5536=15A0H,http:/,郑州大学,方法1:用查询方式,ORG 0000H MOV TH0,#15H AJMP START MOV TL0,#0A0H ORG 0030H SETB TR0START:MOV SP,#60H AJMP LOOP MOV P1,#0FFH END MOV TMOD,#01H;00000001 MOV TH0,#15H MOV TL0,#0A0H SETB TR0LOO

14、P:JBC TF0,NEXT AJMP LOOPNEXT:CPL P1.0,http:/,郑州大学,方法2:用中断方式实现,ORG 0000H TIME0:PUSH ACC AJMP START PUSH PSW ORG 000BH CPL P1.0 AJMP TIME0 MOV TH0,#15H ORG 0030H MOV TL0,#0A0HSTART:MOV SP,#60H SETB TR0 MOV P1,#0FFH POP PSW MOV TMOD,#01H POP ACC MOV TH0,#15H RETI MOV TL0,#0A0H END SETB EA SETB ET0 SETB

15、 TR0LOOP:AJMP LOOP,http:/,郑州大学,例 设置LED每1s闪烁一次。已知单片机系统主频为12MHz。解:定时器/计数器的最长的定时是65.536ms,无法实现1s的定时。可以采用软件计数器来进行设计。,http:/,郑州大学,设计思想:定义一个软件计数器单元30H,先用定时器/计数器0做一个50ms的定时器,定时时间到了以后将软件计数器中的值加1,如果软件计数器计到了20,取反P1.0,并清掉软件计数器中的值,否则直接返回。则完成了20次定时中断才取反一次P1.0,因此定时时间就为2050=1000ms=1s。定时器/计数器0采用工作方式1,其初值为:21650ms/1

16、s=6553650000=15536=3CB0H电路图如下:,http:/,郑州大学,程序如下:ORG 0000H AJMP START;转入主程序 ORG 000BH;定时器/计数器0的中断服务程序入口地址 AJMP TIME0;跳转到真正的定时器中断服务程序处 ORG 0030H START:MOV SP,#60H;设置堆栈指针 MOV P1,#0FFH;关发光二极管LED(使其灭)MOV 30H,#00H;软件计数器预清0 MOV TMOD,#01H;定时器/计数器0工作于方式1 MOV TH0,#3CH;设置定时器/计数器的初值 MOV TL0,#0B0H SETB EA;开总中断允许

17、 SETB ET0;开定时器/计数器0中断允许 SETB TR0;启动定时器/计数器0 LOOP:AJMP LOOP;循环等待(真正工作时,这里可写任意其他程序),http:/,郑州大学,定时器/计数器0的中断服务程序如下:TIME0:PUSH ACC;将PSW和ACC推入堆栈保护 PUSH PSW INC 30H;软件计数器加1 MOV A,30H CJNE A,#20,T_LP2;软件计数器单元中的值到了20了吗?到了,继续执行;否则,转入T_LP2 T_LP1:CPL P1.0;到了,P1.0取反 MOV 30H,#00H;清软件计数器 T_LP2:MOV TH0,#3CH;重置定时器/

18、计数器的初值 MOV TL0,#0B0H POP PSW;恢复PSW和ACC POP ACC RETI;中断返回 END,http:/,郑州大学,3.4 MCS-51 单片机的串行通信,3.4.1 概述1.通信 通信:单片机与外界进行信息交换统称为通信。8051单片机的通信方式有两种:并行通信:数据的各位同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。,http:/,郑州大学,2.数据通信的制式单工

19、方式:数据仅按一个固定方向传送;半双工方式:数据可实现双向传送,但不能同时进行;全双工方式:允许双方同时进行数据双向传送;多工方式:在同一线路上实现资源共享。3.串行通信的分类 串行数据通信按数据传送方式可分为异步通信和同步通信两种形式:同步方式:以数据块为单位进行数据传送,包括同步字符、数据块和校验字符CRC。优点是数据传输速率较高,缺点是要求发送时钟和接收时钟保持严格同步。数据格式如下图所示。,http:/,郑州大学,异步方式:以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低

20、了有效数据的传输速率。数据格式如下图所示:,http:/,郑州大学,4.串行数据通信的波特率,波特率是指每秒钟传送信号的数量,单位为波特(Baud)。而每秒钟传送二进制数的信号数(即二进制数的位数)定义为比特率,单位是bps(bit per second)或写成b/s(位/秒)。在单片机串行通信中,传送的信号是二进制信号,波特率与比特率数值上相等。单位采用bps。例如,异步串行通信的数据传送的速率是120字符/秒,而每个字符规定包含10位数字,则传输波特率为:120字符/秒 10位/字符=1200位/秒=1200bps,http:/,郑州大学,3.4.2 MCS-51的串行口,MCS-51单片

21、机内部有一个全双工的串行通信口(P3.0、P3.1),既可作UART(通用异步接收/发送器)用,也可作同步移位寄存器使用,还可用于网络通信,其帧格式可有8位、10位和11位,并能设置各种波特率。1串行口寄存器结构(1)两个物理上独立的同名的接收/发送缓冲寄存器SBUF 指令 MOV SBUF,A 启动一次数据发送,指令 MOV A,SBUF 完成一次数据接收,即向发送缓冲器SBUF写入数据即可发送数据,从接收缓冲器SBUF读出数据即可接收数据。(2)输入和输出移位寄存器和控制器等组成。(3)2个SFR寄存器SCON和PCON,用于串行口的初始化编程。(4)接收/发送数据,无论是否采用中断方式工

22、作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。,http:/,郑州大学,MCS-51串行口的结构如下图所示:,http:/,郑州大学,2.串行通信控制寄存器SCON(98H),SM0,SM1:串行口4种工作方式控制位。=00:方式0,8位同步移位寄存器,其波特率为fosc/12;=01:方式1,10位UART,其波特率为可变,由定时器控制;=10:方式2,11位UART,其波特率为fosc/64或fosc/32;=11:方式3,11位UART,其波特率为可变,由定时器控制。其中:fosc为系统晶振频率。RI,TI:串行口收/发数据申请中断标志位 1 申请中断;0

23、不申请中断。,http:/,郑州大学,RB8:在方式2、3中,用于存放收到的第9位数据;在双机通信中,作为奇偶校验;在多机通信中,用作区别地址帧/数据帧的标志。TB8:方式2、3中,是要发送的第9位数据;在双机通信中,用于对接收到的数据进行奇偶校验;在多机通信中,用作判断地址帧/数据帧,TB8=0 表示发送的是数据,TB8=1 表示发送的是地址。REN:串行口接收允许控制位=1:表示允许接收;=0:禁止接收。SM2:串行口多机通信控制位,作为方式2、方式3的附加控制位。,http:/,郑州大学,3.中断允许寄存器IE(0A8H)中断允许寄存器IE在3.2.2节中已介绍。其中对串行口有影响的位E

24、S。ES为串行中断允许控制位。ES=1:允许串行中断;ES=0:禁止串行中断。4.电源管理寄存器PCON(87H)不可位寻址。PCON主要用于实现电源控制而设置的专用寄存器,已在1.3.3节中介绍过。其格式如下图所示。,SMOD:串行口波特率倍增位=1:串行口波特率加倍。=0:串行口波特率不变,系统复位时默认SMOD=0。,http:/,郑州大学,3.4.3 串行口的工作方式,1.工作方式0(8位移位寄存器I/O方式)发送/接收过程:SBUF中的串行数据由RxD逐位移出/移入(低位在先,高位在后);TxD输出移位时钟,频率=fosc1/12;每送出/接收8位数据 TI/RI自动置1;需要用软件

25、清零 TI/RI。注意:串行口在方式0下的工作并非是一种同步通信方式,经常配合“串入并出”“并入串出”移位寄存器一起使用,以达到扩展一个并行口的目的。扩展电路如下图所示。,http:/,郑州大学,如要发送数据,查询方式的程序如下:MOV SCON,#00H;串行口方式0 MOV SBUF,A;将数据送出 JNB TI,$;等待数据发送完毕 CLR TI;为下次发送作准备注意:复位时,SCON 已经被清零,缺省值为方式0。发送条件:TI=0。接收条件:TI=0,置位 REN=1(允许接收数据)。2.方式1(波特率可变的10位异步通信方式)发送/接收数据的格式:一帧信息包括1个起始位0,8个数据位

26、和1个停止位1。发送/接收过程:SBUF中的串行数据由RXD逐位移出/移入;TXD输出移位时钟,频率=(2SMOD/32)T1的溢出率,波特率可变。每送出/接收8位数据 TI/RI自动置1;需要用软件清零 TI/RI。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。发送/接收条件:同方式0。,http:/,郑州大学,3.方式2(固定波特率的11位异步接收/发送方式),发送/接收过程:方式2的接收/发送过程类似于方式1,所不同的是它比方式1增加了一位“第9位”数据(TB8/RB8),用于“奇偶校验”。方式2常用于单片机间通信。波特率=fosc 2SMOD/64

27、。发送/接收条件:同方式0。4.方式3(可变波特率的11位异步接收/发送方式)方式3和方式2唯一的区别是波特率机制不同,方式3的波特率=(2SMOD/32)T1的溢出率。,http:/,郑州大学,奇偶校验:奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。即如果奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。奇校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为奇数。偶校验规定:8位有效数据连同1位附加位中,二进制“1”的个数为偶数。约定发送采用奇校验:若发送的8位有效数据中“1”的个数为偶数,则要人为在

28、附加位中添加一个“1”一起发送;若发送的8位有效数据中“1”的个数为奇数,则要人为在附加位中添加一个“0”一起发送。约定接收采用奇校验:若接收到的9位数据中“1”的个数为奇数,则表明接收正确,取出8位有效数据即可;若接收到的9位数据中“1”的个数为偶数,则表明接收出错!应当进行出错处理。采用偶校验时,处理方法与奇校验类似。,http:/,郑州大学,3.4.4 串行口的通信波特率,串行口的通信波特率恰到好处地反映了串行传输数据的速率。在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率(T1溢出信号的频率)控制。各种方式的通信波特率

29、如下:方式0:波特率固定为fosc/12。其中:fosc系统主机晶振频率方式2:波特率由PCON中的选择位SMOD来决定,可由下式表示:波特率=(2SMOD/64)fosc 方式1和方式3:波特率是可变的,由定时器T1的溢出率控制。波特率为:波特率=(2SMOD/32)定时器T1溢出率 T1溢出率=T1计数率/产生溢出所需的周期=(fosc/12)/(2KTC)其中:K定时器T1的位数,定时器T1用作波特率发生器时,通常工作在方式2,所以T1的溢出所需的周期数=28TC。TC定时器T1的预置初值。,http:/,郑州大学,下表列出了定时器T1工作于方式2的常用波特率及初值。,http:/,郑州

30、大学,3.4.5 串行口的应用,1串口方式0应用编程 例题6 用8051串行口外接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,要求发光二极管呈流水灯状态(轮流点亮)。解:硬件连接电路如下图所示。,http:/,郑州大学,在开始通信之前,应先对控制寄存器SCON进行初始化。将00H送SCON即设置方式0。数据传送采用查询方式,通过查询TI的状态,来决定是否发送下一帧数据。在串行接收时,通过对RI查询来确定何时接收下一帧数据。程序如下:ORG 1000H START:MOV SCON,#00H;置串行口工作方式0 MOV A,#80H;最高位灯先亮 CLR P1.0;关闭并

31、行输出 OUT0:MOV SBUF,A;开始串行输出 OUT1:JNB TI,OUT1;输出完否?未完,等待;完了,继续执行 CLR TI;完了,清TI标志,以备下次发送,http:/,郑州大学,SETB P1.0;打开并行口输出 ACALL DELAY;延时一段时间 RR A;循环右移 CLR P1.0;关闭并行输出 SJMP OUT0;循环 DELAY:MOV R7,#250;延时子程序 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RET END,http:/,郑州大学,2双机通信 双机通信的硬件连接图如下图所示。,http:/,郑州大学,通信协议如下:

32、设1号机是发送方,2号机是接收方。采用串行口方式1进行通信,一帧信息为10位,其中有1个起始位、8个数据位和1个停止位;波特率为2400bps,T1工作在定时器方式2,单片机时钟振荡频率选用11.0 592MHz,查表3.4.3可得TH1=TL1=0F4H,PCON寄存器的SMOD位为0。当1号机发送时,先发送一个“E1”联络信号,2号机收到后回答一个“E2”应答信号,表示同意接收。当1号机收到应答信号“E2”后,开始发送数据,每发送一个字节数据都要计算“校验和”,假定数据块长度为16个字节,起始地址为40H,一个数据块发送完毕后立即发送“校验和”。2号机接收数据并转存到数据缓冲区,起始地址也

33、为40H,每接收到一个字节数据便计算一次“校验和”,当收到一个数据块后,再接收1号机发来的“校验和”,并将它与2号机求出的校验和进行比较。若两者相等,说明接收正确,2号机回答00H;若两者不相等,说明接收不正确,2号机回答0FFH,请求重发。1号机接到00H后结束发送。若收到的答复非零,则重新发送数据一次。程序框图如下页图所示。,http:/,郑州大学,http:/,郑州大学,发送程序如下:ORG 1000H ASTART:CLR EA MOV TMOD,#20H;定时器1置为方式2 MOV TH1,#0F4H;装载定时器初值,波特率2400 MOV TL1,#0F4H MOV PCON,#0

34、0H SETB TR1;启动定时器 MOV SCON,#50H;设定串口方式1,且准备接收应答信号 ALOOP1:MOV SBUF,#0E1H;发联络信号 JNB TI,$;等待一帧发送完毕 CLR TI;允许再发送 JNB RI,$;等待2号机的应答信号 CLR RI;允许再接收 MOV A,SBUF;2号机应答后,读至A XRL A,#0E2H;判断2号机是否准备完毕 JNZ ALOOP1;2号机未准备好,继续联络,http:/,郑州大学,ALOOP2:MOV R0,#40H;2号机准备好,设定数据块地址指针初值 MOV R7,#10H;设定数据块长度初值 MOV R6,#00H;清校验和

35、单元 ALOOP3:MOV SBUF,R0;发送一个数据字节 MOV A,R6 ADD A,R0;求校验和 MOV R6,A;保存校验和 INC R0 JNB TI,$CLR TI DJNZ R7,ALOOP3;整个数据块是否发送完毕 MOV SBUF,R6;发送校验和 JNB TI,$CLR TI JNB RI,$;等待2号机的应答信号 CLR RI MOV A,SBUF;2号机应答,读至A JNZ ALOOP2;2号机应答“错误”,转重新发送 RET;2号机应答“正确”,返回 END,http:/,郑州大学,接收程序如下:ORG 1000H BSTART:CLR EA MOV TMOD,#

36、20H MOV TH1,#0F4H MO V TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H;设定串口方式1,且准备接收 BLOOP1:JNB RI,$;等待1号机的联络信号 CLR RI MOV A,SBUF;收到1号机信号 XRL A,#0E1H;判断是否为1号机联络信号 JNZ BLOOP1;不是1号机联络信号,再等待 MOV SBUF,#0E2H;是1号机联络信号,发应答信号 JNB TI,$CLR TI MOV R0,#40H;设定数据块地址指针初值 MOV R7,#10H;设定数据块长度初值 MOV R6,#00H;清校验和单元,htt

37、p:/,郑州大学,BLOOP2:JNB RI,$CLR RI MOV A,SBUF MOV R0,A;接收数据转储 INC R0 ADD A,R6;求校验和 MOV R6,A DJNZ R7,BLOOP2;判断数据块是否接收完毕 JNB RI,$;完毕,接收1号机发来的校验和 CLR RI MOV A,SBUF XRL A,R6;比较校验和 JZ END1;校验和相等,跳至发正确标志 MOV SBUF,#0FFH;校验和不相等,发错误标志 JNB TI,$;转重新接收 CLR TI END1:MOV SBUF,#00H RET END,http:/,郑州大学,3多机通信(1)硬件连接 单片机构

38、成的多机系统常使串行口工作在方式2和方式3,采用总线型主从式结构(一个是主机,其余的是从机,从机要服从主机的调度、支配)。有时还要对信号进行光电隔离、电平转换等。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。简单的硬件连接如下图所示(图中没有画出RS-485接口)。,http:/,郑州大学,(2)通信协议主机置SM2位0,所有从机的SM2位置1,处于接收地址帧状态。主机发送一地址帧,其中,8位是地址,第9位为1表示该帧为地址帧。所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机

39、作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。主机接收数据时先判断数据接收标志(RB8),若接收帧的RB8=0,则存储数据到缓冲区,并准备接收下帧信息。若RB8=1,表示数据传送结束,并比较此帧校验和,若正确则回送正确信号00H,此信号命令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,命令该从机重发数据。发送数据。,http:/,郑州大学,主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,

40、开始发送数据。从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。(3)应用程序设计设主机发送的地址联络信号为:00H,01H,02H,(即从机设备地址),地址FFH为命令各从机复位,即恢复SM2=1。主机命令编码为:01H,主机命令从机接收数据;02H,主机命令从机发送数据。其他都按02H对待。程序分为主机程序和从机程序。约定一次传递数据为16个字节。程序清单见教材(略)。,http:/,郑州大学,4单片机与PC的通信,1台PC既可以与1个8051单片机应用系统通信,也可以与多个8051单片机应用系统通信;可以近距离也可以远距离。单片机与PC机通信时,其硬件接口技术主要

41、是电平转换、控制接口设计和通信距离不同的接口等处理技术。其硬件连接电路如下图所示。在Windows的环境下,可使用 VB通信控件(MSComm)却可以很容易实现PC机与单片机之间的通信。,http:/,郑州大学,单片机程序:ORG 3000H MAIN:MOV TMOD,#20H;在11.0592MHz下,串行口波特率 MOV TH1,#0FDH;9600bps,方式3 MOV TL1,#0FDH MOV PCON,#00H SETB TR1 MOV SCON,#0D8H LOOP:JBC RI,RECEIVE;接收到数据后立即发出去 SJMP LOOP RECEIVE:MOV A,SBUF

42、MOV SBUF,A SEND:JBC TI,SENDEND SJMP SENDSENDEND:SJMP LOOP END,http:/,郑州大学,PC程序如下:(VB语言)Sub Form_Load()MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings=9600,N,8,1 End Sub Sub command1_Click()Instring as string MSComm1.InBufferCount=0 MSComm1.Output=A Do Dummy=DoEvents()Loop Until(MSComm1.InBufferCount2)Instring=MSComm1.Input End Sub Sub command2_Click()MSComm1.PortOpen=FALSE UnLoad Me End Sub,http:/,郑州大学,作业与练习:,1-18,20-34,35-50,http:/,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号