51单片机串口通信c语言编程

急求51单片机与串口通信源程序,将数据送入LabVIEW进行处理

第1个回答  推荐于2017-05-23
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int

sbit ring=P3^7;
sbit CASE1=P2^0;
sbit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;

uchar se=0,re=0;
uchar temp=0;

void wait(uint cnt)
{
while(--cnt);
}

//串口发送程序
void send(uchar se)
{
SBUF=se; //发送数据
while(TI == 0);
TI = 0;
}
//串口接收程序
uchar receive(void)
{
re=SBUF; //接收数据
while(RI==0);
RI=0;
return re;
}
//串口初始化
void sinti(void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}
void delay(int cnt)
{
while(--cnt);
}

//主程序
int main (void)
{
int i;
sinti(); //串口初始化程序
ring=1;
while(1)
{
while (1)
{
if(CASE1==0)
{
send('a');
ring=0;
break;
}
if(CASE2==0)
{
send('b');
ring=0;
break;
}
if(CASE3==0)
{
send('c');
ring=0;
break;
}
if(CASE4==0)
{
send('d');
ring=0;
break;
}
}
if(ring==0)
{
wait(60000);
ring=1;
}
for(i=0;i<10000;i++);
}
}
//串口中断程序
void UART_SER (void) interrupt 4 //串行中断服务程序
{

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
temp=SBUF;
}
if(TI) //如果是发送标志位,清零
TI=0;
}本回答被网友采纳
第2个回答  2013-08-10

这个程序你看一下!里面还有个仿真程序,proteus,如果你没有这个软件,到网上下载一个,很好用的仿真软件

第3个回答  2013-08-10
www.61ic.com有例子

51单片机串口通信c语言编程
\/\/主程序 int main (void){ int i;sinti(); \/\/串口初始化程序 ring=1;while(1){ while (1){ if(CASE1==0){ send('a');ring=0;break;} if(CASE2==0){ send('b');ring=0;break;} if(CASE3==0){ send('c');ring=0;break;} if(CASE4==0){ send('d');ring=0...

一道51单片机的C语言程序,关于串口通讯的,很简单...
void serial() interrupt 4 \/\/串口中断服务程序,优先级为4 { RI=0; \/\/当接收完成之后RI被置一,发生串口中断,清标志位 a=SBUF; \/\/读取收到的字符,并赋给变量a flag=1; \/\/置接收完成标志flag为一,便于主程序中发送响应 } ...

C语言51单片机串口通信程序求教
串口通讯,首先设置波特率,再设置串口模式,之后就可以收发数据了。比如:init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SCON=0x50;}send(unsigned char dat){SBUF=dat;while(TI==0);TI==0;}unsigned char recive(){unsigned char dd;if(RI) { dd=SBUF; RI=0; } return(...

求一个51单片机C语言程序编程
全部点亮;按下第四次K1,灯全灭 include<reg51.h> \/*甲机*\/ sbit k=P1^0;sbit P00=P0^0;sbit P03=P0^3;unsigned chari,NO;void main(void) \/* 主函数*\/ { SCON=0x40; \/*方式1只发送,不接收*\/ TMOD=0x20;TH1=0xfd; \/*给定时器T1赋初值,波特率为9600*\/ TL1=...

怎么用c语言编程51单片机读写程序?
编程代码如下:ORG 0000H MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值 MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值 MOV RO,#00H LOOP: MOVX A, @DPTR .MOVX @RO, A .INC DPTR INC RO CJNE RO,#64H, LOOP SJMP

C51单片机多机通信C语言
单片机a,b,c. a为主机,bc为从机。a上有一个外部中断0输入,按第一次a的两个LED亮500ms,再按一下,b机的两个LED灯亮500ms,第三次按下c机的两个LED灯亮500ms,然后周而复始。两个数码管分别显示0\/1\/2, 和abc(bc由从机反馈)\/ 主从通信基本步骤:1. 主机从机初始化为方式2或者3,...

51单片机从电脑串口接收10字节的数据,程序用c语言
\/***10位异步收发串口通讯驱动——火柴天堂作品-20130119***\/ \/***源程序硬件环境:52单片机,11.0592MHz晶振,定时器1作为波特率发生器,通讯波特率9600 bit\/s***\/ \/***\/ define UART_H include"REG52.h"\/\/包含52头文件 include"UART.h"\/\/包含串口头文件 define th1 0xfa\/\/6.51us at 11....

怎么通过串口读取51单片机某个地址的数据?请用C语言写出来。
C语言中对于内存的访问是基于指针的,这个毋庸置疑,具体操如下 unsigned int *p= (unsigned int*)0x22 ;\/\/定义指针,并且使指针指向了0x22这个 内存地址;那么*p就是最终你要读取的数据了。4.至于如何通过串口显示到电脑我就不多说了(这不是难点),数据你都知道了,写到串口 缓冲区,...

51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计...
void InitUART(void) \/\/串口初始化 9600bps { TMOD = 0x20;SCON = 0x50;TH1 = 0xFD;TL1 = TH1;PCON = 0x00;EA = 1;ES = 1;TR1 = 1;} void Send(uint8 c){ SBUF = c;while(!TI);TI = 0;} void main(void){ char j;InitUART();while(1){ if(flag) \/\/是否接收到...

大家帮忙找一些51单片机的基本C语言程序例子,最好带说明,谢啦_百度知 ...
串口通信程序:主机程序:include <AT89X52.H> define NODE_ADDR 3 \/\/目的节点地址 define COUNT 10 \/\/发送缓冲区buffer大小 typedef unsigned char uchar;uchar buffer[COUNT]; \/\/定义buffer int pt; \/\/设置指针 main()\/\/\/发送程序 { \/\/buffer初始化 pt=0;while(pt<COUNT){ buffe...

相似回答