欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
狀態機程序在51單片機上正常運行
[打印本頁]
作者:
diyue
時間:
2023-12-30 17:05
標題:
狀態機程序在51單片機上正常運行
對于51單片機由于其內部資源的限制,運行一個打操作系統是比較困難的,但是我們可以使用一個狀態機來運行不同的任務,這樣可以大減輕51單片機內部資源的負擔,也實現了多任務的架構。
單片機源程序如下:
#include <reg52.h>
#include <stdio.h>
#include <stdlib.h>
#include "delay.h"
#include "timer0.h"
#include "usart1.h"
#define Task_Size 8
unsigned char Event_List[8];
unsigned char Task_PQH;
void (*Task_List[Task_Size])(void);
void Task0()
{
Uart1_SendString("Task0\r\n");
delay_ms(250);
}
void Task1()
{
Uart1_SendString("Task1\r\n");
delay_ms(250);
}
void Task2()
{
Uart1_SendString("Task2\r\n");
delay_ms(250);
}
void Task3()
{
Uart1_SendString("Task3\r\n");
delay_ms(250);
}
void Task4()
{
Uart1_SendString("Task4\r\n");
delay_ms(250);
}
void Task5()
{
Uart1_SendString("Task5\r\n");
delay_ms(250);
}
void Task6()
{
Uart1_SendString("Task6\r\n");
delay_ms(250);
}
void Task7() //空閑任務
{
Uart1_SendString("Task7\r\n");
delay_ms(250);
}
void main()
{
Uart1_Init();//串口初始化
Init_timer0(); //定時器0初始化
Task_List[0]=Task0; //初步化任務表
Task_List[1]=Task1;
Task_List[2]=Task2;
Task_List[3]=Task3;
Task_List[4]=Task4;
Task_List[5]=Task5;
Task_List[6]=Task6;
Task_List[7]=Task7;
for(Task_PQH=0;Task_PQH<Task_Size;Task_PQH++) //初始化事件
{
Event_List[Task_PQH]=0;
}
while(1)
{
for(Task_PQH=0;Task_PQH<Task_Size-1;Task_PQH++) //查找最高優先級任務
{
if(Event_List[Task_PQH]>0) //有事件發生
break;
}
Task_List[Task_PQH](); //執行任務
}
}
復制代碼
原理圖: 無
仿真: 無
代碼:
狀態機.7z
(19.26 KB, 下載次數: 33)
2023-12-30 23:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
4758866
時間:
2024-1-17 22:45
感謝樓主分享,認真學習一下
作者:
joyb
時間:
2024-1-18 08:21
狀態機,一般指有限狀態機(英語:finite-state machine,縮寫:FSM)又稱有限狀態自動機(英語:finite-state automaton,縮寫:FSA),是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學計算模型。有限狀態機是在自動機理論和計算理論中研究的一類自動機。
有限狀態機歸屬于自動機理論范疇,從自動機理論的領域分層圖可以看出,越往外層,概念越復雜。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1