- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章80C51单片机的串行报告
* * 串行口初始化步骤 确定T1的工作方式(TMOD) 计算T1的初值,装载TH1、TL1 启动T1(置位TR1) 确定串行口工作方式(SCON) 串口中断设置(IE、IP) * * 6.3 80C51单片机的串行口应用 6.3.1 利用单片机串口的并行I/O扩展 占用串口! 单片机端的电平转换 6.3.2 单片机与PC机间的通信 与PC机的硬件连接 直通连接 交叉连接 PC机串行口检查 PC机的串行口的收、发信号引脚短接 运行串口调试软件 连机编程测试 void main(void) { uchar temp; init(); while (1) { temp = ReceiveChar();//接收数据 SendChar(temp); //发送数据 } } void init(void) { SCON = 0x50; //方式1(N,8,1),接收允许 PCON = 0x00; //波特率不倍增 TMOD = 0x20; //置T1为8位自动重装方式 TL1 = 0xfd; TH1 = 0xfd; //波特率9600 TR1 = 1; } 7 6 5 4 3 2 1 0 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 字节地址:98H uchar ReceiveChar() { uchar ch; while (!RI); //等待接收完 ch = SBUF; RI = 0; return (ch); } void SendChar(uchar ch) { SBUF = ch; //发送字符 while (!TI); //等待发送完 TI = 0; //清标志 } 通信程序的扩充与完善 通讯协议: 每帧:数据8位,起始位1位,停止位1位,无检验,波特率9600。 PC机作为主机,主机命令由4个字符形成的字符串构成,首字符‘$’是同步头,次字符为命令关键字,其他2个字符未定义。 设命令关键字为1时,单片机要将缓冲区的数据以由前至后的顺序发送到PC机端;当命令关键字为2时,单片机要将缓冲区的数据以由后至前的顺序发送到PC机端,其他关键字未定义。 单片机端程序: void DataInit(void) { //设置缓冲区调试数据 uchar i; for(i=0;i10;i++) OutBuff[i]=i+0x30; } void SPortInit(void) { TMOD |=0x20; SCON=0x50; TH1=0xfd; TL1=0xfd; TR1=1; ES = 1; EA = 1; } void SendChar(uchar ch) { SBUF = ch; //发送字符 while (!TI); //等待发送完 TI = 0; } void SPortIsr () interrupt 4 { uchar i,ch; ES=0; ch = SBUF; RI=0; if(ch= =0x24) //检测‘$’ { InBuff[0]=ch; for(i=1;i4;i++) { while (!RI); RI=0; InBuff[i] = SBUF; } InFullFlag=1; } ES=1; } void main(void) { DataInit(); SPortInit(); InFullFlag = 0; while(1) { if(InFullFlag) { switch(InBuff[1]) {//依命令完成相应功能 } InFullFlag = 0; } } } switch(InBuff[1]) {//依命令完成相应功能 case 0x31: for(i=0;i10;i++) SendChar(OutBuff[i]); break; case 0x32: for(i=0;i10;i++) SendChar(OutBuff[9-i]); break; default:break; } * * PC机端程序: Private Sub Form_Load() MSComm1.CommPort = 1 设置通信端口号为COM1 MSComm1.Settings = 9600,n,8,1
您可能关注的文档
最近下载
- 人教版二年级上册数学全册教学设计(配2025年秋新版教材).docx
- YY_T 0316-2016医疗器械 风险管理对医疗器械的应用.pdf
- 猪肉部位分割图.doc VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- GJB 438C-2021 军用软件开发文档通用要求 (高清,带章).docx VIP
- 人教版高中英语选修二单词表.doc VIP
- 广东省广州天河区2023-2024学年八年级上学期期末数学试卷(含答案).docx VIP
- erp培训课资料课件.ppt VIP
- 2025四川广安前锋区选聘区属国有企业领导人员笔试参考题库附带答案详解.docx
- 脑积水患者的护理PPT参考课件.ppt VIP
文档评论(0)