单片机学习小组
直播中

张蕾

7年用户 176经验值
私信 关注

为什么我用串口助手测试STC12C5A60S2串口2发不出去数据也接收不到数据?

新手学习,想通过STC12C5A60S2的串口2收发数据,写了个测试程序,就是串口助手发什么就接收什么
但是用串口助手测试的时候发不出去数据也接收不到数据,代码如下,
求前辈指点呀~~谢谢大家啦~!
#include
#define uchar unsigned char
#define S2RI 0x01                                        //S2CON^0
#define S2ti 0x02                                        //S2CON^1
uchar Data_In,flag;
void Usart2_Init()                        //9600bps,11.0592MHz;串口2初始化函数
{
        AUXR&=0xf7;                  //波特率不倍速;
        BRT=0xfd;                        //设定独立波特率发生器重装值;
        S2CON=0x50;                //8位数据,可变波特率;
        AUXR&=0xfb;                 //独立波特率发生器时钟为Fosc,即1T;
    AUXR|=0x10;                  //启动独立波特率发生器;
        EA=1;                           //总中断打开;
        IE2=0x01;                         //串口2中断打开;
}
void Send_Usart2()
{
        if(flag==1)
        {
                flag=0;
                IE2=0x00;
                S2BUF=Data_In;
                while(!(S2CON&S2TI));
                S2CON&=~S2TI;//清标志位
                IE2=0x01;
        }
}
void main()                               //主函数;
{
        Usart2_Init();
        while(1)
        {
                Send_Usart2();
        }        
}
void Usart2_Int() interrupt 8          //串口中断函数;
{
        if(S2CON&S2RI)
        {
                S2CON&=~S2RI;//清标志位
                Data_In=S2BUF;
                P1=Data_In;        
                flag=1;
        }
}

回帖(3)

孙沛池

2019-9-23 08:59:19
#include
#define uchar unsigned char
#define S2RI 0x01                                        //S2CON^0
#define S2TI 0x02                                        //S2CON^1
void Usart2_Init()                        //9600bps,11.0592MHz;
{
        AUXR&=0xf7;          //2¨ìØÂê2»¼ó±¶
        BRT=-36;             //-fosc/(32*9600)        
        S2CON=0x50;          //·½ê½1
        AUXR|=0x14;          //BRTR=1 ¶àá¢2¨ìØÂê·¢éúÆ÷ BRT12=1 1TÄ£ê½
       
        //EA=0;              //2»DèÖD¶Ï   
        //IE2=0x01;            
}
void Send_Usart2(char Sen)
{
        S2BUF = Sen;
                                while(!(S2CON&S2TI));
        S2CON&=0xfd;
}
char Recv_Usart2(void)
{
                                char Recv;
                                while(!(S2CON&S2RI));
                                Recv = S2BUF;
                                S2CON&=0xfe;
                                return Recv;
}
void main()                              
{
                                char a;
                                Usart2_Init();
        while(1)
        {     
                                        a=Recv_Usart2();
                                        Send_Usart2(a);
        }        
}
1 举报

李代三

2019-9-23 09:04:37
初始化不对,给你重写了一遍
举报

邢洋

2019-9-23 09:12:48
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分