STC单片机 串口通信 一直不出正确数据
时间:10-02
整理:3721RD
点击:
我使用的是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是一样的
sbit LED = P5^5;
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; //????í?íìê?3?
P3M1 = 0X00;
RS485_enable = 1;
LED = 0;
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是一样的
sbit LED = P5^5;
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; //????í?íìê?3?
P3M1 = 0X00;
RS485_enable = 1;
LED = 0;
usart_init();
while(1)
{
i = 0;
while(TX1_Buffer[i] != '\0')
{
SBUF = TX1_Buffer[i]; //·¢ò???×??ú
while(!TI);
TI=0;
i++;
}
}
}
奥奥,是这样啊~还以为有这么高的电压供电的板子呢
#define S1_8bit() SCON = (SCON & 0x3f) | 0x40
#define S1_USE_P36P37() P_SW1 = (P_SW1 & ~0xc0) | 0x40 //UART1 使用P36 P37
这是STC头文件里边的
是不是数据线或软件设置问题
不懂 学习一下经验
你是不是用的库文件,你把中断打开,你还是参考一下库函数使用手册在用吧,我一开始也被坑了
666666666669
666666666669
没用库文件,后来检测后是硬件问题,供电电压11.6有点低,芯片工作不正常,然后换为12.5V供电就好了。同一程序因为供电耽误这么久,涨经验了
涨知识了~一直以为芯片5v供电就可以了
不是,我的是总电源供电,然后转过来5V,但是总电压低了,导致芯片没正常工作
奥奥,是这样啊~还以为有这么高的电压供电的板子呢
看起来,好像没有什么问题。你在试试。
串口的频率是否设置正确呢?
加油,朋友!