找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索

C語言這種宏定義怎么理解?

查看數(shù): 2721 | 評(píng)論數(shù): 14 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2021-9-15 11:05

正文摘要:

也摸索了快一年的單片機(jī)了,看書,開發(fā)板上各種練習(xí),可一到實(shí)際應(yīng)用就懵逼了,下面是一段以前工程師寫的實(shí)際項(xiàng)目代碼,完全看不懂呀,, 老手們指點(diǎn)一二,謝謝!

回復(fù)

ID:656213 發(fā)表于 2021-9-16 13:54
好的,謝謝你們的回答!
ID:81196 發(fā)表于 2021-9-16 08:44
首先你得知道,單片機(jī)里邊用的執(zhí)行,其實(shí)是一堆寄存器的執(zhí)行。那么寄存器是怎么交互的呢?只能通過數(shù)據(jù)了,你這里的所有數(shù)據(jù)都是最終賦值給寄存器的,而且寄存器的每一位都有其對(duì)應(yīng)的特殊意義。
ID:731755 發(fā)表于 2021-9-16 00:06
漲知識(shí)了。
ID:950946 發(fā)表于 2021-9-15 23:04
就是給右邊那些數(shù)字啊,公式啊之類的一個(gè)名字,左邊那些字母就是。下次想用那些東西直接寫他們的名字就行,也就是你定義的那些
ID:885138 發(fā)表于 2021-9-15 20:09
是LED7(0)或LED7(1),只是看起來像個(gè)函數(shù),實(shí)質(zhì)還是一句表達(dá)式
ID:885138 發(fā)表于 2021-9-15 20:05
jiahz2019 發(fā)表于 2021-9-15 15:34
#define        LED7(m)        (Dram[0] = Dram[0]&(~(1

調(diào)用時(shí)為LED(0)或LED(1);對(duì)應(yīng)m=0或m=1
編譯時(shí)把后面定義式中的m代換為0或1
ID:814525 發(fā)表于 2021-9-15 15:49
主要是把這些單一離散的輸入輸出信號(hào)組合到一個(gè)寄存器中統(tǒng)一處理。比如5個(gè)按鍵經(jīng)過按鍵處理程式得到的結(jié)果是11110或00001,表示KEY1被按下;11101或00010表示KEY2被按下。一個(gè)位代表一個(gè)按鍵,依次類推。
ID:656213 發(fā)表于 2021-9-15 15:34
#define        LED7(m)        (Dram[0] = Dram[0]&(~(1<<6))|(m<<6))   這句有人講解一下嗎?  里面的數(shù)據(jù)定義如下: uint8 Dram[2];     m 怎么理解,程序里面也沒有關(guān)于它的定義
ID:656213 發(fā)表于 2021-9-15 15:30
tzs233 發(fā)表于 2021-9-15 15:23
程序都是從0開始編號(hào)計(jì)數(shù)的 ,然后我們實(shí)際生活中大多從1開始計(jì)數(shù)。  
比如 (1

好的,謝謝,有點(diǎn)理解了。
ID:509408 發(fā)表于 2021-9-15 15:23
程序都是從0開始編號(hào)計(jì)數(shù)的 ,然后我們實(shí)際生活中大多從1開始計(jì)數(shù)。  
比如 (1<<4) 變成10000,如果每一位(0或1)代表一個(gè)按鍵狀態(tài)(閉合或斷開),不就可以表示5個(gè)按鍵狀態(tài)了嗎?
這樣很通俗易懂了吧
ID:656213 發(fā)表于 2021-9-15 15:12
ByanouQ 發(fā)表于 2021-9-15 14:33
#define    key5       (1

(1<<4) 就是1左移4位,》這句能理解,    意思是key5那個(gè)引腳設(shè)置為高電平》這句理解不了,咋就成了高電平, 難道是 1左移4位=10000,  “1” 剛好對(duì)應(yīng)第5位 ?
ID:480510 發(fā)表于 2021-9-15 14:33
#define    key5       (1<<4) 就是1左移4位,意思是key5那個(gè)引腳設(shè)置為高電平
ID:656213 發(fā)表于 2021-9-15 14:17
devcang 發(fā)表于 2021-9-15 13:18
實(shí)際代碼中,用前面的,直接用后邊的替換上去。

你講的替換我肯定是知道的,我不明白的是后面的那些表達(dá)式。
ID:277550 發(fā)表于 2021-9-15 13:18
實(shí)際代碼中,用前面的,直接用后邊的替換上去。

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表