欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機定時器不工作 [打印本頁]

作者: ynzsc001    時間: 2020-2-1 11:26
標題: 單片機定時器不工作
單片機: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;
                                }
        }

        




作者: csmyldl    時間: 2020-2-1 12:36
你所控制的P3=0 P3=1剛好是P30這一根口線,這根口線又是串行口的通信線,建議控制P1口試試
作者: wulin    時間: 2020-2-1 13:06
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x00; P3=0xff;
作者: xuyaqi    時間: 2020-2-1 13:48
P3口是8位,P3=1;相當于P3=0x01;你P3=0xff試試。
作者: lele5211314    時間: 2020-2-1 14:54
你這個程序都沒有設置定時器1的工作模式
作者: ynzsc001    時間: 2020-2-1 23:22
wulin 發表于 2020-2-1 13:06
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x0 ...

真的是這樣啊。謝謝
作者: ynzsc001    時間: 2020-2-1 23:23
xuyaqi 發表于 2020-2-1 13:48
P3口是8位,P3=1;相當于P3=0x01;你P3=0xff試試。

真的是這樣啊。這個知識真的是現在才知道的。謝謝
作者: ynzsc001    時間: 2020-2-1 23:24
lele5211314 發表于 2020-2-1 14:54
你這個程序都沒有設置定時器1的工作模式

已經設置了,F在已經可以工作了。設置為P3=0X00,0XFF  之后就可以工作了。
作者: ynzsc001    時間: 2020-2-1 23:25
csmyldl 發表于 2020-2-1 12:36
你所控制的P3=0 P3=1剛好是P30這一根口線,這根口線又是串行口的通信線,建議控制P1口試試

也倒是不影響,因為我的GPS是接在第二個串口上(P1.2)
作者: ynzsc001    時間: 2020-2-1 23:27
wulin 發表于 2020-2-1 13:06
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x0 ...

經過你的指點,改了之后OK,會動作了。
作者: lucheng77    時間: 2020-2-1 23:37
ynzsc001 發表于 2020-2-1 23:22
真的是這樣啊。謝謝

你也可以寫P3=255也是對的。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1