久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6502|回復: 18
打印 上一主題 下一主題
收起左側

新人求救,51單片機定時器0關閉再開啟以后不工作

  [復制鏈接]
跳轉到指定樓層
樓主
300黑幣


如題,子函數中因為要執行串口發送就先關閉了定時器0開啟定時器1(兩個同時開啟總出問題),發送完畢后關閉定時器1再開啟定時器0,可是接下來定時器0都不再工作,主函數工作正常(出了有關定時器0的)。P2是控制LED燈亮滅的端口,定時器不工作的話P2默認全滅。

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

使用道具 舉報

沙發
ID:773924 發表于 2020-6-15 17:08 | 只看該作者
你把最后兩行代碼的順序倒過來試一下。即:
flag4=0;
timer0_init();
回復

使用道具 舉報

板凳
ID:638390 發表于 2020-6-15 17:49 | 只看該作者
經過檢測TMOD已經被重新定義為0x01,可是定時器0依舊不工作
回復

使用道具 舉報

地板
ID:764088 發表于 2020-6-16 10:13 | 只看該作者
檢查與定時器相關的驅動時鐘是否符合要求,并查該時鐘在定時器 開關的變化
回復

使用道具 舉報

5#
ID:123289 發表于 2020-6-16 15:36 | 只看該作者
你是證明它沒有工作的呢?
LED燈亮何時滅?何時亮?滅后何時又被明亮的呢?
回復

使用道具 舉報

6#
ID:782419 發表于 2020-6-17 21:25 | 只看該作者
修改定時器0模式時,TMOD&=0xF0; TMOD|=0x01;
修改定時器1模式時,TMOD&=0x0F; TMOD|=0x20;
這樣修改定時器模式時不會互相干擾。你可以試下。
回復

使用道具 舉報

7#
ID:782419 發表于 2020-6-17 21:29 | 只看該作者
應該是你修改定時器工作模式的方法有問題,你的這種操作方法,如果只是一個定時器的話決什么問題,如果是兩個使用同一個模式寄存器的定時器就不好用了,可能在打開一個定時器的同時會關閉另一個定時器。這時候應用用與或方式操作修改TMOD寄存器。網上應該有相關的視頻。
回復

使用道具 舉報

8#
ID:636538 發表于 2020-6-18 15:15 | 只看該作者
wufeng391 發表于 2020-6-17 21:25
修改定時器0模式時,TMOD&=0xF0; TMOD|=0x01;
修改定時器1模式時,TMOD&=0x0F; TMOD|=0x20;
這樣修改定時 ...

你這個不就是TMOD=0X21;
回復

使用道具 舉報

9#
ID:636538 發表于 2020-6-18 15:26 | 只看該作者
直接在開啟定時器1初始化的時候TMOD|=0X20;你第二個初始化相當于給第一個給覆蓋了也可以兩個初始化放在一起寫;
回復

使用道具 舉報

10#
ID:519089 發表于 2020-6-30 13:55 | 只看該作者
TIME1的初始化把    Time0給關了。。。。
回復

使用道具 舉報

11#
ID:789121 發表于 2020-6-30 14:30 | 只看該作者
在timer0_init()中把timer1的中斷和串口中斷關掉試一下
回復

使用道具 舉報

12#
ID:360812 發表于 2020-6-30 15:24 | 只看該作者
應該是初始化的問題,用之前在初始化一次呢?
回復

使用道具 舉報

13#
ID:280512 發表于 2020-6-30 17:48 | 只看該作者
既然不需要兩個定時器同時工作,除了工作模式變動外。可以分別控制 TR0 和 TR1 吧
回復

使用道具 舉報

14#
ID:638390 發表于 2020-7-3 18:58 | 只看該作者
已經過去蠻久了,之前一直給忘了,我把兩個兩個定時器同時開啟,也就是像前面各位說的方法我都嘗試過,而測試方法就是兩個定時器各控制一個led燈的亮滅,各自執行的時候會使對應的led燈亮,使另一個定時器的led滅,而在這里會出現定時器0結束定時器1開啟的過程都正常,而當定時器1語句結束后,定時器0就失去效用,對應的led不再亮起
回復

