- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
51串口通信C程序_模块集合
本文以51单片机控制四路开关量输入/六路开关量输出为例,设计了一个简单的上位机下位机通信作品,作为模块学习和整理,供读者参考!
难为,2010-11-28,于上海!
四路开关量输入/六路开关量输出C语言程序
#includereg51.h
#define uint unsigned int
#define uchar unsigned char
uchar indata[4];
uchar outdata[4];
volatile uchar temp1 = 0,temp2 = 0;
uchar i,j;
void initial_comm(void)
{
SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr
TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload
PCON = 0x80; //波特率不加倍SMOD = 1
TH1 = 0xfa; //baud: 9600;fosc = 11.0596
IE = 0x90; // enable serial interrupt
TR1 = 1; // timer 1
}
void uart_send(void)
{
ES = 0;
if(indata[3] == indata[0]^indata[1]^indata[2])
{
if(indata[1]== 0x01)
{
temp1 = P0;
temp1 = temp10x0f;
outdata[0] = 0xee;
outdata[1] = 0x02;
outdata[2] = temp1;
outdata[3] = outdata[0]^outdata[1]^outdata[2];
for(i=0;i4;i++)
{
SBUF = outdata[i];
while(TI == 0);
TI = 0;
}
}
if(indata[1]== 0x03)
{
temp2 = indata[2];
P1 = temp2;
}
if(indata[1]==0x04)
{
outdata[0] = 0xee;
outdata[1] = 0x05;
outdata[2] = temp2;
outdata[3] = outdata[0]^outdata[1]^outdata[2];
for(i=0;i4;i++)
{
SBUF = outdata[i];
while(TI == 0);
TI = 0;
}
}
}
ES = 1;
}
void main()
{
initial_comm();
ES = 1;
while(1)
{
uart_send();
}
}
void uart_receive(void) interrupt 4
{
RI = 0;
for(j=0;j4;j++)
{
indata[j] = SBUF;
while(RI==0);
RI =0;
}
}
四路开关量输入/六路开关量输出通讯协议
通信设置: 波特率 9600b/s
1位起始位 8位数据位 无校验位 1位停止位
命令格式:
区别码(1字节) + Command(1字节) + Content(1字节)+ Xor(1字节)
区别码: 上位发送/单片机接收:0xff
单片机发送/上位机接收 :0xee
Command = 0x01 上位机命令单片机读取四路输入开关量的输入状态
如:0xff + 0x01 + 0x00 + Xor
Command = 0x02 单片机返回四路输入状态给上位机
此时,Content 的1字节中的低四位分别表示四路开关量的输入状态
1表示输入高电平,0表示输入低电平
第一路输入(第0位)
第二位输入(第1位)
第三路输入(第2位)
第四路输入(第3位)
如:假设某一时刻四路输入开关量的输入状态为0x03,上位机读取其状态为:
0xee + 0x02 + 0x03 + Xor
Command = 0x03 上位机命令单片机控制六路输出的输出状态
此
您可能关注的文档
- 40立方液化石油气储罐设计方案(40立方液化气储罐_石油液化气储罐).doc
- 401“我让妈妈露笑脸”庆38活动方案.doc
- 41视图方法的3大特点-41视图剖析系列.doc
- 40岁怎样开始创业.docx
- 41_济钢在建工程及生产维护用热轧无缝管等钢材招标采购公告.doc
- 424句金玉良言彻悟人生.doc
- 40句话,给青少年人生忠告.doc
- 42班读书活动方案.doc
- 433m无线模块基本知识点.docx
- 41从不同的角度看(第2课时).doc
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷答案下载.docx
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷含答案(最新).docx
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷有解析答案.docx
- 汽车电控发动机构造与检修课件发动机电控系统故障诊断任务一.pdf
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷精品(名师系列).docx
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷精品【考试直接用】.docx
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷含精品答案.docx
- 部编版二年级上册道德与法治 期末测试卷精品【考试直接用】.docx
- 汽车电控发动机构造与检修课件进气系统任务二.pdf
- 苏教版一年级下册数学第二单元 认识图形(二) 测试卷含答案(黄金题型).docx
最近下载
- 无机房电梯紧急救援课件.pptx
- 计算机专业英语教师教学指导-OLearyCE2014_IM_Ch09.doc
- 2025至2030年中国精密型高速小孔加工机市场现状分析及前景预测报告.docx
- 35kV落地手车式开关移动平台的研制.docx VIP
- GB50111-2006(2009年版) 铁路工程抗震设计规范.pdf
- 2025春新版七下译林版英语单词默写练习(英译中)Unit1-Unit8.pdf VIP
- DB3205_T 1116-2024 高新技术企业商业秘密保护规范.pdf VIP
- 抽水蓄能项目前期工作管理流程.pdf VIP
- 储能系统面试题目(3篇).docx VIP
- 针刺蝶腭神经节治疗鼻部疾病【98页】.pptx VIP
文档评论(0)