STC单片机 串口通信 一直不出正确数据

2019-07-15 12:26发布

我使用的是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;                                //Ç¿ÖÆÍÆÍìÊä³ö
                P3M1 =         0X00;
                RS485_enable = 1;
                LED = 0;
       
               
                usart_init();
       
                while(1)
                {
                        i = 0;
                        while(TX1_Buffer[i] != '')
                        {
                                SBUF = TX1_Buffer[i];        //·¢Ò»¸ö×Ö½Ú
                                while(!TI);
                                        TI=0;
                                i++;
                               
                        }
                }
       
       
               
               
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
刺猬小哥
1楼-- · 2019-07-15 15:28
小可乐cc 发表于 2016-12-7 09:38
不是,我的是总电源供电,然后转过来5V,但是总电压低了,导致芯片没正常工作

奥奥,是这样啊~还以为有这么高的电压供电的板子呢 最佳答案
小可乐cc
2楼-- · 2019-07-15 17:55
#define                S1_8bit()                        SCON  = (SCON & 0x3f) | 0x40
#define                S1_USE_P36P37()                P_SW1 = (P_SW1 & ~0xc0) | 0x40        //UART1 使用P36 P37
这是STC头文件里边的
太子的空间
3楼-- · 2019-07-15 18:23
是不是数据线或软件设置问题
李春明
4楼-- · 2019-07-15 23:46
不懂 学习一下经验              
左耳朵的耗子
5楼-- · 2019-07-16 00:58
 精彩回答 2  元偷偷看……
小可乐cc
6楼-- · 2019-07-16 04:58
左耳朵的耗子 发表于 2016-12-5 21:44
你是不是用的库文件,你把中断打开,你还是参考一下库函数使用手册在用吧,我一开始也被坑了

没用库文件,后来检测后是硬件问题,供电电压11.6有点低,芯片工作不正常,然后换为12.5V供电就好了。同一程序因为供电耽误这么久,涨经验了

一周热门 更多>