各位大虾:小弟刚玩PIC单片机。在使用PIC16F877A的USART功能时老是出现怪问题。
问题1:发送不正常,我要发送4字节数据0x55,但发送完数据后,停止发送功能(TXEN=0).
但我在接收端看数据时,发现除了我要的数据外,还有其他的0x00这样的数据。接收端数据类似 0x55 0x55 0x55 0x55 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
这是怎么回事呢?
我的程序如下。
#include<pic.h>
__CONFIG(XT&WDTDIS);
#define uchar unsigned char
#define uint unsigned int
uchar send_count;
void interrupt ISR(void)
{
if(TXEN&TXIF)
{
if(send_count<5)
{TXREG=0x55;}
else
{
TXEN=0;//停止发送
send_count=0x00;
}
send_count++;
}
}
void Init_system(void)
{
send_count=0x00;
/************/
BRGH=1;
SPBRG=25;//选择9600波特率
SYNC=0;//异步模式
SPEN=1;//串行口使能
TXIE=1;//允许中断
TX9=0;//8位数据传输
TXEN=1;//允许发送数据,同时TXIF会置位
TX9D=0;
GIE=1;//开总中断
PEIE=1;//开外设中断
}
void main(void)
{
Init_system();
while(1)
{NOP();}
}
是不是我关发送的时候引起的发送模块复位引起的呢,我应该怎么去避免这问题呢?
PIC的发送标志TXIF又只能往TXREG写数据清零。
我应该怎么样让它停止发送数据呢? |