实验3 串行口.doc

上传人:ng****60 文档编号:3181395 上传时间:2019-05-24 格式:DOC 页数:4 大小:46.50KB
下载 相关 举报
实验3 串行口.doc_第1页
第1页 / 共4页
实验3 串行口.doc_第2页
第2页 / 共4页
实验3 串行口.doc_第3页
第3页 / 共4页
实验3 串行口.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、实验思考题:1、将指导书实验四 A 机的波特率改为 9600,如何修改参考程序(仅写出与此有关的部分程序即可)?2、如何用示波器观察 RX 或 TX 的信号波形,并画出发送如下数据时的波形,并指出波形中的“起始位” 、 “停止位” 、 “D0-D7”等相应的位置,在图中标示出来。并测量其中传送一位数据所用的时间在图中标示出来并据此计算波特率,说明测量的波特率与程序设置的波特率有何区别,为什么。数据 串口工作方式 波形55h9ah62h3、根据指导书实验四要求修改 C 语言的通信程序实现相同要求.要求接收数据采用中断方式,发送不用中断.4、对例程式 COM_CRX.C 和 COM_CTX.C 程

2、序作注释,并说明程序执行的过程及实现的功能.5、为什么单片机通信程序中采用的晶振常采用 11.0952MHz?2.3.5 实验四 串行通信实验一、实验类型验证性实验。二、实验目的掌握单片机串行口的应用及通讯程序的设计方法。实验内容及步骤将两台仿真器的串行口连接起来组成双机通讯。编制一个通讯程序实现通讯的功能。1、通讯程序的功能及约定如下:(1)设 A 机为发送,B 机为接收,串行口为方式 1,A、B 机双方波特率设定为 1200 波特。(2)A 机首先发送一个“AA”信号,作为向 B 机的发送请求信号。(3)B 机收到后回答一个“BB”信号表示同意接收。(4)A 机收到 B 机的应答信号,开始

3、发送数据,每发一次求一次“检查和” ,一个数据块发送完后再发送检查和。(5)B 机将接收到的数据存入数据区,同时每接收一次计算一次检查和,当一个数据块接收完,再接收 A 机的检查和并与 B 机计算的检查和比较,两者是否相等,相等说明接收正确,B 向 A 回答“00 信号” ;若不相等,说明接收不正确,B 机回答一个“FF”信号,请求重发。 (6)A 机收到“00”结束发送;若收到“FFH” ,则重新再发送一次。 2、实验步骤(1)两台仿真器各自编辑、编译和调试通讯程序;或分别将编译好的程序下载到基础实验板上。(2)将两台仿真器(或基础实验板)的串行口正确连接,运行各自的通讯程序,检查其传送结果

4、。三、参考程序1、A 机通信子程序1 AST: MOV TMOD,#20H2 MOV TH1,#0E8H3 MOV TL1,#0E8H4 MOV PCON,#00H5 SETB TR16 MOV SCON,#50H7 ATT1: MOV SBUF,#0AAH8 AWA1: JBC TI,ARR19 SJMP AWA110 ARR1: JBC RI,ARR211 SJMP ARR112 ARR2: MOV A,SBUF13 XRL A,#0BBH14 JNZ ATT115 ATT2: MOV R0,#30H16 MOV R7,#10H17 MOV R6,#00H18 ATT3: MOV SBUF

5、,R019 MOV A,R620 ADD A,R021 MOV R6,A22 INC R023 AWA2: JBC TI,ATT424 SJMP AWA225 ATT4: DJNZ R7,ATT326 MOV A,R627 MOV SBUF,A28 AWA3: JBC TI,ARR329 SJMP AWA330 ARR3: JBC RI,ARR431 SJMP ARR332 ARR4: MOV A,SBUF33 JNZ ATT234 AEND: RET2、B 机通信子程序1 BST: MOV TMOD,#20H2 MOV TH1,#0E8H3 MOV TL1,#0E8H4 MOV PCON,#

6、00H5 SETB TR16 MOV SCON,#50H7 BRR1: JBC RI,BRR28 SJMP BRR19 BRR2: MOV A,SBUF10 XRL A,#0AAH11 JNZ BRR112 BTT1: MOV SBUF,#0BBH13 BWA1: JBC TI,BRR314 SJMP BWA115 BRR3: MOV R0,#30H16 MOV R7,#10H17 MOV R6,#00H18 BRR4: JBC RI,BRR519 SJMP BRR420 BRR5: MOV A,SBUF21 MOV R0,A22 INC R023 ADD A,R624 MOV R6,A25

7、DJNZ R7,BRR426 DWA2: JBC RI,BRR627 SJMP DWA228 BRR6: MOV A,SBUF29 XRL A,R630 JZ BEND31 MOV SBUF,#0FFH32 BWA3: JBC TI,BRR333 SJMP BWA334 BEND: MOV SBUF,#00H35 RET四、实验预习及思考题(1)参考 A、B 机的通信子程序,编制好主程序。(2)若发送的数据块字节检查和大于一个字所表示的数据范围,程序应如何修改?附 C 参考程序/点对点通信程序 PPCOMUN.C#include#define RorS 1 /发送 OR 接收开关,RorS =

8、1 接收,RorS =0 发送uchar idata buf10 ;uchar pf;void init(void) /串行口初始化TMOD=0x20;TH1 = 0xe8;TL1 = 0xe8;PCON = 0 ;TR1 = 1;SCON = 0x50;void send(uchar idata *d)/发送程序uchar i;doSBUF = 0xaa; /发送联络信号while(TI=0); /等待发送出去TI=0;while(RI=0); /等待 B 机回答RI=0;while(SBUF0XBB)!=0); /B 机未准备好dopf=0; /清校验和for(i=0;i16;i+)SBU

9、F=di;/发送一个数pf+=di; /求校验和while(TI=0);TI=0;SBUF = pf; /发送校验和while(TI=0);TI=0;while(RI=0);RI=0; /等 B 机回答while(SBUF!=0); /回答出错,重发void receive(uchar idata *d)/接收程序uchar i;dowhile(RI =0);RI=0;while(SBUF0xaa)!=0); /判 A 机是否有发送请求SBUF = 0xbb; /发应答信号while(TI=0);TI=0;while(1)pf=0; /清校验和for(i=0;i16;i+)while(RI=0);RI=0;di=SBUF;pf+=di; /求校验和while(RI=0);RI = 0;if(SBUFpf)=0) /比较校验和SBUF = 0;break;elseSBUF=0xff;/校验出错发 0XFFwhile(TI=0);TI=0;void main(void )init();if(RorS =0)send(buf);elsereceive(buf);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。