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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

為什么舵機(jī)使用單片機(jī)定時器1的時候定時器0進(jìn)不去了?定時器方式和初始化有問題碼?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:515826 發(fā)表于 2022-4-2 12:51 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
70黑幣
void main()
{

        unsigned int time,distance;        

        TH=30;                  //上電初始值30
        EX0=0;                  //關(guān)閉外部中斷
        IT0=1;                  //下降沿有效
        EA=1;                  //打開中斷系統(tǒng)總開關(guān)
        TMOD=0x11;          //定時器工作方式
        TH0=0x3c;
        TL0=0xb0;          //定時器0賦初值50ms
        TH1=0xff;
        TL1=0x9c;
        ET0=1;                  //T0中斷允許
        ET1=1;
        TR0=1;                  //開啟T0計時
        servorTime=0;
        Trig=0;
        Echo=0;
        while(1)          //進(jìn)入while循環(huán)
        {

                TH1=0;
                TL1=0;
                Trig=1;
                Delay_us(5);
                Trig=0;
                while(Echo==0);
                TR1=1;
                while(Echo);
                TR1=0;
                time=(TH1)*256+(TL1);
                distance=(int)(time*0.017);                           //計算路程 單位為cm
                TH1=0xff;
                TL1=0x9c;

                read_wendu();                         //讀溫度
                keyscan();                                 //按鍵掃描
                if(key_num==0)                         //判斷狀態(tài),是否是設(shè)置狀態(tài)
                        LcdDisplay(tvalue,0);         //顯示正常值
                else
                        LcdDisplay(TH*100,1);         //顯示設(shè)置值
                if(distance<30)                                 //傳感器有信號
                {         
                        relay_w=0;
                        if(distance<20)                                        //如果距離小于20c
                        {
                                if(distance<10)                                        //如果距離小于10c
                                {
                                        control=15;   //使舵機(jī)向正擺動
                                    servorTime=0;
                                    TR1=1;
                                    delay(15);
                                        //delay(200);
                                    TR1=0;
                                //        delay(20);
                                }
                                else
                                {
                                        control=12;   //使舵機(jī)向正擺動
                                    servorTime=0;
                                    TR1=1;
                                    delay(15);
                                        //delay(200);
                                    TR1=0;
                                //        delay(20);
                                }
                        }
                        else
                        {
                                  control=9;   //使舵機(jī)向正擺動
                            servorTime=0;
                            TR1=1;
                            delay(15);
                                //delay(200);
                            TR1=0;
                                //delay(20);
                        }

                //        relay_w=0;                         //加熱繼電器打開
                        flag_js_bj=1;                 //計時報警標(biāo)志位置1
                        flag_js_gb=0;                 //計時關(guān)閉標(biāo)志位清零
                        EX0=1;                                 //打開外部中斷

                }
                else                                         //沒有信號
                {

                        control=5;   //使舵機(jī)向右擺動
                    servorTime=0;
                    TR1=1;
                    delay(10);
                    TR1=0;
                        flag_js_gb=1;                 //計時關(guān)閉標(biāo)志位值1
                        flag_js_bj=0;                 //計時報警標(biāo)志位清零
                }
}

void T0_time() interrupt 1          //T0函數(shù)
{
        TH0=0x3c;
        TL0=0xb0;                                  //重新賦初值
        m++;                                          //每50ms加一次
        if(m>=20)                                  //加到20次就是1秒
        {
                m=0;                                  //清零
                if(flag_js_gb==1)          //計時關(guān)閉標(biāo)志位
                {
                        sec_gb++;                  //關(guān)閉計時秒變量++
                        if(sec_gb>=3)          //加到3秒
                        {
                                sec_gb=0;          //清零
                                sec_bj=0;
                                flag_js_bj=0; //清零
                                flag_bj=0;
                                relay_w=1;
                                relay=1;          //關(guān)閉兩個繼電器
                                EX0=0;                  //關(guān)閉外部中斷
                        }        
                }
                if(flag_js_bj==1)          //計時報警標(biāo)志位
                {
                        sec_bj++;                  //報警計時秒變量++
                        if(sec_bj>=15)          //加到60秒
                        {
                                sec_bj=0;
                                sec_gb=0;          //兩個變量都清零
                                flag_js_gb=0; //關(guān)閉標(biāo)志位清零
                                flag_bj=1;          //啟動報警標(biāo)志位
                        }
                }
                if(flag_bj==1)                  //報警標(biāo)志位為1
                {
                        BUZZ=!BUZZ;                  //蜂鳴器取反閃爍報警
                }
                else                                  //沒有進(jìn)入報警
                {
                        BUZZ=1;                          //關(guān)閉蜂鳴器
                }
        }
}
void T1_int(void) interrupt 3{   //產(chǎn)生舵機(jī)所需要的脈沖
  TH1=0xff;
  TL1=0x9c;
  servorTime++;
  if(servorTime<=control)
   servorControl=1;
  else
   servorControl=0;
   if(servorTime>=200)
   servorTime=0;
}



最佳答案

查看完整內(nèi)容

因?yàn)槟愕某绦蚴且粋縫合怪,所以不斷出現(xiàn)沖突 你要先理清各個硬件的運(yùn)行原理,才去結(jié)合他們
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:161164 發(fā)表于 2022-4-2 12:51 來自手機(jī) | 只看該作者
liguohan 發(fā)表于 2022-4-2 19:04
所以使用舵機(jī)的時候其它的都會關(guān)閉是嗎?
那這個沒辦法改了把

