我是靠谱客的博主 贪玩麦片,最近开发中收集的这篇文章主要介绍C语言—Switch编写单片机状态机程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include <stdio.h> 

//利用Switch编写状态机

//警告:单片机中编写程序时,printf("n")应当删去 

/*
* Name      : void Cal_Back_Function_1/2/3/4(void)
* 
* Function  : 不同状态的执行函数 
*
* brief        : 下面是定义了四个不同的执行函数,只需要在其中填入相应的函数操作; 
*             
*
*/ 


void Cal_Back_Function_1(void)
{
     printf("状态1所要执行的操作n");
}

void Cal_Back_Function_2(void)
{
     printf("状态2所要执行的操作n");
}


void Cal_Back_Function_3(void)
{
     printf("状态3所要执行的操作n");
}


void Cal_Back_Function_4(void)
{
     printf("状态4所要执行的操作n");
}

/*
* Name      : Handle_Function(void *p(void))
* 
* Function  : 状态机执行函数 
*
* brief        : 利用回调函数的方式传入参数(含糊) 
*
*
*/ 

void Handle_Function(void (*p)(void) )
{
     (*p)();
}

void main()
{
    int State=1; 
    
    while(1)
    {
        switch(State)
        {
            case 1: 
                 printf("this is 状态1n");
                 Handle_Function(Cal_Back_Function_1);
                 State=2;
                 break;
                 
            case 2: 
                 printf("this is 状态2n");
                 Handle_Function(Cal_Back_Function_2);
                 State=3;
                 break;    
                          
            case 3: 
                 printf("this is 状态3n");
                 Handle_Function(Cal_Back_Function_4);
                 State=4;
                 break;    
                 
            case 4: 
                 printf("this is 状态4n");
                 Handle_Function(Cal_Back_Function_4);
                 State=1;
                 printf("n"); 
                 printf("n");                  
                 break;                    
        }
                   
    }
                
}

用户只需要在相应的回调函数添加相应的功能即可,再使用Handle_Function(),在主函数中调用即可。

特别提醒:单片机中编写程序时,printf("n")应当删去 。

方法二:利用if-else编写状态机

#include <stdio.h>

//利用if-else 编写状态机 ,Cur_State 记录状态; 

int Cur_State;  //状态情况 

int main(void)
{
    
    Cur_State=0;
    
    while(1)
    {
        if( Cur_State==0)
        {
            printf("这是状态一n");
            Cur_State=1;
        }
        else if(Cur_State==1)
        {
            printf("这是状态二n");
            Cur_State=2;
        }
        else if(Cur_State==2)
        {
            printf("这是状态三n");
            Cur_State=3;
        }
        else if(Cur_State=3)
        {
            printf("这是状态四n");    
            Cur_State=0;
        }                
     }
     
    return 0;
    
 } 

运行结果:

后续我会继续补充更加精炼的状态机写法;欢迎大佬指点一二;

最后

以上就是贪玩麦片为你收集整理的C语言—Switch编写单片机状态机程序的全部内容,希望文章能够帮你解决C语言—Switch编写单片机状态机程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部