哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~

哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~,第1张

主要是通过消耗指令来获得波特率的匹配。注意_delay(T)的计算,

其公式是:1/波特率=1/晶振频率×4×(X+T),X是指以下程序中断点a至断点b的指令周期数,当然不包括_delay(195),T指的是额外的指令消耗,即_delay()中的195。

#include<ht46ru232h>

#define tx _pc0

#define rx _pc1

unsigned char data[20];

unsigned char receive_data;

unsigned char send_data;

unsigned char receive()

{

unsigned char i;

unsigned char j=10;

while(rx); //断点a

for(i=0;i<8;i++)

{ _delay(195);

if(rx) receive_data=receive_data|0x80;

receive_data>>=1;//断点b

}

_delay(195);

_delay(195);

return receive_data;

}

void transmit()

{ unsigned char send_bit;

unsigned char i;

tx=0;

for(i=0;i<8;i++)

{ send_bit=send_data&0x01;

send_data>>=1;

_delay(192);

if(send_bit)

{ _delay(1);

tx=1;

}

else

{ tx=0;

_delay(2);

}

}

_delay(205);

tx=1;

_delay(192);

}

void main(void)

{ unsigned char k=0;

receive_data=0x00;

_pcc=0x02;

while(1)

{ if(k<20)

{ receive();

data[k]=receive_data;

_delay(10);

send_data=data[k];

transmit();

k++;

}

k=0;

}

}

如果你测试的是同一台机子上的两个串口,就连接好2个串口,然后打开两次串口调试助手,分别选好串口编号,设定波特率等参数,点连接,然后在发送区随便填点信息点发送,打开的2个串口调试助手的窗口能互相发送接收,就说明这两个串口能正常通信

如果测试2台不同机子上的串口,就分辨在两台机子上打开串口调试助手, *** 作一样

如果只测试一个串口,rs422和rs485方式的是测不了的,rs232的可以短接2,3针脚,打开一个串口调试助手,选好串口编号和参数,发送信息能在接收区得到回复,证明该串口能工作

以上就是关于哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~全部的内容,包括:哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~、串口调试波形图版 3.0怎么用、这个51单片机串口通讯程序为什么接受不了数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存