求c语言单片机串口通信程序,是两块89c51之间通信。要求在问题补充里面,非常感谢!

求c语言单片机串口通信程序,是两块89c51之间通信。要求在问题补充里面,非常感谢!,第1张

我曾经写过的串口通信程序,仅当参考,要完全符合你要求的,实在是没有!!

//#include <STC12C5A60H>

#include <REGX52H>

#define uchar unsigned char

#define uint unsigned int

unsigned char flag,a,i,e;

uchar code tem[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar code table[]="阿斯顿 ";

unsigned char t[100];

void init()

{

TMOD=0x20; //设置计时器为1,TMOD为定时器工作方式寄存器

TH1=0xfd; //装初值-- T1为0XFD次溢出

TL1=0xfd; //装初值-- T1为0XFD次溢出

TR1=1; //定时器运行控制位

REN=1; //允许串口接收位

SM0=0; //设定串口工作方式为1

SM1=1;

EA=1; //中断总开关

ES=1; //串口中断开

}

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void main()

{

init();

e=0;

while(1)

{

if(flag==1)

{

ES=0;

for(i=0;table[i]!='\0';i++)

{

SBUF=table[i]; //将table[i]里的值放到SBUF中

while(!TI); //TI=1发送完毕

TI=0; delayms(1); //发送数据

}

for(i=0;t[i]!=0;i++)

{SBUF=t[i];

while(!TI);

TI=0; delayms(1);

}

ES=1;

flag=0;

}

}

}

void ser()interrupt 4 //串口中断程序

{

RI=0; //表示接受数据 接受完成自动制1

t[e]=SBUF; //接受到的放到a内

if(t[e]=='/')

for(i=0;t[i]!=0;i++)

{t[i]='\0';e=0;}

else e++;

flag=1;

}

如下即可:

void ser() interrupt 4

{

RI = 0;

flag = ~flag; //每收到一次,就取反

if(flag) P1 = SBUF;

else P2 = SBUF;

}

但是,仅仅发送两个字节的数据,第一、第二字节,不好区分。

应该编写通信协议。

晶振110592 STC12系列1T单片机,示例代码:

#include <reg51h>

sfr AUXR = 0x8E;

void InitUART(void)

{

TMOD = 0x20;

SCON = 0x50;

TH1 = 0xDC;

TL1 = TH1;

PCON = 0x00;

EA = 1;

ES = 1;

TR1 = 1;

}

void SendOneByte(unsigned char c)

{

SBUF = c;

while(!TI);

TI = 0;

}

void main(void)

{

AUXR = AUXR|0x40; // T1, 1T Mode

InitUART();

}

void UARTInterrupt(void) interrupt 4

{

if(RI)

{

RI = 0;

//add your code here!

}

else

TI = 0;

}

其他部分你自己会善的啦。推荐个软件:单片机小精灵 v13 破解版,在新浪共享有得下载。

里面就有这些计算的。直接生成 可用。

希望我的回答对你有所帮助

一般来说,测试上下位机通信。

先使用工具测试你的下位机,完全通信成功后,在用来调试你的上位机。

不然你话,你都不知道错误在哪里。

加入下位机不是开发的,根本就无法证明是否是下位机的错误。

先使用串口精灵之类的调试你的开发板。

确认是 OK 了之后,在调试你的程序。

//如果你的程序功底足够深,就可以通过你的程序确定是上,还是下位机的问题了。

c#编写上位机,与单片机通讯,一般采用串口通讯:RS232,RS422,RS485。

通过VS NET中的串口通讯控件即可实现。

如果下位机是类似基于LINUX内核的ARM,可以采用网口,也可以采用串口。

以上就是关于求c语言单片机串口通信程序,是两块89c51之间通信。要求在问题补充里面,非常感谢!全部的内容,包括:求c语言单片机串口通信程序,是两块89c51之间通信。要求在问题补充里面,非常感谢!、51单片机 c程序有问 串口通信 16位分2个8位、求助,STC12系列单片机与上位机的串口通信程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9321212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存