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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求51單片機智能小車使用中斷函數調速對延時影響的解決辦法

[復制鏈接]
跳轉到指定樓層
樓主
ID:1064841 發表于 2023-3-25 10:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人在用中斷函數調速時,發現在主函數中延時函數不準確,或者程序一直卡在延時函數里不出來,求大佬解決辦法
具體代碼如下:
#include <REG51.h>
#include "OLED.h"
#include "bmp.h"
#include "TIMER0.H"
#include "Delay.H"
//#include "Motor.H"
#include "Direction.h"
//#include "bi_zhang.h"
#include "xunji.h"
#include "chaoshengbo.h"

sbit EN1=P3^0;
sbit EN2=P3^1;
sbit EN3=P3^2;
sbit EN4=P3^3;

unsigned int pwml,pwmr,t;//左右占空比,比較值
unsigned char Distance__;
//unsigned int n=0,i,j,k;//這些變量不清楚,先留著
unsigned int m;

void delay__(unsigned int ms)
{
    TMOD &= 0xF0; // 設置定時器0為模式1,16位定時器/計數器
    TMOD |= 0x01;
    TH0 = (65536 - 1000) / 256; // 設置定時器初值
    TL0 = (65536 - 1000) % 256;
    TR0 = 1; // 啟動定時器
    while (ms--)
    {
        while (!TF0); // 等待定時器溢出
        TF0 = 0; // 清除定時器溢出標志
        TH0 = (65536 - 1000) / 256; // 重新設置定時器初值
        TL0 = (65536 - 1000) % 256;
    }
    TR0 = 0; // 停止定時器
}

void main()
{      
        u8 t=' ';
        OLED_Init();//初始化OLED
        OLED_ColorTurn(0);//0正常顯示,1 反色顯示
        OLED_DisplayTurn(0);//0正常顯示 1 屏幕翻轉顯示
        Timer0_Init();

        while(1)
        {
                xun_ji();
                Distance__=GetDistance();
                OLED_ShowString(1,1,"Distance: ",16);
                OLED_ShowNum(75,1,Distance__,2,16);
               
                if(Distance__<20.8)
                {
//                        all_stop();
                       
//                        m=1;
                        pwml=pwmr=10;
                        delay__(1000);
                        xun_ji();
                }
                else if(Distance__>21)
                {
//                        m=0;
                        xun_ji();
                }
                OLED_ShowNum(12,40,m,1,16);
        }
      
}




//定時器中斷函數
void Timer0_Routine() interrupt 1
{
        TL0 = (65536-100)%256;                //設置定時初始值
        TH0 = (65536-100)/256;                //設置定時初始值
        t++;//周期計時加
        //左pwm
        if(t<pwml)
        {
                EN1 = 1;
                EN2 = 1;
        }
        else
        {
                EN1 = 0;
                EN2 = 0;
        }
        //右pwm
        if(t<pwmr)
        {
                EN3 = 1;
                EN4 = 1;
        }
        else
        {
                EN3 = 0;
                EN4 = 0;
        }

        if(t>=100){t = 0;}

}


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

使用道具 舉報

沙發
ID:857072 發表于 2023-3-25 11:17 來自手機 | 只看該作者
請拋棄include "Delay.H。延時函數只在教學演示程序里使用,以方便理解。正式工程里是不用的。
回復

使用道具 舉報

板凳
ID:857072 發表于 2023-3-25 11:19 來自手機 | 只看該作者
不過比中斷調用耗時差不多的比如延時個幾微秒還是可以用的。
回復

使用道具 舉報

地板
ID:1064841 發表于 2023-3-25 11:22 | 只看該作者
a185980800 發表于 2023-3-25 11:17
請拋棄include "Delay.H。延時函數只在教學演示程序里使用,以方便理解。正式工程里是不用的。

那請問,我要實現小車在循跡的過程中停止5秒,再循跡,這個過程中停止5秒該怎么實現
回復

使用道具 舉報

5#
ID:1064841 發表于 2023-3-25 11:27 | 只看該作者
a185980800 發表于 2023-3-25 11:19
不過比中斷調用耗時差不多的比如延時個幾微秒還是可以用的。

可是我需要實現延時很長的功能,這顆咋辦
回復

使用道具 舉報

6#
ID:844772 發表于 2023-3-25 15:29 來自手機 | 只看該作者
不要用同一個中斷,另外中斷里寫的太多,時間太短
回復

使用道具 舉報

7#
ID:1064841 發表于 2023-3-25 16:26 | 只看該作者
glinfei 發表于 2023-3-25 15:29
不要用同一個中斷,另外中斷里寫的太多,時間太短

可是我只用了一個中斷函數,只不過延時函數是和中斷用的同一個定時器
回復

使用道具 舉報

8#
ID:1034262 發表于 2023-3-25 22:50 | 只看該作者
項目程序,不要使用軟件延時,不要使用查詢的延時,切記!現在的MCU速度都會很快,延時1ms就浪費掉超過1萬條指令的時間了。
回復

使用道具 舉報

9#
ID:1064841 發表于 2023-3-26 09:53 | 只看該作者
coody_sz 發表于 2023-3-25 22:50
項目程序,不要使用軟件延時,不要使用查詢的延時,切記!現在的MCU速度都會很快,延時1ms就浪費掉超過1萬 ...

那請問大佬我該怎么樣才能實現延時5秒的功能了
回復

使用道具 舉報

10#
ID:434018 發表于 2023-3-26 11:12 | 只看該作者
使用簡單的狀態機,就可以解決.
回復

使用道具 舉報

11#
ID:844772 發表于 2023-3-27 09:12 | 只看該作者
WangMC 發表于 2023-3-25 16:26
可是我只用了一個中斷函數,只不過延時函數是和中斷用的同一個定時器

1.你看一下,定時器里面設置是100,外部又設置成1000,定時器溢出是按100來的,所以延時就不準;
2.不知道你延時干啥用,但在小車控制里不宜用延時等待。
3.定時器按100配置,又要干那么多事,很容易卡死的。
建議就用定時器提供一個時間計數器,所有任務按這個計數器工作。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰在线免费公开 | 国产精品178页 | 成人在线免费网站 | 国产99视频精品免费视频7 | 午夜免费看视频 | a级片网站 | 高清免费在线 | 丝袜久久| 欧美 日韩 国产 成人 | 亚洲精品影院 | 自拍偷拍第一页 | 日韩aⅴ在线观看 | 国产精品精品视频一区二区三区 | 国产一区二区免费 | 午夜精品久久久久久久99黑人 | 日韩色在线 | 毛片一级片 | 国产三级一区二区三区 | 日日操av | 亚洲欧洲一区二区 | 国产区在线看 | 99久久婷婷国产精品综合 | 国产高清免费视频 | 国产精品高清在线 | 国产高清视频在线 | 日韩三级 | 视频一区在线 | 久久中文字幕av | 精品久久久久久亚洲综合网站 | www.日本精品 | 91日韩 | 欧美午夜影院 | 久久这里只有 | 手机看片1 | 二区亚洲| 日韩一区二区在线播放 | 九九热免费视频在线观看 | 涩涩视频在线播放 | www.久久久久久久久 | 免费一区二区三区 | 91色在线 |