不同的上位机,通信协议是不一样的,就像组态王就有组态王和单片机的协议,LabVIEW有专门的VISA控件,这只是简单的发送,只能用串口助手看,你要是真的写入上位机还得按照人家的协议。
232口单片机向上位机发送
#include <REG52H>
#include <stdioh>
void delay(unsigned int i); //函数声明
char code MESSAGE[]= "RS232 ,请使用串口调试助手: ";
unsigned char a;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式2
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80; //波特率提高一倍
// TH1 = 0xFD; //baud2 / reload value 19200、数据位8、停止位1。效验位无(110592)
TH1 = 0xF3; // //baud2 / 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1; //开启定时器1
ES = 1; //开串口中断
EA = 1; // 开总中断
// IE = 0x0;
while(1)
{ a=0;
while(MESSAGE[a] != '\0')
{
SBUF = MESSAGE[a]; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
a++; // 下一个字符
}
delay(1000);
}
}
/
延时处理程序
/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
上位机发送到单片机
#include <REG52H>
#include <stdioh>
sbit BEEP = P1^5;
unsigned char b;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80;
//TH1 = 0xFD; //baud2 / reload value 19200、数据位8、停止位1。效验位无 (110592)
TH1 = 0xF3; // //baud2 / 波特率4800、数据位8、停止位1。效验位无 (12M)
TL1 = 0xF3;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
BEEP=1;
// IE = 0x0;
while(1)
{
if (RI) //RI接受中断标志
{ RI=0; //清除RI接受中断标志
b=SBUF; //SUBF接受/发送缓冲器
}
BEEP=b;
}
}
62859875 C/C++/VC/MFC/汇编
58374402 C/C++/VC/MFC/ASM ①
42364669 C/C++/VC/MFC/ASM ②
54371916 程序员e族
69621422 程序员职业规划-4
40041627 软件开发技术与外包
18408170 〈中国风暴〉C++群02
111056324 179联盟C++新手群
47671950 C Base Tap
100216306 C/C++
100985618 C/C++交流群
90432559 C与C++开源项目研究
31066255 C语言的天堂
102459731 VC++数据库+ADO编程
39522385 VC软件开发(3)
58476566 windows编程
35509891 编程高手之家1
35510015 编程高手之家2
26526836 测试群
4885880 启天Java社区
77487933 狼
以上就是关于哪位大神,有单片机的C语言程序。能实现与上位机的信息交流(包括从单片机发送数据和上位机发送数据)全部的内容,包括:哪位大神,有单片机的C语言程序。能实现与上位机的信息交流(包括从单片机发送数据和上位机发送数据)、哪位大侠知道C语言技术交流的qq群啊、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)