熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-9-15 11:05
正文摘要:也摸索了快一年的單片機(jī)了,看書,開發(fā)板上各種練習(xí),可一到實(shí)際應(yīng)用就懵逼了,下面是一段以前工程師寫的實(shí)際項(xiàng)目代碼,完全看不懂呀,, 老手們指點(diǎn)一二,謝謝! |
好的,謝謝你們的回答! |
首先你得知道,單片機(jī)里邊用的執(zhí)行,其實(shí)是一堆寄存器的執(zhí)行。那么寄存器是怎么交互的呢?只能通過數(shù)據(jù)了,你這里的所有數(shù)據(jù)都是最終賦值給寄存器的,而且寄存器的每一位都有其對(duì)應(yīng)的特殊意義。 |
漲知識(shí)了。 |
就是給右邊那些數(shù)字啊,公式啊之類的一個(gè)名字,左邊那些字母就是。下次想用那些東西直接寫他們的名字就行,也就是你定義的那些 |
是LED7(0)或LED7(1),只是看起來像個(gè)函數(shù),實(shí)質(zhì)還是一句表達(dá)式 |
jiahz2019 發(fā)表于 2021-9-15 15:34 調(diào)用時(shí)為LED(0)或LED(1);對(duì)應(yīng)m=0或m=1 編譯時(shí)把后面定義式中的m代換為0或1 |
主要是把這些單一離散的輸入輸出信號(hào)組合到一個(gè)寄存器中統(tǒng)一處理。比如5個(gè)按鍵經(jīng)過按鍵處理程式得到的結(jié)果是11110或00001,表示KEY1被按下;11101或00010表示KEY2被按下。一個(gè)位代表一個(gè)按鍵,依次類推。 |
#define LED7(m) (Dram[0] = Dram[0]&(~(1<<6))|(m<<6)) 這句有人講解一下嗎? 里面的數(shù)據(jù)定義如下: uint8 Dram[2]; m 怎么理解,程序里面也沒有關(guān)于它的定義 |
tzs233 發(fā)表于 2021-9-15 15:23 好的,謝謝,有點(diǎn)理解了。 |
程序都是從0開始編號(hào)計(jì)數(shù)的 ,然后我們實(shí)際生活中大多從1開始計(jì)數(shù)。 比如 (1<<4) 變成10000,如果每一位(0或1)代表一個(gè)按鍵狀態(tài)(閉合或斷開),不就可以表示5個(gè)按鍵狀態(tài)了嗎? 這樣很通俗易懂了吧 |
ByanouQ 發(fā)表于 2021-9-15 14:33 (1<<4) 就是1左移4位,》這句能理解, 意思是key5那個(gè)引腳設(shè)置為高電平》這句理解不了,咋就成了高電平, 難道是 1左移4位=10000, “1” 剛好對(duì)應(yīng)第5位 ? |
#define key5 (1<<4) 就是1左移4位,意思是key5那個(gè)引腳設(shè)置為高電平 |
devcang 發(fā)表于 2021-9-15 13:18 你講的替換我肯定是知道的,我不明白的是后面的那些表達(dá)式。 |
實(shí)際代碼中,用前面的,直接用后邊的替換上去。 |
Powered by 單片機(jī)教程網(wǎng)