PIC单片机串口调试
时间:10-02
整理:3721RD
点击:
这是我写的一个简单的串口程序,用串口助手发数 ,当芯片收到数以后再把它发送出来
#define uint unsigned int
#define uchar unsigned char
uchar Rec1Data;
void uart_init()
{
TRISC=0XD0;
TXSTA1&=0X8f; // (6)8位数据0,(5)禁止发送0,(4)异步模式0;
TXSTA1|=0X04; // (2)高速,
RCSTA1|=0x90; // (7)使能串口1;(4)使能接受1
RCSTA1&=0xBF; // (6)8位接受0;
TXSTA1bits.TXEN=1; // 使能 发送
TXSTA1bits.TRMT=1; // 发送器为空
BAUDCON1=0x48; // 接收操作处于空闲状态,16 位波特率发生器——SPBR启动看门狗 GH 和SPBRG
SPBRGH1=0;
SPBRG1=34; // 波特率为115200;
}
void write_dis(uchar write1_data)
{
TXREG1=write1_data;
while(!TXSTA1bits.TRMT);
}
void main ()
{
uart_init();
while(1)
{
if(PIR1bits.RC1IF)
{
// PIR1bits.RC1IF=0;
Rec1Data=RCREG1;
write_dis(Rec1Data);
}
}
}
但是发数之后没有再发送出来
#define uint unsigned int
#define uchar unsigned char
uchar Rec1Data;
void uart_init()
{
TRISC=0XD0;
TXSTA1&=0X8f; // (6)8位数据0,(5)禁止发送0,(4)异步模式0;
TXSTA1|=0X04; // (2)高速,
RCSTA1|=0x90; // (7)使能串口1;(4)使能接受1
RCSTA1&=0xBF; // (6)8位接受0;
TXSTA1bits.TXEN=1; // 使能 发送
TXSTA1bits.TRMT=1; // 发送器为空
BAUDCON1=0x48; // 接收操作处于空闲状态,16 位波特率发生器——SPBR启动看门狗 GH 和SPBRG
SPBRGH1=0;
SPBRG1=34; // 波特率为115200;
}
void write_dis(uchar write1_data)
{
TXREG1=write1_data;
while(!TXSTA1bits.TRMT);
}
void main ()
{
uart_init();
while(1)
{
if(PIR1bits.RC1IF)
{
// PIR1bits.RC1IF=0;
Rec1Data=RCREG1;
write_dis(Rec1Data);
}
}
}
但是发数之后没有再发送出来
可以在线调试,看是没有收到还是收到了没有发送!
没怎么弄过PIC的芯片,不过看有启动看门狗,看看看门狗时间,还有有,你确定单片机收到了信息?可以用其他的显示方式显示一下你收到的数据
解决了 不是看门狗的事 端口设定的原因