当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

哪位大神有单片机的C语言程序

更新:01-07 整理:39baobao.com
字体:

展开全部

不同的上位机,通信协议是不一样的,就像组态王就有组态王和单片机的协议,LabVIEW有专门的VISA控件,这只是简单的发送,只能用串口助手看,你要是真的写入上位机还得按照人家的协议。

232口单片机向上位机发送

#include

#include

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; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无(11.0592)

TH1 = 0xF3; // //baud*2 /* 波特率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

#include

sbit BEEP = P1^5;

unsigned char b;

void main (void) {

SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1

TMOD|= 0x20; //定时器工作方式2

PCON|= 0x80;

//TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)

TH1 = 0xF3; // //baud*2 /* 波特率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;

}

}

本文地址:https://www.39baobao.com/show/29_26235.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.