標(biāo)題: 在Keil_C語言中輸入二進(jìn)制的頭文件 [打印本頁]

作者: 188610329    時(shí)間: 2021-10-11 22:49
標(biāo)題: 在Keil_C語言中輸入二進(jìn)制的頭文件
在寄存器設(shè)置的時(shí)候,我們會(huì)發(fā)現(xiàn)很多時(shí)候,二進(jìn)制比16進(jìn)制更直觀,更方便。

在匯編中,我們只需要 01001100B 這種方式就能夠直接輸入二進(jìn)制,
但是在Keil C 中,是不能直接輸入二進(jìn)制的,所以,這個(gè)時(shí)候,頭文件就能幫上忙了,

主程序中 include 此頭文件后,可以直接用   P1 = B_0100_1100; 這種方式輸入二進(jìn)制,在編寫代碼時(shí),可以提供很多方便。

下載地址如下:
Binary.rar (797 Bytes, 下載次數(shù): 77)

希望可以幫到,有需要的黑友。

另外,如果有需要STC端口模式設(shè)置黑友,可以去這個(gè)帖子下載: http://www.torrancerestoration.com/bbs/dpj-211950-1.html

作者: 6899518    時(shí)間: 2021-10-12 06:16
真不錯(cuò),實(shí)用
作者: Similarv    時(shí)間: 2021-10-12 08:06
這玩意還是讓電腦自動(dòng)生成更快捷有效。
  1. void printBitMap()
  2. {
  3.     int i;
  4.     for(i=0;i<256;i++)
  5.     {
  6.         if(i%16 == 0)
  7.         {
  8.             printf("\n//0x%.2x ~ 0x%.2x \n",i,i+15); //16個(gè)為一組,寫個(gè)表頭
  9.         }
  10.         printf("#define B%d%d%d%d_%d%d%d%d 0x%.2x\n",
  11.                 i/128,i%128/64,i%64/32,i%32/16,i%16/8,i%8/4,i%4/2,i%2,i);
  12.     }
  13. }
復(fù)制代碼


作者: 13205495918    時(shí)間: 2021-10-12 09:43
Similarv 發(fā)表于 2021-10-12 08:06
這玩意還是讓電腦自動(dòng)生成更快捷有效。

你這個(gè)頭像印象深刻,之前拜讀過你的工程化定制程序,對(duì)我啟發(fā)很大。
作者: 188610329    時(shí)間: 2021-10-12 16:14
Similarv 發(fā)表于 2021-10-12 08:06
這玩意還是讓電腦自動(dòng)生成更快捷有效。

…………

不知道咋說……,感覺就像是我看人垂釣累的慌,就給人發(fā)個(gè)網(wǎng)撈魚,
然后……,你看到了,干脆發(fā)了一個(gè)漁網(wǎng)編制圖解。
作者: 嗷嗷叫的老馬    時(shí)間: 2021-12-22 15:00
188610329 發(fā)表于 2021-10-12 16:14
…………

不知道咋說……,感覺就像是我看人垂釣累的慌,就給人發(fā)個(gè)網(wǎng)撈魚,

哈哈哈哈哈哈
作者: dzbj    時(shí)間: 2021-12-23 13:02
我個(gè)人更偏向樓主的方法 板凳樓大神的方法要吃片子的計(jì)算量吧
作者: datouyuan    時(shí)間: 2021-12-23 13:51


誰說keil不能輸入二進(jìn)制常數(shù)?keil的幫助文件你有空多看看。

作者: dzbj    時(shí)間: 2021-12-23 14:08
datouyuan 發(fā)表于 2021-12-23 13:51
誰說keil不能輸入二進(jìn)制常數(shù)?keil的幫助文件你有空多看看。

沒成功 咋弄 有范例嗎


作者: 188610329    時(shí)間: 2022-1-5 11:11
dzbj 發(fā)表于 2021-12-23 14:08
沒成功 咋弄 有范例嗎

弄不出來的……

