只需一步,快速開始
熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
使用道具 舉報
dyx811 發(fā)表于 2024-1-17 22:23 總共6個按鍵位變量,我把它合在一起了,成了一個字節(jié),只是想讓它在后面的判斷和調(diào)用方便。沒想到還有點(diǎn)難 ...
wulin 發(fā)表于 2024-1-18 08:26 假設(shè)6個按鍵分別接P2.3、2.4,P1.1~1.4 #define KeyFlag P21&0x0f
yzw846562238 發(fā)表于 2024-1-18 08:57 typedef struct { unsigned int key1 : 1;
ydatou 發(fā)表于 2024-1-18 08:40 你這段代碼可優(yōu)化。節(jié)省一個全局變量,代碼也可簡短些。
yzw846562238 發(fā)表于 2024-1-18 09:19 return SsMAIN_h_KeyValue.KeyValue;
Hephaestus 發(fā)表于 2024-1-18 01:43 你這代碼轉(zhuǎn)換成機(jī)器碼,執(zhí)行效率跟我在地板發(fā)的代碼差了十萬八千里,好好學(xué)習(xí)吧。
18680365301 發(fā)表于 2024-1-18 15:34 void Key_Scan() //按鍵檢測 1ms調(diào)用 { u8 i;
dyx811 發(fā)表于 2024-1-18 18:02 一定好好學(xué)習(xí)。主要是高級點(diǎn)的單片機(jī)還沒有咋個會呢。你發(fā)的代碼是帶指針的嗎?一時半會還理解不透。 ...
188610329 發(fā)表于 2024-1-18 23:05 sbit Temp1 = ACC^0; sbit Temp2 = ACC^1; sbit Temp3 = ACC^2;
dyx811 發(fā)表于 2024-1-18 17:22 利用了靜態(tài)變量可以不用每次都初始化da,這樣子不能做多鍵同時按下的準(zhǔn)確判斷。
ydatou 發(fā)表于 2024-1-19 14:29 請仔細(xì)分析下我給你的優(yōu)化代碼。 1:因?yàn)橛羞@變量的初始換,才省了你代碼中的一堆else。 2:臨時變量和 ...
dyx811 發(fā)表于 2024-1-19 15:33 謝謝指點(diǎn),突然恍然大悟了!!我居然把把&運(yùn)算算錯了。。。光想著怎么復(fù)原該Bit位了。 這樣子確實(shí)精簡了 ...
查看全部評分
ydatou 發(fā)表于 2024-1-19 16:36 再看了下樓主代碼,當(dāng)KeyFlag 不為1時,要返回上一次的key值,這確實(shí)需要一個全局變量,我給的優(yōu)化代碼沒 ...
dyx811 發(fā)表于 2024-1-20 21:22 bdta太好用了!不光完全實(shí)現(xiàn)了一堆位變量的整合,經(jīng)過實(shí)驗(yàn),不光實(shí)現(xiàn)了既定要求,程序上還節(jié)省了大量空間 ...
TTQ001 發(fā)表于 2024-1-21 09:06 一個字節(jié)由 8 位組成。 字節(jié)的按位操作廣泛用于數(shù)字變量,例如開關(guān)狀態(tài)、標(biāo)志和數(shù)字輸出。
Hephaestus 發(fā)表于 2024-1-20 21:38 我早就告訴你了你不看。
本版積分規(guī)則 發(fā)表回復(fù) 回帖后跳轉(zhuǎn)到最后一頁
手機(jī)版|小黑屋|51黑電子論壇 | 管理員QQ:125739409;技術(shù)交流QQ群281945664
Powered by 單片機(jī)教程網(wǎng)