找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3343|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

單片機定時器不工作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:408809 發(fā)表于 2020-2-1 11:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機:STC12C5A60S2      晶振:22.1184 MHz
1、使用單片機的 串口 2 接收GPS模塊信息;
2、使用定時器 1  來控制 P3 口 輸出高電平;

現(xiàn)在的問題是:
1、我在主函數(shù)的while循環(huán)里面先將  P3 口輸出低電平, (有動作)
2、在定時器 1 的中斷函數(shù)里面將 P3 口輸出高電平,(不會動作)

以下是代碼:
1、主函數(shù)循環(huán)
        while(1)
        {
                P3=0;  // 測試用
                GPS_JieXi();
                  ......        

2、波特率、定時器 初值設(shè)置
void Uart2_Init()                // 第二串口,9600bps、22.1184MHz
{
        AUXR &= 0xF7;                //波特率不倍速
        S2CON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x04;                //獨立波特率發(fā)生器時鐘為Fosc,即1T
        BRT          = 0xB8;                //設(shè)定獨立波特率發(fā)生器重裝值
        AUXR |= 0x10;                //啟動獨立波特率發(fā)生器
        IE2         = 0x01;   //打開串行口中斷
//---------------------------------------------------------------
        AUXR |= 0x40;                //定時器時鐘1T模式
        TMOD &= 0x0F;                //設(shè)置定時器模式
        TL1 = 0x9A;                //設(shè)置定時初值
        TH1 = 0xA9;                //設(shè)置定時初值
        TF1 = 0;                //清除TF1標(biāo)志
        TR1 = 1;                //定時器1開始計時
        ET1 = 1;
//----------------------------------------------------------------        
        EA   = 1;                     //打開全局中斷控制
               
}


3、定時器 1  中斷函數(shù),定時100 毫秒
void Timer() interrupt 3
        {        

                Time++;
                        if(Time==100)
                                {
                                        Time=0;                        
                                        P3=1;
                                }
        }

        



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:235200 發(fā)表于 2020-2-1 12:36 | 只看該作者
你所控制的P3=0 P3=1剛好是P30這一根口線,這根口線又是串行口的通信線,建議控制P1口試試
回復(fù)

使用道具 舉報

板凳
ID:213173 發(fā)表于 2020-2-1 13:06 | 只看該作者
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x00; P3=0xff;
回復(fù)

使用道具 舉報

地板
ID:94031 發(fā)表于 2020-2-1 13:48 | 只看該作者
P3口是8位,P3=1;相當(dāng)于P3=0x01;你P3=0xff試試。
回復(fù)

使用道具 舉報

5#
ID:93224 發(fā)表于 2020-2-1 14:54 | 只看該作者
你這個程序都沒有設(shè)置定時器1的工作模式
回復(fù)

使用道具 舉報

6#
ID:408809 發(fā)表于 2020-2-1 23:22 | 只看該作者
wulin 發(fā)表于 2020-2-1 13:06
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x0 ...

真的是這樣啊。謝謝
回復(fù)

使用道具 舉報

7#
ID:408809 發(fā)表于 2020-2-1 23:23 | 只看該作者
xuyaqi 發(fā)表于 2020-2-1 13:48
P3口是8位,P3=1;相當(dāng)于P3=0x01;你P3=0xff試試。

真的是這樣啊。這個知識真的是現(xiàn)在才知道的。謝謝
回復(fù)

使用道具 舉報

8#
ID:408809 發(fā)表于 2020-2-1 23:24 | 只看該作者
lele5211314 發(fā)表于 2020-2-1 14:54
你這個程序都沒有設(shè)置定時器1的工作模式

已經(jīng)設(shè)置了,F(xiàn)在已經(jīng)可以工作了。設(shè)置為P3=0X00,0XFF  之后就可以工作了。
回復(fù)

使用道具 舉報

9#
ID:408809 發(fā)表于 2020-2-1 23:25 | 只看該作者
csmyldl 發(fā)表于 2020-2-1 12:36
你所控制的P3=0 P3=1剛好是P30這一根口線,這根口線又是串行口的通信線,建議控制P1口試試

也倒是不影響,因為我的GPS是接在第二個串口上(P1.2)
回復(fù)

使用道具 舉報

10#
ID:408809 發(fā)表于 2020-2-1 23:27 | 只看該作者
wulin 發(fā)表于 2020-2-1 13:06
P3=0;沒有什么問題:00000000,P3=1;問題就來了:00000001。P3只有最低位是高電平。
要用16進制寫:P3=0x0 ...

經(jīng)過你的指點,改了之后OK,會動作了。
回復(fù)

使用道具 舉報

11#
ID:316468 發(fā)表于 2020-2-1 23:37 | 只看該作者
ynzsc001 發(fā)表于 2020-2-1 23:22
真的是這樣啊。謝謝

你也可以寫P3=255也是對的。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表