找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4107|回复: 8
打印 上一主题 下一主题
收起左侧

STC12C5A60S2的双串口,一个收,另外一个发,用来接收GPS的信息

[复制链接]
跳转到指定楼层
楼主
ID:92452 发表于 2015-11-9 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做个项目,STC12C5A60S2+GPS,GPS挂在串口2上接收数据然后发给串口1,做了好久没做出来,感觉程序逻辑上没什么错误,程序如下,大家看看有什么问题吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:92452 发表于 2015-11-9 20:51 | 只看该作者
#include<stc12c5a.h>
#include<string.h>
#define S2RI 0x01
#define uint unsigned int
#define  uchar  unsigned char
uchar inter_ok=0;  
uchar temp[80];
uchar gps_flag=0;
uchar rec_start=0;
uchar rec_stop=0;
uint num=0;
sbit LED7=P1^7;
sbit LED6=P1^6;
sbit LED5=P1^5;
sbit LED4=P1^4;
uchar tmp;
  void uart2_init()
  {
          
         AUXR=0X10;        //允许独立波特率运行
          BRT=0XFD;         //         波特率为9600
        S2CON=0X50;          //方式1,8位,可变波特率,S2REN=1,允许串口接收
           AUXR1 = AUXR1&0xef ;        //        UART2在P1口
    IE2=0X01;         //允许串口2中断
           EA=1;                                  
   }

//void delayms(uint a)
//             {          uint b,c;
//                 for(b=a;b>0;b--)
//                        for(c=1222;c>0;c--)        ;               
//                                }


void  init_time()
{         
   
     
     TMOD=0X20;
         TH1=0xFD;
     TL1=0XFD;
         TR1=1;
         SM0=0;
         SM1=1;
         REN=1;
         EA=1;
         ES=1;
}


  
/*接收中断服务子程序*/
void GPS_interrupt() interrupt 8
{       
                IE2=0X00;                         //关串口2中断
      if(S2CON&S2RI)
    {     
                   
                      tmp=S2BUF;
                       
                                 if ((tmp== '$')&&(gps_flag==0))         //当第一字符为$时开始接收
                      {
                      rec_start=1;                 
                           rec_stop=0  ;
                                  }
                         if(rec_start)
                                 {
                                   temp[num++]=tmp ;
                                           if(tmp=='\n')                           //检测到换行符时
                             {
                                   temp[num]='\0';                                 //字符串结束
                                   rec_start=0;
                               gps_flag=1;
                                   rec_stop=1;                                                 //停止接收,转出
                                   num=0;
                             }
                                 
                                                 }
                      
                          
                               }  
                       S2CON&=~S2RI;                //清空串口2的接收标志位
                  IE2=0X01;                                           //开串口2
}
void  main()
{           
       int len,i;
                 init_time();
                 uart2_init();
               
                 while(1)
            {
                 if(rec_stop)                                                                 
                        {
                        TR0 = 1;
                        len=strlen(temp);                                                    //        得到字符串长度
                      for(i=0;i<len;i++)                                          //把数据传到串口1
                                          {
                                                    SBUF=temp[i];
                                                while(!TI);
                                                TI=0;
                                          }
                        gps_flag=0;
                        rec_stop=0;                                                               
                        }                
                                             
                        }



               
}
回复

使用道具 举报

板凳
ID:92452 发表于 2015-11-9 21:07 | 只看该作者
用的GPS是UBLOX-M6-0-001  GPRS用的是SIM900A模块,大家有相关资料吗,可不可以提供一根参考参考
回复

使用道具 举报

地板
ID:72559 发表于 2016-5-12 17:06 | 只看该作者
楼主 问题解决了吗?同求
回复

使用道具 举报

5#
ID:117466 发表于 2016-5-21 13:46 | 只看该作者
33333333333
回复

使用道具 举报

6#
ID:150468 发表于 2017-2-5 20:02 | 只看该作者
楼主问题解决了吗
回复

使用道具 举报

7#
ID:163662 发表于 2017-2-6 18:05 | 只看该作者
你两个串口程序放在一起很难确定是哪个有问题,对照官方文档一个个调好,这个不难的
回复

使用道具 举报

8#
ID:163961 发表于 2017-2-8 22:42 | 只看该作者
楼主 问题解决了吗?同求
回复

使用道具 举报

9#
ID:114987 发表于 2017-5-19 14:53 | 只看该作者
没有初始化串口1
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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