单片机:STC12C5A60S2 晶振:22.1184 MHz
1、使用单片机的 串口 2 接收GPS模块信息;
2、使用定时器 1 来控制 P3 口 输出高电平;
现在的问题是:
1、我在主函数的while循环里面先将 P3 口输出低电平, (有动作)
2、在定时器 1 的中断函数里面将 P3 口输出高电平,(不会动作)
以下是代码:
1、主函数循环
while(1)
{
P3=0; // 测试用
GPS_JieXi();
......
2、波特率、定时器 初值设置
void Uart2_Init() // 第二串口,9600bps、22.1184MHz
{
AUXR &= 0xF7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
BRT = 0xB8; //设定独立波特率发生器重装值
AUXR |= 0x10; //启动独立波特率发生器
IE2 = 0x01; //打开串行口中断
//---------------------------------------------------------------
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x9A; //设置定时初值
TH1 = 0xA9; //设置定时初值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1;
//----------------------------------------------------------------
EA = 1; //打开全局中断控制
}
3、定时器 1 中断函数,定时100 毫秒
void Timer() interrupt 3
{
Time++;
if(Time==100)
{
Time=0;
P3=1;
}
}
|