STC单片机串口通信问题,一直无法收到正确数据
我使用的是STC15F2系列的单片机,在调试串口通信的时候,在串口调试助手一直收不到正确数据,请问大神,这是怎么回事,下边是代码#include"STC15Fxxxx.H...
我使用的是STC15F2系列的单片机,在调试串口通信的时候,在串口调试助手一直收不到正确数据,请问大神,这是怎么回事,下边是代码
#include "STC15Fxxxx.H"
#define MAIN_Fosc 11059200L //主芯片波特率
#define BaudRate1 9600UL //波特率
#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 /12 / BaudRate1)) //Timer 2 溢出率
sbit RS485_enable = P3^5; //485使能,让他一直保持发送状态,和232是一样的
u8 TX1_Buffer[8] = "abcd";
void usart_init()
{
S1_8bit(); //8位数据
REN = 0; //禁止接收
S1_USE_P36P37(); //UART1 使用P3^6,P3^7作为TXD,RXD
AUXR &= ~(1<<4); //Timer stop
AUXR |= 0x01; // 使用定时器2
AUXR |= (0<<2); //使用传统速率
TH2 = (u8)(Timer2_Reload >> 8);
TL2 = (u8)Timer2_Reload;
AUXR |= (1<<4); //Timer2 run enable
ES = 1; //串口中断开启
EA = 1; //开启总中断
}
void main ()
{
u8 i = 0;
P3M0 = 0X20; //强推挽输出,因单片机输出电流不够,不影响程序
P3M1 = 0X00;
RS485_enable = 1;
usart_init();
while(1)
{
i = 0;
while(TX1_Buffer[i] != '\0')
{
SBUF = TX1_Buffer[i]; //
while(!TI);
TI=0;
i++;
}
}
} 展开
#include "STC15Fxxxx.H"
#define MAIN_Fosc 11059200L //主芯片波特率
#define BaudRate1 9600UL //波特率
#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 /12 / BaudRate1)) //Timer 2 溢出率
sbit RS485_enable = P3^5; //485使能,让他一直保持发送状态,和232是一样的
u8 TX1_Buffer[8] = "abcd";
void usart_init()
{
S1_8bit(); //8位数据
REN = 0; //禁止接收
S1_USE_P36P37(); //UART1 使用P3^6,P3^7作为TXD,RXD
AUXR &= ~(1<<4); //Timer stop
AUXR |= 0x01; // 使用定时器2
AUXR |= (0<<2); //使用传统速率
TH2 = (u8)(Timer2_Reload >> 8);
TL2 = (u8)Timer2_Reload;
AUXR |= (1<<4); //Timer2 run enable
ES = 1; //串口中断开启
EA = 1; //开启总中断
}
void main ()
{
u8 i = 0;
P3M0 = 0X20; //强推挽输出,因单片机输出电流不够,不影响程序
P3M1 = 0X00;
RS485_enable = 1;
usart_init();
while(1)
{
i = 0;
while(TX1_Buffer[i] != '\0')
{
SBUF = TX1_Buffer[i]; //
while(!TI);
TI=0;
i++;
}
}
} 展开
2个回答
展开全部
检查单片机的波特率是否异常。
更多追问追答
追问
请问这个怎么检测,我使用的是STC单片机芯片内部晶振,是11.0592的。
追答
用串口调试助手对单片机进行调试。
调试先测试单字节。
可小幅更改代码中的波特率数值来做测试。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的轿衫串口用的哪个管脚?
P3M0 = 0X20; 我一直都配置为 P3M0 = 0X00;
你还可以用示波判局器测试信闭冲腔号
P3M0 = 0X20; 我一直都配置为 P3M0 = 0X00;
你还可以用示波判局器测试信闭冲腔号
追问
串口使用的是P35,P36,没问题。有波形,已经解决波形问题了,有波形,就是数据不对。今下午查了查,,是供电电压不够,芯片没有正常工作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询