找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1901|回復: 3
打印 上一主題 下一主題
收起左側(cè)

在外部中斷停止定時器后,后面單片機代碼就沒有反應了不運行了,什么問題

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:475031 發(fā)表于 2022-12-16 21:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
在外部中斷停止定時器后,后面代碼就沒有反應了。不運行了,什么問題?
能停止,但在中斷代碼里再也不能啟動定時器了

單片機源程序如下:
void Int4()        interrupt 16                //外部中
{

        TR0=0;//停止定時器
              MS1=0;
              MS2=1;
Delayms(100);
        TR0=1;//啟動
              Dir=0;//正轉(zhuǎn)
        Delayms(1000);
           TR0=0;//停止

}

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

使用道具 舉報

沙發(fā)
ID:475031 發(fā)表于 2022-12-16 21:29 | 只看該作者
下面主程序,我按一下按鈕,可以運行有動作的。上面是外部中斷和定時器不能在一起使用嗎?


void main()
{
        Timer0Init();//        初始化定時器中斷0
                Int4Init();  //        初始化外部中斷4

        EN=0;
        MS1=1;
        MS2=0;
        MS3=0;

                               
       
        while(1)
        {
  if(KEY1==0)  //判斷是否按下鍵盤
        {
                Delayms(10); //延時,軟件去干擾
                if(KEY1==0)   //確認按鍵按下
                {

                       

                               
                                MS1=1;
              MS2=0;
   
               
Dir=1;//反轉(zhuǎn)
Delayms(3000);
TR0=0;//停止
                               

                       

                }
                while(KEY1==0);//按鍵鎖定,每按一次count只加1.
        }

       
       
       

       
       
        }
}
回復

使用道具 舉報

板凳
ID:277550 發(fā)表于 2022-12-17 10:12 | 只看該作者
不要在中斷中,做這種耗時的活  Delayms(1000);
回復

使用道具 舉報

地板
ID:475031 發(fā)表于 2022-12-17 10:45 | 只看該作者
devcang 發(fā)表于 2022-12-17 10:12
不要在中斷中,做這種耗時的活  Delayms(1000);

謝謝回復,。我自己找到辦法了,。解決完美
在中斷里加上  這兩句就可以后面執(zhí)行了,

        PT0=1;//把定時器中斷優(yōu)先級別提最高
        PX0=0;//把外部中斷優(yōu)先級別降最低






然后再在主程序main
        while(1)循環(huán)里。把中斷優(yōu)先級別改回就完美了運行,沒有差錯了





回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表