亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機多級菜單編程的設計思路與理解 [打印本頁]

作者: liu100m    時間: 2018-11-2 09:10
標題: 單片機多級菜單編程的設計思路與理解
多級菜單編程的設計思路:

預先定義一個包含 6 個結元素的結構體5 個字符型和 1 個指針 1 個字符量存放當前界面的索引號;
2 個字符量存放按下down(向下)鍵時需要跳轉到的索引號; 3 個字符量存放按下“up(向上)鍵時需要跳轉到的索引號;
4 個字符量存放按下enter(進入)鍵時需要跳轉的索引號; 5 個字符量存放按下esc(退出)鍵時需要跳轉的索引號;
6 個變量函數指針變量,存放當前索引號下需要執行的函數的入口地址。 將所有需要顯示的界面其所對應的執行函數和按鍵索引號以結構體的形式列表存儲。具體實現如下:
typedef struct
{
uchar index;              // 1 ,存放當前界面的索引號
uchar down_index; // 2 ,按下down(向下)鍵時需要跳轉到的索引號 uchar up_index;              // 3 ,按下“up(向上)鍵時需要跳轉到的索引號; uchar enter_index;                // 4 ,按下enter(進入)鍵時需要跳轉的索引號; uchar esc_index;              // 5 個當前索號下需要執行 的函數入口地址。 void (*operate)();                            //
6 個函數指針
}Key_index_struct;

單分 3 級, 10 ,則
Key_index_struct const Key_tab[10]=
//              |-----------> Index
//              |              |down(下)
//              |              |              | up上)
//              |              |              |              | Enter(確認)
//              |              |              |              |              |Esc (退出)--->功能函數
//              |              |              |              |              |
{ 0, 1, 2, 3, 4,(*DispMenuTop)},// 待機畫面


{ {0, 0, 0, 1, 0,(*main_menu)},
{1, 2, 3, 4, 0,(*sub_menu1)},
{2, 3, 1, 5, 0,(*sub_menu2)},
{3, 1, 2, 7, 0,(*sub_menu3)},
{4, 4, 4, 4, 1,(*sub_menu1_1)},
{5, 6, 6, 5, 2, (*sub_menu2_1)},
{6, 5, 5, 5, 2,(*sub_menu2_2)},
{7, 8, 9, 7, 3,(*sub_menu3_1)},
{8, 9, 7, 8, 3,(*sub_menu3_2)},
{9, 7, 8, 9, 3,(*sub_menu3_3)}, };



/****************************************************
索引號在結構圖中,讀者可以標上




/********************************************************


void Lcd_display(void)
{
switch(Key_status)
{
case enter: Key_fun=Key_tab[Key_fun].enter_index;
break;
case down: Key_fun=Key_tab[Key_fun].down_index;
break;
case up: Key_fun=Key_tab[Key_fun].up_index;
break;
case esc: Key_fun=Key_tab[Key_fun].esc_index;
break;
default: return;
break;
} Key_fun_Pt=Key_tab[Key_fun].operate;
(*Key_fun_Pt)();//執行當按鍵的操作
}
當微處理掃描鍵盤測到有按按下時,據按鍵按的類型,回在當前 所對應的跳轉索引號,并執行相應的函數。

這段程序隱含一狀態機-----通過不同的鍵改變狀態。



結構圖與這一段代碼可理解為狀態機。{1,
2, 3, 4, 0,(*sub_menu1)},這些字代表 不同階段不同狀態的索引號。 表示態之可理機,按鍵的鍵
跳轉的下一狀態。
系統啟動初始化是顯示 Main_menu 界面當按鍵檢測有返回值(即有按鍵按下)時,根據按下的按 鍵所代表的操作跳轉到指定的狀態。

例如:按下 Up 或者是 down 時,只是在 Main_menu 界面高亮顯示不同區域; 按下 Enter 則要根據原來按下的 Up down 鍵來選需要跳轉的方向

假設在按下 Enter 之前僅按下一次 down key_v 的值為 2key_v 值默認為 1默認選中子菜 單的第一項,就跳轉為 Sub_menu2 界面。

注:也可以自己任定。key_v 的值,第一級(0-10,第二級 100-150三級 1000-1100
方便寫程序。

按下 Esc 鍵時為從子菜單返回到上一級菜單,如果已經是主菜單了則返回的還是主菜單。 狀態機只有發生一次有效的按鍵狀態才會發生一次跳轉而且僅當 Enter Esc 鍵按下時
切換界面

最終根據鍵盤返回的鍵值選擇下一狀態。

結語 多級菜單的實現方式具有很強的實用性。程序的本質是數組,與函數指針的組合應用。
在芯片中只有二進制碼,沒有什么結構圖,指針,狀態圖。 同一程序可畫結構圖來理解, 同一程序可畫狀態圖來理解。



以上的Word格式文檔51黑下載地址:
單片機多級菜單編程的理解.zip (504.08 KB, 下載次數: 565)



作者: 經緯    時間: 2018-11-13 20:25
謝謝分享
作者: wangsheng1997    時間: 2018-12-18 20:28
很不錯。
作者: wangsheng1997    時間: 2018-12-18 20:30
可以下載嗎!
作者: wangpan04321    時間: 2019-5-29 10:13
感謝分享
作者: catking3119    時間: 2019-6-23 21:24
感謝樓主分享,但是附件是此篇文章PDF版本,讓我有點失望啊
作者: hilam    時間: 2019-10-4 10:24
資料不錯,但假如我的子菜單名稱是不固定的呢,例如一級菜單第二項是設置,第二級菜單是電機PID參數,要求在菜單中實時顯示PID變化 參數,這個框架應該怎樣修改?
作者: ygflsa    時間: 2019-11-23 15:58
看不懂這個怎么執行的
{ 0, 1, 2, 3, 4,(*DispMenuTop)},// 待機畫面

作者: ygflsa    時間: 2019-12-1 13:07
下載什么是沒有.還口我10黑幣
作者: jifengjianwu    時間: 2020-1-15 09:46
謝謝樓主分享
作者: jifengjianwu    時間: 2020-5-4 19:36
謝謝分享
作者: 布萊克先生    時間: 2020-9-7 15:24
感謝樓主的解答
作者: 紫色的云    時間: 2020-12-12 10:56
謝謝樓主的分享,最近正在學習多級菜單的編寫
作者: 西點鐘靈毓秀    時間: 2021-10-22 15:09
謝謝樓主的分享,最近正在學習多級菜單的編寫
作者: n_n    時間: 2021-12-6 16:04
謝謝樓主的分享,最近正在學習多級菜單的編寫
作者: 993347045    時間: 2022-3-15 10:25
感謝分享,共同進步
作者: 飛揚1023    時間: 2022-10-17 15:40
感謝分享,共同進步
作者: fangbolin    時間: 2023-7-19 16:21
很好的思路




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1