他那個(gè)截圖,源自另外一個(gè)求助貼,求助者就是看到這么一段說明然后貼圖問為什么KEIL里面不能實(shí)現(xiàn)。其實(shí)也有人在那個(gè)帖子回復(fù),告知什么叫KEIL C,但是那個(gè)帖子的樓主好像完全不懂什么叫KEIL C。
所以,看到8樓的說法,我懷疑就是那個(gè)求助者的小號(hào),因?yàn)樗矇焊鶝]明白,什么叫 KEIL C。

多的就不說了,就說16進(jìn)制, 0x  啥啥的,你用表格里的 H 后綴代替 0x  輸入 1234H 你看看編譯能通過么?就明白了。

最近,像8樓這種,自己整不明白,不愿意虛心提問,總想著 噴別人一頓,然后人家耐心給他解釋的時(shí)候偷師,然后還不用說謝謝的人越來越多。所以我壓根就沒打算回他。
作者: dzbj    時(shí)間: 2022-1-6 02:04
188610329 發(fā)表于 2022-1-5 11:11
弄不出來的……

他那個(gè)截圖,源自另外一個(gè)求助貼,求助者就是看到這么一段說明然后貼圖問為什么KEIL里 ...

能人們都不那么弄 連耍小聰明的也沒那么弄 多半是沒戲 果然是沒戲

作者: datouyuan    時(shí)間: 2022-1-6 12:00
188610329 發(fā)表于 2022-1-5 11:11
弄不出來的……

他那個(gè)截圖,源自另外一個(gè)求助貼,求助者就是看到這么一段說明然后貼圖問為什么KEIL里 ...

你想多了。
這圖是確實(shí)是我看了你的帖子后在keil幫助文件中找到并截圖的。
在keil C中不能使用,我剛驗(yàn)證了,確實(shí)不行。
另外我覺得,
P1 = B_0100_1100;
P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便


作者: 188610329    時(shí)間: 2022-1-11 17:14
datouyuan 發(fā)表于 2022-1-6 12:00
你想多了。
這圖是確實(shí)是我看了你的帖子后在keil幫助文件中找到并截圖的。
在keil C中不能使用,我剛驗(yàn) ...

也許吧,

我想的多了,所以覺得可能有人想要輸入二進(jìn)制,發(fā)個(gè)頭文件,幫助一些有需要的人。

你“想的不多”,所以有時(shí)間找?guī)椭,然后、沒時(shí)間做實(shí)驗(yàn),就立刻發(fā)圖嘲諷。
9樓根據(jù)你的“想的不多” 的引導(dǎo)浪費(fèi)自己的時(shí)間,測(cè)試后無法實(shí)現(xiàn),失望而歸,你“想得不多”所以對(duì)人家沒有任何表示, 而因?yàn)椤跋氲牟欢唷眳s還不忘再過來補(bǔ)充一句,覺得P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便

你要是覺得,P1 = (1<<6)|(1<<3)|(1<<2);//更直觀,方便, 一開始就可以如此表示,而不用去發(fā)表所謂的“多看幫助”的言論,在開頭,我也表明了,幫到有需要的黑友,即便,你發(fā)圖嘲諷,表示你是一個(gè)“想的少”但是看幫助特別多(即便沒有看懂)的人,我也沒打算回應(yīng)你,直到有人被誤導(dǎo)后,浪費(fèi)了時(shí)間精力,我才為此表示一下,不要浪費(fèi)時(shí)間了。也許用詞有些犀利,但是,你沒時(shí)間回應(yīng)因?yàn)槟愣装桌速M(fèi)時(shí)間的黑友,卻有時(shí)間表示我“想多了”,呵呵……   不由感嘆,“想的少”真幸福。
作者: datouyuan    時(shí)間: 2022-1-12 10:45
本帖最后由 datouyuan 于 2022-1-12 10:50 編輯

