OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3771|回复: 3

STC12C5A60S2串口2,求助~!

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-4-16
在线时间
2 小时
发表于 2016-7-2 12:35:35 | 显示全部楼层 |阅读模式
2金钱
新手学习,想通过STC12C5A60S2的串口2收发数据,写了个测试程序,就是串口助手发什么就接收什么

但是用串口助手测试的时候发不出去数据也接收不到数据,代码如下,

求前辈指点呀~~谢谢大家啦~!



#include <STC12C5A60S2.h>

#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;
        }
}

最佳答案

查看完整内容[请看2#楼]

#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; ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
923
金钱
923
注册时间
2016-7-1
在线时间
22 小时
发表于 2016-7-2 12:35:36 | 显示全部楼层
#include <STC12C5A60S2.h>

#define uchar unsigned char
#define S2RI 0x01                                        //S2CON^0
#define S2TI 0x02                                        //S2CON^1

void Usart2_Init()                        //9600bps,11.0592MHz;
{
        AUXR&=0xf7;          //2¨ì&#216;&#194;ê2&#187;&#188;ó±&#182;
        BRT=-36;             //-fosc/(32*9600)        
        S2CON=0x50;          //·&#189;ê&#189;1
        AUXR|=0x14;          //BRTR=1 &#182;àá¢2¨ì&#216;&#194;ê·¢éú&#198;÷ BRT12=1 1T&#196;£ê&#189;
       
        //EA=0;              //2&#187;Dè&#214;D&#182;&#207;   
        //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);
        }        
}
just Think
回复

使用道具 举报

0

主题

4

帖子

0

精华

高级会员

Rank: 4

积分
923
金钱
923
注册时间
2016-7-1
在线时间
22 小时
发表于 2016-7-2 15:38:09 | 显示全部楼层
初始化不对,给你重写了一遍

just Think
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2016-4-16
在线时间
2 小时
 楼主| 发表于 2016-7-24 11:26:39 | 显示全部楼层
volter_c 发表于 2016-7-2 15:38
初始化不对,给你重写了一遍

谢谢你~!!!最终问题是串口2和电脑之间少了一个转换电路,还是我太菜鸟呀,哈哈哈。。你的这个程序我后来试了试也对,谢谢前辈~!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表