因?yàn)槟愕某绦蚴且粋縫合怪,所以不斷出現(xiàn)沖突
你要先理清各個硬件的運(yùn)行原理,才去結(jié)合他們
回復(fù)

使用道具 舉報

板凳
ID:121859 發(fā)表于 2022-4-2 13:29 | 只看該作者
同級中斷中,當(dāng)一個中斷響應(yīng)后,另一個中斷是不能被響應(yīng)的。除非其級別更高。
回復(fù)

使用道具 舉報

地板
ID:515826 發(fā)表于 2022-4-2 13:58 | 只看該作者
zhxiufan 發(fā)表于 2022-4-2 13:29
同級中斷中,當(dāng)一個中斷響應(yīng)后,另一個中斷是不能被響應(yīng)的。除非其級別更高。

T0的優(yōu)先級不是比T1更高碼?
回復(fù)

使用道具 舉報

5#
ID:515826 發(fā)表于 2022-4-2 14:00 | 只看該作者
還有一個外部中斷是霍爾傳感器的 我沒寫進(jìn)去
回復(fù)

使用道具 舉報

6#
ID:161164 發(fā)表于 2022-4-2 14:58 | 只看該作者
你如何知道定時器0沒冇進(jìn)中斷?
回復(fù)

使用道具 舉報

7#
ID:515826 發(fā)表于 2022-4-2 15:01 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 14:58
你如何知道定時器0沒冇進(jìn)中斷?

定時器0的中斷里面有延時三秒關(guān)閉繼電器不能用
但是蜂鳴器可以報警
不知道是怎么回事
回復(fù)

使用道具 舉報

8#
ID:515826 發(fā)表于 2022-4-2 15:14 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 14:58
你如何知道定時器0沒冇進(jìn)中斷?

定時器0的中斷可以用但是為什么在if(distance<30)里面控制繼電器就不行了呢? 關(guān)閉的時候延時三秒是不行的 只要把控制舵機(jī)的定時器1的中斷屏蔽就可以了 弄不懂啊 在if里面打開的時候繼電器是咔嚓一下的
回復(fù)

使用道具 舉報