我不會(huì)和你一樣有那么強(qiáng)的攻擊性。
問題討論就圍繞問題,不應(yīng)牽扯這么多問題以外的。
盡管我這次我查找?guī)椭鷽]解決問題,但我還是認(rèn)為“多看幫助”是解決問題的好方法。


作者: 188610329    時(shí)間: 2022-1-13 23:06
datouyuan 發(fā)表于 2022-1-12 10:45
我不會(huì)和你一樣有那么強(qiáng)的攻擊性。
問題討論就圍繞問題,不應(yīng)牽扯這么多問題以外的。
盡管我這次我查找?guī)?...

你說沒那么強(qiáng)的攻擊性,你說圍繞問題。

我發(fā)帖是為了提供一個(gè)解決問題的方案。

你回帖是提供了一條“岔路”, 這是解決問題?還是制造問題?

然后,由于你的回帖,誤導(dǎo)了某些人,讓某些人更加的茫然了,不知道你基于什么原因,始終沒有回復(fù),你可以看看日期,然后,我替你“擦屁股”了,你就跳出來了,你也可以看看日期。我是真的看不出來,你是起積極作用,還是消極作用。

并且,你還是多看“多看幫助”得來的岔路, 看了幫助,不去理解,然后就以為掌握了某個(gè)技巧,就進(jìn)行發(fā)表,這是對(duì)學(xué)術(shù)的正確態(tài)度么?這是解決問題的態(tài)度么? 然后,你還在覺得這是好辦法?
作者: datouyuan    時(shí)間: 2022-1-14 09:31
188610329 發(fā)表于 2022-1-13 23:06
你說沒那么強(qiáng)的攻擊性,你說圍繞問題。

我發(fā)帖是為了提供一個(gè)解決問題的方案。

一條“岔路”,花費(fèi)很少的時(shí)間就能驗(yàn)證的“岔路”,能讓你這么重視,太令人驚詫了。
為啥keil的幫助文件這部分為啥不適用keil C,這我也確實(shí)不知道,有時(shí)間我會(huì)琢磨下。你真要“擦屁股”,也應(yīng)該是解決這點(diǎn)。
你雖然說了那么多,但我還是認(rèn)為“多看幫助”是解決問題的好方法。
作者: datouyuan    時(shí)間: 2022-1-14 14:24
對(duì)于你那么多關(guān)于本人的臆測(cè),看來我還是解釋下,這可能會(huì)讓你很不爽。
我認(rèn)為移位操作是更好的方法。對(duì)于你說我通過“多看幫助”獲得的所謂技巧,或你提供的技巧,我以前沒用過,以后也不打算使用,所以我才沒有立刻解決或請(qǐng)人解決。
討論不是誰強(qiáng)詞奪理誰就有道理,還是盡量圍繞問題吧。
作者: Similarv    時(shí)間: 2022-1-14 17:49
188610329 發(fā)表于 2021-10-12 16:14
…………

不知道咋說……,感覺就像是我看人垂釣累的慌,就給人發(fā)個(gè)網(wǎng)撈魚,

發(fā)這個(gè)子程序的目的,是讓大家能自由定制自己的二進(jìn)制頭文件。
比如我自己比較喜歡 B0010_0011 這樣的格式,
有些人又是喜歡 b_0010_0011 這樣的格式,
用這個(gè)子程序的話,想怎么定制自己喜歡的就隨意了。

另,再回復(fù)7樓,這個(gè)子程序不是給MCU用的,是給你生成.txt(后期改.h)文件的時(shí)候用的……
作者: dzbj    時(shí)間: 2022-1-16 01:13
Similarv 發(fā)表于 2022-1-14 17:49
發(fā)這個(gè)子程序的目的,是讓大家能自由定制自己的二進(jìn)制頭文件。
比如我自己比較喜歡 B0010_0011 這樣的格 ...

感謝回復(fù)

你的方法是我不理解也不會(huì)的方法 應(yīng)該是這方面懂太少了 沒法理解為什么要生成txt再生成.H 我只會(huì)keil里直接干

