chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

c語(yǔ)言|簡(jiǎn)單的狀態(tài)機(jī)

玩轉(zhuǎn)單片機(jī) ? 來(lái)源:玩轉(zhuǎn)單片機(jī) ? 2023-06-14 09:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

不管做什么或者實(shí)現(xiàn)什么功能,必定會(huì)有實(shí)現(xiàn)需求的步驟,簡(jiǎn)單理解就是在某個(gè)狀態(tài)下做某事,這就很符合C語(yǔ)言面向過(guò)程的特點(diǎn),個(gè)人認(rèn)為面向?qū)ο笃鋵?shí)是面向過(guò)程的封裝,封裝的好處自然就是符合人的思維,以及便于后續(xù)的修改移植工作。

| 簡(jiǎn)單的狀態(tài)機(jī)

相信讀者們剛?cè)腴T(mén)學(xué)習(xí)單片機(jī)的時(shí)候,應(yīng)該比較常使用標(biāo)志位來(lái)觸發(fā)任務(wù)運(yùn)行,這就是簡(jiǎn)單的狀態(tài)機(jī)。

//主函數(shù)
intmain()
{
intflag=0;
while(1)
{
if(flag==0)
{
task_A();
}
elseif(flag==1)
{
task_B();
}
elseif(flag==2)
{
task_C();
}
......
}
}

往往判斷語(yǔ)句太多不利于閱讀,那就需要對(duì)上面的代碼進(jìn)行優(yōu)化:

//主函數(shù)
intmain()
{
intflag=0;
while(1)
{
switch(flag)
{
case0x00:
task_A();
break;
case0x01:
task_B();
break;
case0x02:
task_C();
break;
......
default:
break;
}
}
}

|封裝狀態(tài)機(jī)

在項(xiàng)目中使用狀態(tài)機(jī)往往需要封裝一下,避免全局變量標(biāo)志到處飛就不好修改和維護(hù)項(xiàng)目,最好的方法就是高內(nèi)聚低耦合。

voidtest(void)
{
staticstate;
if(state==0)
{
if(!task_A())
{
state=1;
}
}
elseif(state==1)
{
if(!task_B())
{
state=2;
}
}
elseif(state==2)
{
if(!task_C())
{
state=0;
}
}
}

intmain()
{
while(1)
{
test();
}
}

|附件

簡(jiǎn)單寫(xiě)個(gè)小demo,加深一下對(duì)狀態(tài)機(jī)的理解,這些狀態(tài)都是面向有限的狀態(tài)而言。

#include"stdio.h"
#include"stdint.h"

typedefstruct
{
uint8_tflag;
}task_struct;

//觸發(fā)任務(wù)
voidtask_open(task_struct*task)
{
if(!task->flag)
{
task->flag=!task->flag;
}
}

//關(guān)閉任務(wù)
voidtask_close(task_struct*task)
{
if(task->flag)
{
task->flag=!task->flag;
}
}

//任務(wù)初始化
voidtask_init(void)
{
/*初始化*/
//printf("testinit
");
}

