51单片机通过串口实现数据的发送与接收程序

51单片机通过串口实现数据的发送与接收程序,第1张

串口收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。

一般来说,过程如下:

1,配置串口参数、波特率等,开启串口中断;

void Init_UART()

{

}

2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;

程序一般为:

void UART_ISR() interrupt x using y

{

串口中断处理函数

}

x - 单片机的C51中断号

y - 指定使用的当前工作寄存器组号(0-3 PSW中的RS0,RS1组合)

3,主程序

int main(void)

{

Init_UART()

while(1)

{

//数据发送函数

}

}

串口发数据是用"C#WriteLine();和Write();"的么???????????

我有段通过网线发单片机的代码,串口传送的代码找不着了,你自己琢磨一下,反正我记得不是用你说的这方法做的,write是写数据的作用

this.openFileDialog1.FileName = ""

this.openFileDialog1.Filter = "(*.ini)|*.ini"

this.openFileDialog1.ShowDialog()

if (this.openFileDialog1.FileName.ToString().Trim() == "")

{

return

}

StreamReader ObjtReader = new StreamReader(this.openFileDialog1.FileName)

string StrIniconfg = ""

StrIniconfg = ObjtReader.ReadToEnd()

ObjtReader.Close()

this.timer1.Enabled = false

byte[] StrZhiL = Encoding.ASCII.GetBytes("sendconf")

ClientSocket.Send(StrZhiL, StrZhiL.Length, SocketFlags.None)

System.Threading.Thread.Sleep(1000)

string Strsend = ""

int Cshu = 0

if (StrIniconfg.Length % 4096 >0)//把配置文件按长度4096字节,分开发送

{

Cshu = (int)StrIniconfg.Length / 4096 + 1

}

else

{

Cshu = (int)StrIniconfg.Length / 4096

}

for (int i = 0i <Cshui++)

{

if (i == Cshu - 1)

{

Strsend = StrIniconfg.Substring(i * 4096, StrIniconfg.Length - i * 4096)

}

else

{

Strsend = StrIniconfg.Substring(i * 4096, 4096)

}

byte[] SendFile = Encoding.ASCII.GetBytes(Strsend.ToString())

ClientSocket.Send(SendFile, SendFile.Length, SocketFlags.None)

}

byte[] SendFile1 = Encoding.ASCII.GetBytes("nosendconf")

ClientSocket.Send(SendFile1, SendFile1.Length, SocketFlags.None)

MessageBox.Show("配置文件发送完成!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk )


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

原文地址: http://outofmemory.cn/yw/8152694.html

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

发表评论

登录后才能评论

评论列表(0条)

保存