使用串口发送数据时,当把串口配置函数和发送函数放到main函数的.c文件中,串口能正常发送字符串,但是把串口的配置函数和发送函数放到其他自定义.c文件中,串口只能发送字符串的头和尾(电脑上的串口助手只显示头和尾),不明白这是为什么,,真是活见鬼了,哪位大神指点一下。
这是我的源代码:
//串口初始化
void Usart1_Init()
{
TRISC7 = 1;
TRISC6 = 0;
//TXSTAx:发送状态和控制寄存器
TXSTA1bits.TX9 = 0; //选择8位发送
TXSTA1bits.TXEN = 1; //使能发送
TXSTA1bits.SYNC = 0; //异步模式
TXSTA1bits.BRGH = 1; //高速模式
//RCSTAx:接收状态和控制寄存器
RCSTA1bits.SPEN = 1; //使能串口
RCSTA1bits.RX9 = 0; //选择8位接收
RCSTA1bits.CREN = 1; //0=禁止接收器,1= 允许接收器
RC1IE = 1; //接收中断允许位
INTCONbits.GIE = 1;
INTCONbits.PEIE = 1;
RC1IF = 0;
//BAUDCONx:波特率控制寄存器
BAUDCON1bits.BRG16 = 1; //16 位波特率发生器――SPBRGHx 和 SPBRGx
SPBRG = 95; //波特率为19200pbs
}
//串口发送一个字节数据
void Usart1_Send_Byte(char dat)
{
TXREG1 = dat;
while(!TXSTA2bits.TRMT);
}
//串口发送十六进制数组
void Usart1_Send_Array(char array[],char n)
{
unsigned char i=0;
for(i = 0; i < n; i ++)
{
Usart1_Send_Byte(array[i]);
__delay_us(500);
}
}
//串口发送一个字符串数据
void Usart1_Send_String(char *str)
{
while(*str != '\0')
{
Usart1_Send_Byte(*str++);
__delay_us(500);
}
}
//********************************
注 :把这段代码放在main函数同一个.c文件中发送串时没问题的,但是放到自定义的.h.c文件中就只能发送头和尾,我调试时发现void Usart1_Send_Byte(char dat)函数随便放在哪里不影响,就是发送串的两个函数(void Usart1_Send_String(char *str)和void Usart1_Send_Array(char array[],char n))不行
求助!!!!
|