//任務(wù)處理
voidtask_handle(void)
{
printf("testhandle
");
}

//輪訓(xùn)任務(wù)
voidtask_A(task_struct*task,uint8_ttype)
{
if(!task->flag)
{
task_init();
}
else
{
if(!type)
{
/*單次執(zhí)行*/
task_handle();
/*關(guān)閉任務(wù)*/
task_close(task);
}
else
{
/*循環(huán)執(zhí)行*/
task_handle();
}
}
}

intmain()
{
task_structtaskA;
task_open(&taskA);
while(1)
{
task_A(&taskA,0);
}

}




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44973

    瀏覽量

    650000
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141513
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    493

    瀏覽量

    28218
  • 單封裝
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    5425

原文標(biāo)題:C語(yǔ)言|狀態(tài)機(jī)

文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī),微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    基于C語(yǔ)言狀態(tài)機(jī)實(shí)現(xiàn)方案

    關(guān)于狀態(tài)機(jī),基礎(chǔ)的知識(shí)點(diǎn)可以自行理解。本文主要講解的是一個(gè)有限狀態(tài)機(jī)FSM通用的寫(xiě)法,目的在于更好理解,移植,節(jié)省代碼閱讀與調(diào)試時(shí)間,體現(xiàn)出編程之美。
    發(fā)表于 09-13 09:28 ?1303次閱讀
    基于<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>狀態(tài)機(jī)</b>實(shí)現(xiàn)方案

    c語(yǔ)言狀態(tài)機(jī)資料(轉(zhuǎn))

    c語(yǔ)言狀態(tài)機(jī)資料 親 喜歡的拿去用吧
    發(fā)表于 08-07 14:32

    有限狀態(tài)機(jī)的硬件描述語(yǔ)言設(shè)計(jì)方法

    實(shí)驗(yàn)?zāi)康? 1、 熟悉用硬件描述語(yǔ)言(VHDL)設(shè)計(jì)一般狀態(tài)機(jī)所包含的幾個(gè)基本部分;2、 掌握用硬件描述語(yǔ)言(VHDL)設(shè)計(jì)Moore型和Mealy型有限狀態(tài)機(jī)的方法;3、 了解
    發(fā)表于 09-03 09:48 ?0次下載

    狀態(tài)機(jī)舉例

    狀態(tài)機(jī)舉例 你可以指定狀態(tài)寄存器和狀態(tài)機(jī)狀態(tài)。以下是一個(gè)有四種狀態(tài)的普通狀態(tài)機(jī)。 // Th
    發(fā)表于 03-28 15:18 ?1093次閱讀

    狀態(tài)機(jī)原理及用法

    狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機(jī)概述 如何理解狀態(tài)機(jī)

    本篇文章包括狀態(tài)機(jī)的基本概述以及通過(guò)簡(jiǎn)單的實(shí)例理解狀態(tài)機(jī)
    的頭像 發(fā)表于 01-02 18:03 ?1.1w次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>概述  如何理解<b class='flag-5'>狀態(tài)機(jī)</b>

    狀態(tài)機(jī)如何簡(jiǎn)化PLC程序的編寫(xiě)

    在PLC程序的編寫(xiě)過(guò)程中,可以使用狀態(tài)機(jī)的控制思路,將一些復(fù)雜的控制過(guò)程使用狀態(tài)機(jī)的方法處理。這里簡(jiǎn)單給大家介紹一下什么是狀態(tài)機(jī)?如下圖所示,為一個(gè)
    的頭像 發(fā)表于 09-10 14:44 ?4641次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>如何簡(jiǎn)化PLC程序的編寫(xiě)

    淺談狀態(tài)機(jī)的要素、分類

    說(shuō)到單片機(jī)編程,不得不說(shuō)到狀態(tài)機(jī),狀態(tài)機(jī)做為軟件編程的主要架構(gòu)已經(jīng)在各種語(yǔ)言中應(yīng)用,當(dāng)然包括C語(yǔ)言
    的頭像 發(fā)表于 10-20 17:27 ?5444次閱讀

    FPGA:狀態(tài)機(jī)簡(jiǎn)述

    本文目錄 前言 狀態(tài)機(jī)簡(jiǎn)介 狀態(tài)機(jī)分類 Mealy 型狀態(tài)機(jī) Moore 型狀態(tài)機(jī) 狀態(tài)機(jī)描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?8024次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機(jī)</b>簡(jiǎn)述

    簡(jiǎn)單狀態(tài)機(jī)入門(mén)知識(shí)詳解

    今天的文章只是帶大家入門(mén)和了解一下狀態(tài)機(jī),等你真正在工作當(dāng)中有遇到這個(gè)狀態(tài)機(jī)作為開(kāi)發(fā)需要的話,你再去深入研究。
    的頭像 發(fā)表于 12-24 18:06 ?2239次閱讀

    單片機(jī)C語(yǔ)言 -- 基于條件選擇的狀態(tài)機(jī)編程技巧

    單片機(jī)C語(yǔ)言 -- 基于條件選擇的狀態(tài)機(jī)編程技巧
    發(fā)表于 11-23 17:51 ?16次下載
    單片<b class='flag-5'>機(jī)</b><b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b> -- 基于條件選擇的<b class='flag-5'>狀態(tài)機(jī)</b>編程技巧

    狀態(tài)模式(狀態(tài)機(jī))

    以前寫(xiě)狀態(tài)機(jī),比較常用的方式是用 if-else 或 switch-case,高級(jí)的一點(diǎn)是函數(shù)指針列表。最近,看了一文章《c語(yǔ)言設(shè)計(jì)模式–狀態(tài)模式(
    發(fā)表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態(tài)</b>模式(<b class='flag-5'>狀態(tài)機(jī)</b>)

    C語(yǔ)言狀態(tài)機(jī)編程思想

    關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容文章來(lái)源:頭條-嵌入式在左C語(yǔ)言在右鏈接:https://www.toutiao.com/i6843028812112855564/有限狀態(tài)機(jī)概念有限狀態(tài)機(jī)
    發(fā)表于 01-13 13:32 ?15次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言狀態(tài)機(jī)</b>編程思想

    單片機(jī)狀態(tài)機(jī)淺談

    說(shuō)到單片機(jī)編程,不得不說(shuō)到狀態(tài)機(jī),狀態(tài)機(jī)做為軟件編程的主要架構(gòu)已經(jīng)在各種語(yǔ)言中應(yīng)用,當(dāng)然包括C語(yǔ)言
    發(fā)表于 02-10 10:44 ?12次下載
    單片<b class='flag-5'>機(jī)</b>之<b class='flag-5'>狀態(tài)機(jī)</b>淺談

    什么是狀態(tài)機(jī)?狀態(tài)機(jī)的種類與實(shí)現(xiàn)

    狀態(tài)機(jī),又稱有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(jī)(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型。在芯片設(shè)計(jì)中,
    的頭像 發(fā)表于 10-19 10:27 ?1.2w次閱讀