您的位置 首页 传感器

关于PIC16F877A串口发送恣意字符串的问题

以前在使用51系列的单片机的时候,下面两个函数使用起来完全没有问题,一个是发送单个字符的,一个是发送任意长度字符串的。向串口发送一

曾经在运用51系列的单片机的时分,下面两个函数运用起来彻底没有问题,一个是发送单个字符的,一个是发送恣意长度字符串的。

//向串口发送一个字符

void send_char_com( uint8 ch)

{

TXREG = ch;

while (!TRMT);

TRMT = 0 ; //有必要写,否则有或许发生过错数据发送

}

//向串口发送一个字符串

void send_string_com(uchar *str)

{

uint16 k= 0 ;

do

{

send_char_com(*(str + k));

k++;

}

while (*(str + k)!=);

}

现在移植到PIC上面来今后,却发现send_string_com()函数不可以用了,经过串口调试帮手发现发送过来的数据为乱码。在试了很屡次今后,的确发现PIC16F877A不支撑这种写法,因为PIC16F877A关于指针的支撑不是很好,所以这种对指针的操作方法运用起来不可。可是要是碰到许多字符串需求发送,莫非只能一个个渐渐仿制过来发送吗?在找了许多材料无果的情况下,忽然发现一个程序,可是仍是有一个缺陷。

#include

printf(“Press a key and I will echo it back:”);

void putch(unsigned char byte)

{

while(!TXIF)

continue;

TXREG = byte;

}

经过添加这个库和这个函数就可以打印出恣意长度的字符串,上面提及的缺陷便是,发送字符串的时分不能呈现中止,要是呈现中止就会打断打印,而且后边没有打印出来的也不会持续打印,这个是因为什么原因形成的现在还不是很清楚。所以假如有人需求运用这种方法的话,一定要记住在开端发送的时分将总中止的答应封闭,发送完成后再敞开总中止,否则会有字符发送丢掉。

假如我们有比这个方法更好的方法,非凡留言,我们一同评论评论。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/259679.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部