衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機工控事件

汽車電子技術 ? 來源:工控碼農 ? 作者:工控碼農 ? 2023-02-07 09:40 ? 次閱讀

單片機工控通常有延時,電機狀態,傳感器狀態等通用耗時操作,業務程序查詢這些狀態,就會產生大量的冗余代碼,不簡潔.使用事件則是把這些通用操作丟給系統去處理,系統操作完成后,則運行業務程序的下一個Step.

** 延時不使用事件**

switch(step)
{
  case STEP1:
    baseTime = systemTime;
    step= STEP2;
    break;
   case STEP2:
   if(systemTime>(baseTime+500))
   {
     ..
   }
   break;
}

延時使用事件:

switch(step)
{
  case STEP1:
  WaitTime(500,STEP2);  //向系統請求延時500ms,讓出程序運行權限,500ms后運行到STEP2
  break;
  
  case STEP2:
  break;
}

不使用事件查詢傳感器狀態

switch(step)
{
  case STEP1:
  if(IsSensorOn(X01))
  {
    StopSM(SM101);
  }
  break;
}

使用事件的查詢傳感器狀態

switch(step)
{
  case STEP1:
  //向系統請求查詢傳感器X101,傳感器感應后跳到STEP2
  WaitSensorOn(X101,STEP2);
  break;
}

不使用事件的電機運動

switch(step)
{
  case STEP1:
  RunSM(SM101,2000);  //SM101運行2000步
  step = STEP2;
  break;
  case STEP2:
  if(IsSMStop(SM101))
  {

  }
}

使用事件的電機運動

switch(step)
{
  case STEP1:
  RunSM(SM101,2000);
  //請求系統查詢電機狀態
  WaitSM(SM101,STEP2);
  break;
}

沒有使用事件的找傳感器的電機運動

switch(step)
{
  case STEP1:
  RunSM(SM101,2000);
  step = STEP2;
  break;
  case STEP2:
  if(IsSensorOn(X101))
  {
    StopSM(SM101);
    return 1;
  }
  else if(IsSMStop(SM101))
  {
    return -1;
  }
  
  }

使用事件的找傳感器電機運動

switch(step)
{
  case STEP1:
  //電機運動2000步,請求傳感器狀態 電機事件
  FindSensor(SM101,2000,X101,STEP2,STEP_ERROR);
  break;
  case STEP2:
  SetActionOk();
  break;

  case STEP_ERROR:
  SetError("SM101電機丟步-SM101/X101");
  break;
}
從上面的案例可以看出使用事件的程序幾乎沒有if else 程序更加口語化.事件實現的基本原理為:
  1. 把事件的參數(事件類型,延時時間,電機編號,電機步數,傳感器編號)壓入任務棧,下一步驟也就是PC指針也壓入任務棧。
  2. 讓出業務程序的運行權限到系統的通用事件運行,實現方式運行的函數指針指向事件處理的函數
  3. 事件處理程序查詢相應的狀態變化
  4. 運行權限重新切回業務程序,運行函數指針指向業務函數指針,Step出棧.
//切換到事件處理函數
CurrentAction->ActionCallback = CurrentAction->EventCallback;


//系統循環
while(CurrentAction!=NULL)
 {
    CurrentAction->ActionCallback();
    DelFinishAction();
    CurrentAction = CurrentAction->NextAction;
 }  
 
 //切回業務App
 ThisAction->nStep = nStep;
 ThisAction->ActionCallback = ThisAction->AppCallBack
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2553

    文章

    51402

    瀏覽量

    756615
  • 單片機
    +關注

    關注

    6043

    文章

    44621

    瀏覽量

    638575
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69055
  • step
    +關注

    關注

    0

    文章

    42

    瀏覽量

    20526
