熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-10-11 22:49
正文摘要:在寄存器設(shè)置的時(shí)候,我們會(huì)發(fā)現(xiàn)很多時(shí)候,二進(jìn)制比16進(jìn)制更直觀,更方便。 在匯編中,我們只需要 01001100B 這種方式就能夠直接輸入二進(jìn)制, 但是在Keil C 中,是不能直接輸入二進(jìn)制的,所以,這個(gè)時(shí)候,頭文件 ... |
我也貢獻(xiàn)一個(gè) /*************二進(jìn)制輸入宏****************************/ #ifndef _LongToBin_ #define _LongToBin_ #define LongToBin(n) \ ( \ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define bin(n) LongToBin(0x##n##l) #define BIN(n) bin(n) #define B(n) bin(n) #define b(n) bin(n) #define B0000_0000 0x00 #define B0000_0001 0x01 #define B0000_0010 0x02 #define B0000_0011 0x03 #define B0000_0100 0x04 #define B0000_0101 0x05 #define B0000_0110 0x06 #define B0000_0111 0x07 #define B0000_1000 0x08 #define B0000_1001 0x09 #define B0000_1010 0x0A #define B0000_1011 0x0B #define B0000_1100 0x0C #define B0000_1101 0x0D #define B0000_1110 0x0E #define B0000_1111 0x0F #define B0001_0000 0x10 #define B0001_0001 0x11 #define B0001_0010 0x12 #define B0001_0011 0x13 #define B0001_0100 0x14 #define B0001_0101 0x15 #define B0001_0110 0x16 #define B0001_0111 0x17 #define B0001_1000 0x18 #define B0001_1001 0x19 #define B0001_1010 0x1A #define B0001_1011 0x1B #define B0001_1100 0x1C #define B0001_1101 0x1D #define B0001_1110 0x1E #define B0001_1111 0x1F #define B0010_0000 0x20 #define B0010_0001 0x21 #define B0010_0010 0x22 #define B0010_0011 0x23 #define B0010_0100 0x24 #define B0010_0101 0x25 #define B0010_0110 0x26 #define B0010_0111 0x27 #define B0010_1000 0x28 #define B0010_1001 0x29 #define B0010_1010 0x2A #define B0010_1011 0x2B #define B0010_1100 0x2C #define B0010_1101 0x2D #define B0010_1110 0x2E #define B0010_1111 0x2F #define B0011_0000 0x30 #define B0011_0001 0x31 #define B0011_0010 0x32 #define B0011_0011 0x33 #define B0011_0100 0x34 #define B0011_0101 0x35 #define B0011_0110 0x36 #define B0011_0111 0x37 #define B0011_1000 0x38 #define B0011_1001 0x39 #define B0011_1010 0x3A #define B0011_1011 0x3B #define B0011_1100 0x3C #define B0011_1101 0x3D #define B0011_1110 0x3E #define B0011_1111 0x3F #define B0100_0000 0x40 #define B0100_0001 0x41 #define B0100_0010 0x42 #define B0100_0011 0x43 #define B0100_0100 0x44 #define B0100_0101 0x45 #define B0100_0110 0x46 #define B0100_0111 0x47 #define B0100_1000 0x48 #define B0100_1001 0x49 #define B0100_1010 0x4A #define B0100_1011 0x4B #define B0100_1100 0x4C #define B0100_1101 0x4D #define B0100_1110 0x4E #define B0100_1111 0x4F #define B0101_0000 0x50 #define B0101_0001 0x51 #define B0101_0010 0x52 #define B0101_0011 0x53 #define B0101_0100 0x54 #define B0101_0101 0x55 #define B0101_0110 0x56 #define B0101_0111 0x57 #define B0101_1000 0x58 #define B0101_1001 0x59 #define B0101_1010 0x5A #define B0101_1011 0x5B #define B0101_1100 0x5C #define B0101_1101 0x5D #define B0101_1110 0x5E #define B0101_1111 0x5F #define B0110_0000 0x60 #define B0110_0001 0x61 #define B0110_0010 0x62 #define B0110_0011 0x63 #define B0110_0100 0x64 #define B0110_0101 0x65 #define B0110_0110 0x66 #define B0110_0111 0x67 #define B0110_1000 0x68 #define B0110_1001 0x69 #define B0110_1010 0x6A #define B0110_1011 0x6B #define B0110_1100 0x6C #define B0110_1101 0x6D #define B0110_1110 0x6E #define B0110_1111 0x6F #define B0111_0000 0x70 #define B0111_0001 0x71 #define B0111_0010 0x72 #define B0111_0011 0x73 #define B0111_0100 0x74 #define B0111_0101 0x75 #define B0111_0110 0x76 #define B0111_0111 0x77 #define B0111_1000 0x78 #define B0111_1001 0x79 #define B0111_1010 0x7A #define B0111_1011 0x7B #define B0111_1100 0x7C #define B0111_1101 0x7D #define B0111_1110 0x7E #define B0111_1111 0x7F #define B1000_0000 0x80 #define B1000_0001 0x81 #define B1000_0010 0x82 #define B1000_0011 0x83 #define B1000_0100 0x84 #define B1000_0101 0x85 #define B1000_0110 0x86 #define B1000_0111 0x87 #define B1000_1000 0x88 #define B1000_1001 0x89 #define B1000_1010 0x8A #define B1000_1011 0x8B #define B1000_1100 0x8C #define B1000_1101 0x8D #define B1000_1110 0x8E #define B1000_1111 0x8F #define B1001_0000 0x90 #define B1001_0001 0x91 #define B1001_0010 0x92 #define B1001_0011 0x93 #define B1001_0100 0x94 #define B1001_0101 0x95 #define B1001_0110 0x96 #define B1001_0111 0x97 #define B1001_1000 0x98 #define B1001_1001 0x99 #define B1001_1010 0x9A #define B1001_1011 0x9B #define B1001_1100 0x9C #define B1001_1101 0x9D #define B1001_1110 0x9E #define B1001_1111 0x9F #define B1010_0000 0xA0 #define B1010_0001 0xA1 #define B1010_0010 0xA2 #define B1010_0011 0xA3 #define B1010_0100 0xA4 #define B1010_0101 0xA5 #define B1010_0110 0xA6 #define B1010_0111 0xA7 #define B1010_1000 0xA8 #define B1010_1001 0xA9 #define B1010_1010 0xAA #define B1010_1011 0xAB #define B1010_1100 0xAC #define B1010_1101 0xAD #define B1010_1110 0xAE #define B1010_1111 0xAF #define B1011_0000 0xB0 #define B1011_0001 0xB1 #define B1011_0010 0xB2 #define B1011_0011 0xB3 #define B1011_0100 0xB4 #define B1011_0101 0xB5 #define B1011_0110 0xB6 #define B1011_0111 0xB7 #define B1011_1000 0xB8 #define B1011_1001 0xB9 #define B1011_1010 0xBA #define B1011_1011 0xBB #define B1011_1100 0xBC #define B1011_1101 0xBD #define B1011_1110 0xBE #define B1011_1111 0xBF #define B1100_0000 0xC0 #define B1100_0001 0xC1 #define B1100_0010 0xC2 #define B1100_0011 0xC3 #define B1100_0100 0xC4 #define B1100_0101 0xC5 #define B1100_0110 0xC6 #define B1100_0111 0xC7 #define B1100_1000 0xC8 #define B1100_1001 0xC9 #define B1100_1010 0xCA #define B1100_1011 0xCB #define B1100_1100 0xCC #define B1100_1101 0xCD #define B1100_1110 0xCE #define B1100_1111 0xCF #define B1101_0000 0xD0 #define B1101_0001 0xD1 #define B1101_0010 0xD2 #define B1101_0011 0xD3 #define B1101_0100 0xD4 #define B1101_0101 0xD5 #define B1101_0110 0xD6 #define B1101_0111 0xD7 #define B1101_1000 0xD8 #define B1101_1001 0xD9 #define B1101_1010 0xDA #define B1101_1011 0xDB #define B1101_1100 0xDC #define B1101_1101 0xDD #define B1101_1110 0xDE #define B1101_1111 0xDF #define B1110_0000 0xE0 #define B1110_0001 0xE1 #define B1110_0010 0xE2 #define B1110_0011 0xE3 #define B1110_0100 0xE4 #define B1110_0101 0xE5 #define B1110_0110 0xE6 #define B1110_0111 0xE7 #define B1110_1000 0xE8 #define B1110_1001 0xE9 #define B1110_1010 0xEA #define B1110_1011 0xEB #define B1110_1100 0xEC #define B1110_1101 0xED #define B1110_1110 0xEE #define B1110_1111 0xEF #define B1111_0000 0xF0 #define B1111_0001 0xF1 #define B1111_0010 0xF2 #define B1111_0011 0xF3 #define B1111_0100 0xF4 #define B1111_0101 0xF5 #define B1111_0110 0xF6 #define B1111_0111 0xF7 #define B1111_1000 0xF8 #define B1111_1001 0xF9 #define B1111_1010 0xFA #define B1111_1011 0xFB #define B1111_1100 0xFC #define B1111_1101 0xFD #define B1111_1110 0xFE #define B1111_1111 0xFF #endif |
dzbj 發(fā)表于 2022-1-16 01:13 你要是 懂 PC,就更不會(huì)說(shuō)這話了,這個(gè)就是用PC自動(dòng)生成 #define XXX YYY 的,和你說(shuō)的風(fēng)馬牛不相及,是省人手指頭打字的. |
188610329 發(fā)表于 2022-1-5 11:11 KEIL C里不是不能實(shí)現(xiàn),那是因?yàn)镵EILC里保留了十進(jìn)制的原因,因?yàn)槭M(jìn)制里也有1010這樣的數(shù)字,好果我發(fā)給你一串10101010這樣的數(shù)字,又不加以說(shuō)明,你說(shuō)我是想表達(dá)十進(jìn)制的10101010還是二進(jìn)制的10101010呢!所以為了人類(lèi)方便的十進(jìn)制數(shù),所以就不能用計(jì)算機(jī)的二進(jìn)制表示了 |
這個(gè)厲害啊,確實(shí)方便不少 |
思路不錯(cuò) |
dzbj 發(fā)表于 2022-1-16 01:13 說(shuō)白了,這個(gè)代碼是用來(lái)生成樓主的頭文件,找個(gè)c編譯器編譯生成exe文件運(yùn)行就可以獲得和樓主提供的類(lèi)似文件,好處在于只要更改printf("#define B%d%d%d%d_%d%d%d%d 0x%.2x\n就"可以隨意修改成自己喜歡的前綴 |
Similarv 發(fā)表于 2022-1-14 17:49 確實(shí)不錯(cuò) |
不是可以直接輸出 0b開(kāi)頭的二進(jìn)制嗎? |
這有啥好吵的啊. 大家各取所需即可,這個(gè)H文件我用著挺順手的,那就上來(lái)說(shuō)聲"謝謝". 有不同的意見(jiàn),完全可以另開(kāi)一帖,"在KEIL_C中輸入二進(jìn)制的另一種方法",這不就行了,何必在這里杠樓主呢. 別人辛辛苦苦折騰個(gè)好東西出來(lái)給大家使用,直接鼓勵(lì)即可,完全沒(méi)有必要非得挑刺,不是么 ![]() ![]() |
Similarv 發(fā)表于 2022-1-14 17:49 感謝回復(fù) 你的方法是我不理解也不會(huì)的方法 應(yīng)該是這方面懂太少了 沒(méi)法理解為什么要生成txt再生成.H 我只會(huì)keil里直接干 我說(shuō)喜歡樓主的方法是因?yàn)槲覐腜C轉(zhuǎn)到MCU 發(fā)現(xiàn)這東西好窮困啊 資源太緊張了 你知道我第一次看手冊(cè)說(shuō)這東西只有128b的內(nèi)存還不能全用有多吃驚 然后256以上的居然就開(kāi)始影響運(yùn)算速度 我當(dāng)時(shí)就想 這廝是窮瘋了么 樓主的東西看過(guò)不少 比較喜歡那種風(fēng)格 簡(jiǎn)單粗暴直接 比如define一下什么都不占用 所以喜歡 你的方法應(yīng)該是比較高級(jí) 但我不懂所以有點(diǎn)不識(shí)貨吧 |
188610329 發(fā)表于 2021-10-12 16:14 發(fā)這個(gè)子程序的目的,是讓大家能自由定制自己的二進(jìn)制頭文件。 比如我自己比較喜歡 B0010_0011 這樣的格式, 有些人又是喜歡 b_0010_0011 這樣的格式, 用這個(gè)子程序的話,想怎么定制自己喜歡的就隨意了。 另,再回復(fù)7樓,這個(gè)子程序不是給MCU用的,是給你生成.txt(后期改.h)文件的時(shí)候用的…… |
對(duì)于你那么多關(guān)于本人的臆測(cè),看來(lái)我還是解釋下,這可能會(huì)讓你很不爽。 我認(rèn)為移位操作是更好的方法。對(duì)于你說(shuō)我通過(guò)“多看幫助”獲得的所謂技巧,或你提供的技巧,我以前沒(méi)用過(guò),以后也不打算使用,所以我才沒(méi)有立刻解決或請(qǐng)人解決。 討論不是誰(shuí)強(qiáng)詞奪理誰(shuí)就有道理,還是盡量圍繞問(wèn)題吧。 |
188610329 發(fā)表于 2022-1-13 23:06 一條“岔路”,花費(fèi)很少的時(shí)間就能驗(yàn)證的“岔路”,能讓你這么重視,太令人驚詫了。 為啥keil的幫助文件這部分為啥不適用keil C,這我也確實(shí)不知道,有時(shí)間我會(huì)琢磨下。你真要“擦屁股”,也應(yīng)該是解決這點(diǎn)。 你雖然說(shuō)了那么多,但我還是認(rèn)為“多看幫助”是解決問(wèn)題的好方法。 |
datouyuan 發(fā)表于 2022-1-12 10:45 你說(shuō)沒(méi)那么強(qiáng)的攻擊性,你說(shuō)圍繞問(wèn)題。 我發(fā)帖是為了提供一個(gè)解決問(wèn)題的方案。 你回帖是提供了一條“岔路”, 這是解決問(wèn)題?還是制造問(wèn)題? 然后,由于你的回帖,誤導(dǎo)了某些人,讓某些人更加的茫然了,不知道你基于什么原因,始終沒(méi)有回復(fù),你可以看看日期,然后,我替你“擦屁股”了,你就跳出來(lái)了,你也可以看看日期。我是真的看不出來(lái),你是起積極作用,還是消極作用。 并且,你還是多看“多看幫助”得來(lái)的岔路, 看了幫助,不去理解,然后就以為掌握了某個(gè)技巧,就進(jìn)行發(fā)表,這是對(duì)學(xué)術(shù)的正確態(tài)度么?這是解決問(wèn)題的態(tài)度么? 然后,你還在覺(jué)得這是好辦法? |
本帖最后由 datouyuan 于 2022-1-12 10:50 編輯 我不會(huì)和你一樣有那么強(qiáng)的攻擊性。 問(wèn)題討論就圍繞問(wèn)題,不應(yīng)牽扯這么多問(wèn)題以外的。 盡管我這次我查找?guī)椭鷽](méi)解決問(wèn)題,但我還是認(rèn)為“多看幫助”是解決問(wèn)題的好方法。 |
datouyuan 發(fā)表于 2022-1-6 12:00 也許吧, 我想的多了,所以覺(jué)得可能有人想要輸入二進(jìn)制,發(fā)個(gè)頭文件,幫助一些有需要的人。 你“想的不多”,所以有時(shí)間找?guī)椭缓、沒(méi)時(shí)間做實(shí)驗(yàn),就立刻發(fā)圖嘲諷。 9樓根據(jù)你的“想的不多” 的引導(dǎo)浪費(fèi)自己的時(shí)間,測(cè)試后無(wú)法實(shí)現(xiàn),失望而歸,你“想得不多”所以對(duì)人家沒(méi)有任何表示, 而因?yàn)椤跋氲牟欢唷眳s還不忘再過(guò)來(lái)補(bǔ)充一句,覺(jué)得P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便 你要是覺(jué)得,P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便, 一開(kāi)始就可以如此表示,而不用去發(fā)表所謂的“多看幫助”的言論,在開(kāi)頭,我也表明了,幫到有需要的黑友,即便,你發(fā)圖嘲諷,表示你是一個(gè)“想的少”但是看幫助特別多(即便沒(méi)有看懂)的人,我也沒(méi)打算回應(yīng)你,直到有人被誤導(dǎo)后,浪費(fèi)了時(shí)間精力,我才為此表示一下,不要浪費(fèi)時(shí)間了。也許用詞有些犀利,但是,你沒(méi)時(shí)間回應(yīng)因?yàn)槟愣装桌速M(fèi)時(shí)間的黑友,卻有時(shí)間表示我“想多了”,呵呵…… 不由感嘆,“想的少”真幸福。 |
188610329 發(fā)表于 2022-1-5 11:11 你想多了。 這圖是確實(shí)是我看了你的帖子后在keil幫助文件中找到并截圖的。 在keil C中不能使用,我剛驗(yàn)證了,確實(shí)不行。 另外我覺(jué)得, P1 = B_0100_1100; P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便 |
188610329 發(fā)表于 2022-1-5 11:11 能人們都不那么弄 連耍小聰明的也沒(méi)那么弄 多半是沒(méi)戲 果然是沒(méi)戲 |
dzbj 發(fā)表于 2021-12-23 14:08 弄不出來(lái)的…… 他那個(gè)截圖,源自另外一個(gè)求助貼,求助者就是看到這么一段說(shuō)明然后貼圖問(wèn)為什么KEIL里面不能實(shí)現(xiàn)。其實(shí)也有人在那個(gè)帖子回復(fù),告知什么叫KEIL C,但是那個(gè)帖子的樓主好像完全不懂什么叫KEIL C。 所以,看到8樓的說(shuō)法,我懷疑就是那個(gè)求助者的小號(hào),因?yàn)樗矇焊鶝](méi)明白,什么叫 KEIL C。 多的就不說(shuō)了,就說(shuō)16進(jìn)制, 0x 啥啥的,你用表格里的 H 后綴代替 0x 輸入 1234H 你看看編譯能通過(guò)么?就明白了。 最近,像8樓這種,自己整不明白,不愿意虛心提問(wèn),總想著 噴別人一頓,然后人家耐心給他解釋的時(shí)候偷師,然后還不用說(shuō)謝謝的人越來(lái)越多。所以我壓根就沒(méi)打算回他。 |
datouyuan 發(fā)表于 2021-12-23 13:51 沒(méi)成功 咋弄 有范例嗎 ![]() |
![]() 誰(shuí)說(shuō)keil不能輸入二進(jìn)制常數(shù)?keil的幫助文件你有空多看看。 |
我個(gè)人更偏向樓主的方法 板凳樓大神的方法要吃片子的計(jì)算量吧 |
188610329 發(fā)表于 2021-10-12 16:14 哈哈哈哈哈哈 |
Similarv 發(fā)表于 2021-10-12 08:06 ………… 不知道咋說(shuō)……,感覺(jué)就像是我看人垂釣累的慌,就給人發(fā)個(gè)網(wǎng)撈魚(yú), 然后……,你看到了,干脆發(fā)了一個(gè)漁網(wǎng)編制圖解。 |
Similarv 發(fā)表于 2021-10-12 08:06 ![]() |
這玩意還是讓電腦自動(dòng)生成更快捷有效。
|
真不錯(cuò),實(shí)用 |
Powered by 單片機(jī)教程網(wǎng)