求助 STC12C5A60S2接受GPS信号的问题
STC12C5A60S2,串口RX接GPS的TX口然后波特率也设置为了9600(GPS默认值)
GPS是好的电压也是对的(GPS的TX端接TTL到电脑能够正常显示数据)
接到单片机以后,串口中断从未发生。。。(端口中断会点亮一个LED,但是LED正常运行程序后一直没亮过)
现在把代码贴出来,希望高人指点
谢谢
#include<STC/STC12C5A60S2.h>
#include<intrins.h>
#include<Font.c>
typedef unsigned char uchar;
typedef unsigned int uint ;
//GPS数据存储数组
uchar JD; //经度
uchar JD_a; //经度方向
uchar WD; //纬度
uchar WD_a; //纬度方向
uchar date; //日期
uchar time; //时间
uchar speed; //速度
uchar high; //高度
uchar angle; //方位角
uchar use_sat; //使用的卫星数
uchar total_sat; //天空中总卫星数
uchar lock; //定位状态
uchar cmd; //用于存储命令类型的存储数组(前五位字母判断)
uchar cmd_number, mode, byte_count,comma; //命令字符串标号,命令数据区分,字节数,逗号数
uchar buf_full=0; //1:整句接收完成,相应数据有效。0:缓存数据无效。
uchar tmp;//用于转存中断的SBUF
bit flag=0; //用于标示收到信息
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA= 1; //允许中断
ES= 1; //允许串口中断
}
void UART_SER (void) interrupt 4 //串口中断
{ LED=0; //如果有中断就一直亮灯
if(RI) //判断是否是接收中断
{
RI=0; //标志位清零
tmp= SBUF; //保存中断的值
flag = 1; //设置中断标志
}
if(TI) //如果是串口标志志位,直接清零
TI=0;
}
void main()
{
UartInit(); //初始化串口和定时器,允许中断
LCD_Init(); //初始化显示屏幕
LED=0;
delay_1ms(500);
LED=1;
while(1) //开始死循环
{
if (flag==1)
processing();
LCD_printchar(0,0,(time+48));
LCD_printchar(1,0,(time+48));
LCD_printchar(2,0,':');
LCD_printchar(3,0,(time+48));
LCD_printchar(4,0,(time+48));
LCD_printchar(5,0,':');
LCD_printchar(6,0,(time+48));
LCD_printchar(7,0,(time+48));
}
} GPS输出,加个上拉或下拉电阻。明天看看确定一下。 现在看起来和GPS无关
因为没有中断产生即使从电脑发送ttl也没法触发中断 看起来你的程序是截取的
确认没有其它地方动过TR1,EA,ES吗
确认数据发送给了P30口吗 程序不是完整的我省略了5110驱动部分和GPS信号处理部分
确认是接到3.0的,从电脑发送ttl都能收到
但是GPS没收到呢
自己搞定了
说明一下
之前单片机的RX口同时接了GPS和电脑的TX端不知道什么原因 GPS的信号无法触发单片机中断
拔掉电脑的TX端以后,GPS信号成功收到{:loveliness:}
自己汗啊 没有烧掉一个TX端,相当不错了。 想监控串口的数据,正确做法是在电脑用两个串口的接收分别接在 待监控串口的接收和发送线上。 还会烧tx端啊
书上没有这么说过哦
那 一般烧谁的 ttl的还是GPS的呢 wajlh 发表于 2013-8-11 12:20 static/image/common/back.gif
想监控串口的数据,正确做法是在电脑用两个串口的接收分别接在 待监控串口的接收和发送线上。 ...
深有体会 前段时间调GTM900 把电脑和单片机串口接一起了 MAX232直接可以煮鸡蛋了。赶紧拔下来还好没坏
另外买了两个USB-232 现在电脑三个串口玩美搞定 xou822 发表于 2013-8-11 12:46 static/image/common/back.gif
还会烧tx端啊
书上没有这么说过哦
书上没跟你说可以把两个RX接在一起吧 楼上的长老可以详细的说说为什么吗
页:
[1]