我說喜歡樓主的方法是因?yàn)槲覐腜C轉(zhuǎn)到MCU 發(fā)現(xiàn)這東西好窮困啊 資源太緊張了 你知道我第一次看手冊(cè)說這東西只有128b的內(nèi)存還不能全用有多吃驚 然后256以上的居然就開始影響運(yùn)算速度 我當(dāng)時(shí)就想 這廝是窮瘋了么

樓主的東西看過不少 比較喜歡那種風(fēng)格 簡(jiǎn)單粗暴直接 比如define一下什么都不占用 所以喜歡 你的方法應(yīng)該是比較高級(jí) 但我不懂所以有點(diǎn)不識(shí)貨吧
作者: 嗷嗷叫的老馬    時(shí)間: 2022-1-21 18:04
這有啥好吵的啊.

大家各取所需即可,這個(gè)H文件我用著挺順手的,那就上來說聲"謝謝".

有不同的意見,完全可以另開一帖,"在KEIL_C中輸入二進(jìn)制的另一種方法",這不就行了,何必在這里杠樓主呢.

別人辛辛苦苦折騰個(gè)好東西出來給大家使用,直接鼓勵(lì)即可,完全沒有必要非得挑刺,不是么
作者: level888    時(shí)間: 2022-2-1 21:58
不是可以直接輸出 0b開頭的二進(jìn)制嗎?
作者: mk39    時(shí)間: 2022-2-16 09:24
Similarv 發(fā)表于 2022-1-14 17:49
發(fā)這個(gè)子程序的目的,是讓大家能自由定制自己的二進(jìn)制頭文件。
比如我自己比較喜歡 B0010_0011 這樣的格 ...

確實(shí)不錯(cuò)
作者: mk39    時(shí)間: 2022-2-16 09:32
dzbj 發(fā)表于 2022-1-16 01:13
感謝回復(fù)

你的方法是我不理解也不會(huì)的方法 應(yīng)該是這方面懂太少了 沒法理解為什么要生成txt再生成.H 我 ...

說白了,這個(gè)代碼是用來生成樓主的頭文件,找個(gè)c編譯器編譯生成exe文件運(yùn)行就可以獲得和樓主提供的類似文件,好處在于只要更改printf("#define B%d%d%d%d_%d%d%d%d 0x%.2x\n就"可以隨意修改成自己喜歡的前綴
作者: newlight    時(shí)間: 2022-12-19 19:57
思路不錯(cuò)
作者: tt2016    時(shí)間: 2024-1-9 22:33
這個(gè)厲害啊,確實(shí)方便不少
作者: vscos    時(shí)間: 2024-1-10 06:43
188610329 發(fā)表于 2022-1-5 11:11
弄不出來的……

他那個(gè)截圖,源自另外一個(gè)求助貼,求助者就是看到這么一段說明然后貼圖問為什么KEIL里 ...

KEIL C里不是不能實(shí)現(xiàn),那是因?yàn)镵EILC里保留了十進(jìn)制的原因,因?yàn)槭M(jìn)制里也有1010這樣的數(shù)字,好果我發(fā)給你一串10101010這樣的數(shù)字,又不加以說明,你說我是想表達(dá)十進(jìn)制的10101010還是二進(jìn)制的10101010呢!所以為了人類方便的十進(jìn)制數(shù),所以就不能用計(jì)算機(jī)的二進(jìn)制表示了
作者: zhxzhx    時(shí)間: 2024-1-10 16:42
dzbj 發(fā)表于 2022-1-16 01:13
感謝回復(fù)

你的方法是我不理解也不會(huì)的方法 應(yīng)該是這方面懂太少了 沒法理解為什么要生成txt再生成.H 我 ...

你要是 懂 PC,就更不會(huì)說這話了,這個(gè)就是用PC自動(dòng)生成 #define XXX YYY 的,和你說的風(fēng)馬牛不相及,是省人手指頭打字的.
作者: zhxzhx    時(shí)間: 2024-1-10 16:44
我也貢獻(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





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1