收藏 人收藏

    評論

    相關推薦

    專注單片機工控編程開發#步控電子#步驟編程#單片機 #單片機開發

    單片機
    東莞市步控電子科技有限公司
    發布于 :2022年08月03日 22:55:10

    單片機工控

    ,指示燈,計數器,撥碼開關)如果用PLC成本太高,即使時最入門的也不是太合算,而且還需要自備24V開關電源,對配線也是個難題,就有這個一個想法,可對單片機了解甚少,還望對如上所列給予指點1.能否實現2.開發這個通用的班子費用和周期3.有意向合作開發的mail至:leon51717@163.com
    發表于 03-18 14:31

    超齊全單片機工具集

    超齊全單片機工具集單片機工
    發表于 11-03 16:49 ?155次下載

    超級單片機工具軟件

    電子發燒友網站提供《超級單片機工具軟件.exe》資料免費下載
    發表于 07-13 17:49 ?26次下載

    8051單片機工作原理介紹

    8051單片機工作原理 8051單片機工作原理
    發表于 10-28 11:19 ?43次下載

    單片機初學者邁向單片機工程師

    單片機初學者邁向單片機工程師從單片機初學者邁向單片機工程師
    發表于 01-15 16:33 ?45次下載

    單片機工具大全

    收藏的單片機工具,分享出來
    發表于 02-15 23:04 ?20次下載

    單片機工控常用IC—sn74lvc07a資料下載.pdf

    單片機工控常用IC
    發表于 05-25 15:46 ?6次下載

    實用單片機工具應用程序合集免費下載

    本文檔的主要內容詳細介紹的是超級單片機工具軟件應用程序合集免費下載包括了:51波特率計算應用程序,超級單片機工具軟件,單片機小精靈。
    發表于 04-28 16:24 ?33次下載
    實用<b class='flag-5'>單片機工</b>具應用程序合集免費下載

    MSP430單片機工程配置driverlib庫

    MSP430單片機工程配置driverlib庫
    發表于 11-19 16:36 ?22次下載
    MSP430<b class='flag-5'>單片機工</b>程配置driverlib庫

    單片機工控應用

    電機狀態 傳感器狀態 時間狀態都是系統管理查詢的,極大的提高了代碼的復用,因為一個項目一般都有幾十個動作動作函數.
    的頭像 發表于 02-07 09:34 ?679次閱讀

    單片機工控實現任務執行管理

    前面寫了switch case做任務調度的應用,這邊寫一下如何實現.像一般的RTOS一樣都有一個任務控制塊(TCB)列表來管理所有的任務,所以這里也需要一個結構體來管理動作任務,這里叫做ACB吧.
    的頭像 發表于 02-07 09:37 ?913次閱讀

    單片機工控的電機減速算法是什么?

    單片機給步進驅動一個脈沖,電機轉動一個步距角,單片機給脈沖越快,步進電機單位時間內,轉動的角度也就越大.即脈沖頻率正比于電機轉速.
    的頭像 發表于 02-07 09:43 ?1684次閱讀
    <b class='flag-5'>單片機工控</b>的電機減速算法是什么?

    單片機工控的工程分離是什么?

    單片機電路板一般專有的,如汽車的車燈控制電路板和EPS控制的電路板是完全不同的。專有的電路板,軟件就比較難通用,軟件編程比較強調的是單片機系統。
    的頭像 發表于 02-07 09:47 ?1000次閱讀
    <b class='flag-5'>單片機工控</b>的工程分離是什么?

    51單片機工程模板創建方法

    本教程將向大家介紹如何使用KEIL C51 軟件以及如何創建51 單片機工程。通過本教程的學習,讓大家創建屬于自己的51 單片機工程模板,為后面學習51 單片機編程做好鋪墊。
    發表于 07-15 15:27 ?4991次閱讀
    51<b class='flag-5'>單片機工</b>程模板創建方法
    百家乐赢多少该止赢| 开心8百家乐现金网| 百家乐官网优惠现金| 威尼斯人娱乐城极好| 布加迪百家乐官网的玩法技巧和规则 | 威尼斯人娱乐场官网是多少| 百家乐赢家公式| 百家乐直杀| 尊龙娱乐开户| 24山方向上| 工布江达县| 百家乐桌码合| 澳门百家乐官网游戏说明| 威尼斯人娱乐城可靠吗| 百家乐游戏真钱游戏| 百家乐官网网站新全讯网| 威尼斯人娱乐备用网址| 下载百家乐官网的玩法技巧和规则 | 实战百家乐的玩法技巧和规则| 香港百家乐赌场娱乐网规则 | 百家乐官网玩法秘诀| 大庆冠通棋牌下载| 百家乐科学打| 百家乐双面数字筹码| 诺贝尔百家乐官网的玩法技巧和规则| 澳门百家乐官网娱乐城打不开| 百家乐五湖四海娱乐场开户注册 | 百家乐博彩软件| 大都会百家乐官网的玩法技巧和规则 | 玩百家乐官网五湖四海娱乐城| 玉屏| 娱乐城简介| 大发888客户端下载| 保单百家乐游戏机厂家| 百家乐捡揽方法| 百家乐官网庄闲排列| 新思维百家乐官网投注法| 利记现金| 大发888城官方下载| sp全讯网新2| 千亿百家乐的玩法技巧和规则|