新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)c語(yǔ)言中菜單系統(tǒng)源碼分析

單片機(jī)c語(yǔ)言中菜單系統(tǒng)源碼分析

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
最近在學(xué)習(xí)單片機(jī)菜單系統(tǒng)時(shí),發(fā)現(xiàn)有這么一些代碼,定義了4個(gè)按鍵,確認(rèn)鍵,返回鍵,上鍵,下鍵,先貼出來(lái)在vc里邊建的,先定義一個(gè)結(jié)構(gòu)體KbdTabStruct,在用結(jié)構(gòu)體定義一個(gè)const型的數(shù)組KBD[],那么數(shù)組的每一個(gè)成員對(duì)應(yīng)的原本結(jié)構(gòu)體的數(shù)則是它的初始化值,并且這個(gè)值初始化后就成立,以后不再改變。比如說(shuō)KBD[0].KeyCurrentIndex所對(duì)應(yīng)的則是數(shù)組table中成員0 的值,這些值就是它的初始化值,相當(dāng)于KBD[0].KeyCurrentIndex=0,但如果這樣寫(xiě)N層的菜單,如此定義肯定麻煩,所以用這樣的數(shù)組實(shí)現(xiàn)。

int main()
{
typedef struct
{
u8 KeyCurrentIndex;//當(dāng)前狀態(tài)索引號(hào)
u8 KeyEnterState;//按下【enter】鍵時(shí)轉(zhuǎn)向的索引號(hào)
u8 KeyCancelState;//按下【cancel】鍵時(shí)轉(zhuǎn)向的索引號(hào)
u8 KeyUpState;//按下【up】鍵時(shí)轉(zhuǎn)向的索引號(hào)
u8 KeyDownState;//按下【down】鍵時(shí)轉(zhuǎn)向的索引號(hào)
void (*CurrentOperate)(); //當(dāng)前狀態(tài)下執(zhí)行的功能操作
}KbdTabStruct;

本文引用地址:http://butianyuan.cn/article/201611/322301.htm

const KbdTabStruct KBD[]=
{
{0,1,2,3,4,(*main)},
{6,7,8,9,10,(*main)},
{0,1,2,3,4,,(*main)},
{0,1,2,3,4,(*main)},
};
printf("%d",KBD[0].KeyCurrentIndex);
printf("%d",KBD[0].KeyEnterState);
printf("%d",KBD[0].KeyCancelState);
printf("%d",KBD[0].KeyUpState);
printf("%d",KBD[0].KeyDownState);
printf("%d",KBD[1].KeyCurrentIndex);
printf("%d",KBD[1].KeyEnterState);
printf("%d",KBD[1].KeyCancelState);
printf("%d",KBD[1].KeyUpState);
printf("%d",KBD[1].KeyDownState);
printf("%5s",KBD[0].CurrentOperate);

}



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