9#
ID:161164 發(fā)表于 2022-4-2 15:33 來自手機(jī) | 只看該作者
liguohan 發(fā)表于 2022-4-2 15:14
定時器0的中斷可以用但是為什么在if(distance

但你的代碼一藝只在使用定時器1,沒用過定時器0
回復(fù)

使用道具 舉報

10#
ID:515826 發(fā)表于 2022-4-2 15:39 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 15:33
但你的代碼一藝只在使用定時器1,沒用過定時器0

有啊 我在進(jìn)while循環(huán)之前就打開了TR0=1
回復(fù)

使用道具 舉報

11#
ID:161164 發(fā)表于 2022-4-2 17:09 來自手機(jī) | 只看該作者
liguohan 發(fā)表于 2022-4-2 15:39
有啊 我在進(jìn)while循環(huán)之前就打開了TR0=1

看漏了
回復(fù)

使用道具 舉報

12#
ID:515826 發(fā)表于 2022-4-2 17:12 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 15:33
但你的代碼一藝只在使用定時器1,沒用過定時器0

這兩個中斷在關(guān)閉的時候都要時候怎么辦?
回復(fù)

使用道具 舉報

13#
ID:1015233 發(fā)表于 2022-4-2 17:34 | 只看該作者
個人建議把中斷里面內(nèi)容少寫一些,把一些寫到主函數(shù)里面,中斷里面內(nèi)容太多會導(dǎo)致中斷出現(xiàn)一些奇怪的問題。定時器初始化沒問題,定時方式少了個TCON
回復(fù)

使用道具 舉報

14#
ID:161164 發(fā)表于 2022-4-2 18:31 來自手機(jī) | 只看該作者
liguohan 發(fā)表于 2022-4-2 17:12
這兩個中斷在關(guān)閉的時候都要時候怎么辦?

舵機(jī)的PWM訊號是連續(xù)不可停止的
回復(fù)

使用道具 舉報

15#
ID:515826 發(fā)表于 2022-4-2 19:04 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 18:31
舵機(jī)的PWM訊號是連續(xù)不可停止的

所以使用舵機(jī)的時候其它的都會關(guān)閉是嗎?
那這個沒辦法改了把
回復(fù)

使用道具 舉報

16#
ID:515826 發(fā)表于 2022-4-2 19:09 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 18:31
舵機(jī)的PWM訊號是連續(xù)不可停止的

使用舵機(jī)的時候,繼電器會自動關(guān)閉是為什么?我有一次不知道怎么弄得 用舵機(jī)的時候繼電器沒關(guān)
回復(fù)

使用道具 舉報

17#
ID:515826 發(fā)表于 2022-4-3 10:40 | 只看該作者
lkc8210 發(fā)表于 2022-4-2 19:11
因?yàn)槟愕某绦蚴且粋縫合怪,所以不斷出現(xiàn)沖突
你要先理清各個硬件的運(yùn)行原理,才去結(jié)合他們

會不會是舵機(jī)工作時電壓不夠?并一個電容可以嗎?還有辦法解決嗎?大佬求教
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区国产 | 国产一区二区三区 | 欧美精品啪啪 | 欧美日韩精品免费观看 | 黄色精品 | 免费成年网站 | 欧美日韩亚洲一区 | 国产特级毛片aaaaaa喷潮 | 国产精品日韩一区二区 | 精精国产xxxx视频在线野外 | 久久久www成人免费无遮挡大片 | 天天插天天操 | 国产精品av久久久久久久久久 | 国产精品久久久久aaaa九色 | 精品视频在线观看 | 午夜小视频在线观看 | 欧洲毛片| 国产欧美一区二区三区免费 | 欧美成人一区二免费视频软件 | 欧美国产激情二区三区 | 成人午夜精品一区二区三区 | 婷婷二区 | 精品一区二区三区四区外站 | 亚洲一区二区三区四区五区午夜 | 毛片入口| 天堂网色 | 91欧美精品| 成人h电影在线观看 | av在线免费观看网站 | 91亚洲一区 | 亚洲欧美在线一区 | 日韩和的一区二区 | 日本黄色短片 | 国产黄色在线观看 | 亚洲国产成人精品女人久久久 | 亚洲一区二区中文字幕 | www.国产日本 | 不卡一区二区在线观看 | 久久精品黄色 | 国产成人精品一区二区三区网站观看 | 午夜精品网站 |