使用道具 舉報

15#
ID:213173 發表于 2020-7-3 20:48 | 只看該作者
YokeHickt 發表于 2020-7-3 18:58
已經過去蠻久了,之前一直給忘了,我把兩個兩個定時器同時開啟,也就是像前面各位說的方法我都嘗試過,而測 ...

樓上的壇友基本把問題都講清楚了,樓主還沒搞定可能與你把T0設置周期太短有關。進程調度得當串口與T0不會互擾。如實在搞不定可以設置兩個定時器開關互斥。基本構架如下:

void InitTimer(void)
{
        TMOD = 0x22;//8位自動重裝
        PCON = 0x00;
        SCON = 0x50;
        TH0 = 0xA4;//定時100us
        TL0 = 0xA4;
        TH1 = 0xFD;//比特率9600
        TL1 = 0xFD;
        TR0 = 0;//關T0
        TR1 = 0;//關T1
        EA = 1;
        ES = 1;
        ET0 = 1;
        ET1 = 0;
}

void main(void)
{
        InitTimer();
        while(1)
        {
                //相應任務中加二選一
                if(TR1==1)
                        TR0=0;               
                else TR0=1;
        }
}

void Timer0Interrupt(void) interrupt 1
{
        //不需重裝
        //中斷任務
}

void UARTInterrupt(void) interrupt 4
{
        RI=0;
        x=SBUF;
        //中斷任務
}
回復

使用道具 舉報

16#
ID:789121 發表于 2020-7-4 11:22 | 只看該作者
還沒解決么?實在不行就把仿真圖和程序發上來吧
回復

使用道具 舉報

17#
ID:735148 發表于 2020-7-4 17:03 | 只看該作者
要不你把整個程序貼上來。這一點,確識沒看出來可以不執行的錯誤
回復

使用道具 舉報

18#
ID:633896 發表于 2020-7-7 11:13 | 只看該作者
TOMD 只需要定義一次  你在兩個初始化都有,你在開定時器0的時候關了1 你在開定時器1的時候關了0 ,所以會導致你一直都只是一個定時器工作。如果你關掉0就開1的話可以,關掉1就開0的話 也可以 兩個同時打開的話就不行。都是TMOD的原因。

上次我犯了這個錯誤,師傅讓我自賞兩個大嘴巴子。
回復

使用道具 舉報

19#
ID:801878 發表于 2020-7-28 10:15 | 只看該作者
修改定時器0模式時,TMOD&=0xF0; TMOD|=0x01; 修改定時器1模式時,TMOD&=0x0F; TMOD|=0x20;
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产一区二区三区 | 一区二区三区高清在线观看 | 久久精品国产一区二区三区 | 久久久久9999亚洲精品 | 国产激情视频 | 综合久久综合久久 | 毛片一级网站 | 久久久蜜桃一区二区人 | 欧美日韩精品久久久免费观看 | 亚洲国产精品一区二区久久 | 日韩高清黄色 | 91精品国产综合久久婷婷香蕉 | 超碰日本| 在线观看h视频 | 91在线看 | 天天操夜夜爽 | 免费一看一级毛片 | 国内毛片毛片毛片毛片 | 欧美一级在线 | av在线二区 | 影音先锋男| 国产成人精品一区二区三区视频 | 亚洲天堂精品一区 | 欧美亚洲国产一区二区三区 | 中文字幕亚洲一区二区三区 | 国产精品视频在线播放 | 中文字幕不卡在线观看 | 亚洲福利精品 | 日本亚洲一区 | 亚洲成人一区 | 天堂在线中文字幕 | 美女福利网站 | 超碰在线人人 | 亚洲色欲色欲www | 国产欧美精品一区二区 | 国产成人精品一区二区三区四区 | 欧美一级在线观看 | 精品粉嫩aⅴ一区二区三区四区 | 99在线免费视频 | 日韩av电影院 | 亚洲视频在线免费观看 |