PIC单片机与电脑串口通信

PIC单片机与电脑串口通信,第1张

大部分PIC单片机都有RS-232模块派贺,按照单片机手册使用相应的TX/RX引脚,再加上RS-232电平转换芯片,一般用MAX202E,就可完段羡掘成单片机端的电路。与电脑通信时需要做一根数据线,可采用DB9插接件,注意DB9默认第2芯为接收,第3芯为发送,第5芯为GND,用这三个芯就可以,第2芯和握核第3芯的连接线要交叉,即电脑端DB9的2芯连接单片机端DB9的3芯。台式机电脑都带DB9串口,新型的笔记本没有DB9串口,可配一个USB转DB9串口。单片机端编好程序,电脑上再装一个叫串口精灵的软件,就可收发数据了。

搭哪当接收到数据时,RCIF会被置1,如果读了接收结果RCREG,则系统自动会把RCIF清0。

程序把清RCIF语句屏蔽了,但TXREG=RCREG这一句就是读接收结果(把接收结果RCREG送到发送寄存器TXREG里),所以会自动让RCIF清0,只有新数据来时,RCIF才会置1,才能再进入中断。

如果把正闷发送的语句改为TXREG=0X12(或其他不是RCREG的寄存器的变量),因此中断后没有读取接收数据,也就不能清RCIF,RCIF仍然为1,即中断服务程序退出后,还存在的中断请求,因此就会马上进入中断,从而出现不停的发送数据的现象。

解决的办知清码法有2:

1、让原来屏蔽的语句RCIF=0有效;

2、空读RCREG,如定义一个变量A(unsigned char A),在发送数据后或前,增加A=RCREG就可以了。

给你个例子,pic16f77 usart的驱动;

http://blog.ednchina.com/warden/236267/message.aspx

上面例子是用轮循方式做的,在很多拍历老地方有限制。

PIC的USART使用发送中袭升断时要注意:Once the TXREG register transfers the data to the TSR register(occurs in one TCYCLE), the TXREG is empty and interrupt bit TXIF (PIR1<4>) is set。就是只要TXREG里没有数据就会置TXIF中断标志。

你可以这样实现:先把TX中断关了,把要发的数据放入一个定义好的TX_BUF[]中,然后再开TX中断,把TX_BUF发出,发完之后再关TX中断!

希望对你有点帮助。

if(RCIF==1)

{

v = RCREG

rxstr[rx_count]=v

PrintChar(rxstr[rx_count])//PrintChar的原型是什么???烂棚

rx_count++

if(rx_count >7)

testcomflag =1

}

// RCIF=0去掉这两句,没必要+上去

// RCIE=1

1。把最后两句去掉

2。你的PintChar原型是什么?


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

原文地址: https://outofmemory.cn/yw/12552039.html

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

发表评论

登录后才能评论

评论列表(0条)

保存