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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數: 6503 | 評論數: 18 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-6-15 16:29

正文摘要:

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

回復

ID:801878 發表于 2020-7-28 10:15
修改定時器0模式時,TMOD&=0xF0; TMOD|=0x01; 修改定時器1模式時,TMOD&=0x0F; TMOD|=0x20;
ID:633896 發表于 2020-7-7 11:13
TOMD 只需要定義一次  你在兩個初始化都有,你在開定時器0的時候關了1 你在開定時器1的時候關了0 ,所以會導致你一直都只是一個定時器工作。如果你關掉0就開1的話可以,關掉1就開0的話 也可以 兩個同時打開的話就不行。都是TMOD的原因。

上次我犯了這個錯誤,師傅讓我自賞兩個大嘴巴子。
ID:735148 發表于 2020-7-4 17:03
要不你把整個程序貼上來。這一點,確識沒看出來可以不執行的錯誤
ID:789121 發表于 2020-7-4 11:22
還沒解決么?實在不行就把仿真圖和程序發上來吧
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;
        //中斷任務
}
ID:638390 發表于 2020-7-3 18:58
已經過去蠻久了,之前一直給忘了,我把兩個兩個定時器同時開啟,也就是像前面各位說的方法我都嘗試過,而測試方法就是兩個定時器各控制一個led燈的亮滅,各自執行的時候會使對應的led燈亮,使另一個定時器的led滅,而在這里會出現定時器0結束定時器1開啟的過程都正常,而當定時器1語句結束后,定時器0就失去效用,對應的led不再亮起
ID:280512 發表于 2020-6-30 17:48
既然不需要兩個定時器同時工作,除了工作模式變動外。可以分別控制 TR0 和 TR1 吧
ID:360812 發表于 2020-6-30 15:24
應該是初始化的問題,用之前在初始化一次呢?
ID:789121 發表于 2020-6-30 14:30
在timer0_init()中把timer1的中斷和串口中斷關掉試一下
ID:519089 發表于 2020-6-30 13:55
TIME1的初始化把    Time0給關了。。。。
ID:636538 發表于 2020-6-18 15:26
直接在開啟定時器1初始化的時候TMOD|=0X20;你第二個初始化相當于給第一個給覆蓋了也可以兩個初始化放在一起寫;
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;
ID:782419 發表于 2020-6-17 21:29
應該是你修改定時器工作模式的方法有問題,你的這種操作方法,如果只是一個定時器的話決什么問題,如果是兩個使用同一個模式寄存器的定時器就不好用了,可能在打開一個定時器的同時會關閉另一個定時器。這時候應用用與或方式操作修改TMOD寄存器。網上應該有相關的視頻。
ID:782419 發表于 2020-6-17 21:25
修改定時器0模式時,TMOD&=0xF0; TMOD|=0x01;
修改定時器1模式時,TMOD&=0x0F; TMOD|=0x20;
這樣修改定時器模式時不會互相干擾。你可以試下。
ID:123289 發表于 2020-6-16 15:36
你是證明它沒有工作的呢?
LED燈亮何時滅?何時亮?滅后何時又被明亮的呢?
ID:764088 發表于 2020-6-16 10:13
檢查與定時器相關的驅動時鐘是否符合要求,并查該時鐘在定時器 開關的變化
ID:638390 發表于 2020-6-15 17:49
經過檢測TMOD已經被重新定義為0x01,可是定時器0依舊不工作
ID:773924 發表于 2020-6-15 17:08
你把最后兩行代碼的順序倒過來試一下。即:
flag4=0;
timer0_init();

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片1| 欧美一区二区大片 | 久久天天躁狠狠躁夜夜躁2014 | 欧洲精品久久久久毛片完整版 | 国产成人精品久久 | 中文久久 | 国产精品久久性 | 欧美日韩中文字幕在线 | 国产精品欧美一区二区三区不卡 | www.精品一区| 国产女人与拘做受视频 | 亚洲一级毛片 | 福利影院在线看 | 成人超碰 | 国产精品99久久久久久大便 | 精品国产不卡一区二区三区 | 亚洲一区二区中文字幕在线观看 | 天堂一区二区三区四区 | 亚洲成a人片 | 亚洲不卡视频 | 欧美日韩亚洲国产 | 精品乱码一区二区三四区视频 | 国产成人在线视频免费观看 | 在线看片福利 | 欧美视频精品 | 欧美日韩黄色一级片 | 国产午夜亚洲精品不卡 | 99国产视频 | 日本在线一区二区 | 免费观看日韩av | 婷婷福利视频导航 | 欧美日韩一二三区 | 午夜一区二区三区视频 | 亚洲国产一区二区在线 | 国产高清一区二区 | 日韩精品免费一区二区在线观看 | 亚洲国产精品一区 | 亚洲一区二区三区四区五区午夜 | 久久久久久久成人 | 亚洲精品一区二区三区中文字幕 | 91精品一区二区 |