一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機工控事件

汽車電子技術(shù) ? 來源:工控碼農(nóng) ? 作者:工控碼農(nóng) ? 2023-02-07 09:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

** 延時不使用事件**

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

延時使用事件:

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

不使用事件查詢傳感器狀態(tài)

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

使用事件的查詢傳感器狀態(tài)

switch(step)
{
  case STEP1:
  //向系統(tǒng)請求查詢傳感器X101,傳感器感應(yīng)后跳到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);
  //請求系統(tǒng)查詢電機狀態(tài)
  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步,請求傳感器狀態(tài) 電機事件
  FindSensor(SM101,2000,X101,STEP2,STEP_ERROR);
  break;
  case STEP2:
  SetActionOk();
  break;

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


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

    關(guān)注

    2564

    文章

    52788

    瀏覽量

    765305
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44960

    瀏覽量

    648773
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4893

    瀏覽量

    70443
  • step
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    20801
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    單片機工控

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

    超齊全單片機工具集

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

    超級單片機工具軟件

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

    8051單片機工作原理介紹

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

    單片機初學(xué)者邁向單片機工程師

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

    單片機工具大全

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

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

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

    實用單片機工具應(yīng)用程序合集免費下載

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

    MSP430單片機工程配置driverlib庫

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

    單片機工控應(yīng)用

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

    單片機工控實現(xiàn)任務(wù)執(zhí)行管理

    前面寫了switch case做任務(wù)調(diào)度的應(yīng)用,這邊寫一下如何實現(xiàn).像一般的RTOS一樣都有一個任務(wù)控制塊(TCB)列表來管理所有的任務(wù),所以這里也需要一個結(jié)構(gòu)體來管理動作任務(wù),這里叫做ACB吧.
    的頭像 發(fā)表于 02-07 09:37 ?1075次閱讀

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

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

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

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

    51單片機工程模板創(chuàng)建方法

    本教程將向大家介紹如何使用KEIL C51 軟件以及如何創(chuàng)建51 單片機工程。通過本教程的學(xué)習(xí),讓大家創(chuàng)建屬于自己的51 單片機工程模板,為后面學(xué)習(xí)51 單片機編程做好鋪墊。
    發(fā)表于 07-15 15:27 ?5519次閱讀
    51<b class='flag-5'>單片機工</b>程模板創(chuàng)建方法