找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5254|回复: 27
打印 上一主题 下一主题
收起左侧

在Keil_C语言中输入二进制的头文件

  [复制链接]
跳转到指定楼层
楼主
在寄存器设置的时候,我们会发现很多时候,二进制比16进制更直观,更方便。

在汇编中,我们只需要 01001100B 这种方式就能够直接输入二进制,
但是在Keil C 中,是不能直接输入二进制的,所以,这个时候,头文件就能帮上忙了,

主程序中 include 此头文件后,可以直接用   P1 = B_0100_1100; 这种方式输入二进制,在编写代码时,可以提供很多方便。

下载地址如下:
Binary.rar (797 Bytes, 下载次数: 76)

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

另外,如果有需要STC端口模式设置黑友,可以去这个帖子下载: http://www.51hei.com/bbs/dpj-211950-1.html

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏15 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:808676 发表于 2021-10-12 06:16 | 只看该作者
真不错,实用
回复

使用道具 举报

板凳
ID:476527 发表于 2021-10-12 08:06 | 只看该作者
这玩意还是让电脑自动生成更快捷有效。
  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个为一组,写个表头
  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. }
复制代码

回复

使用道具 举报

地板
ID:908826 发表于 2021-10-12 09:43 | 只看该作者
Similarv 发表于 2021-10-12 08:06
这玩意还是让电脑自动生成更快捷有效。

你这个头像印象深刻,之前拜读过你的工程化定制程序,对我启发很大。
回复

使用道具 举报

5#
ID:624769 发表于 2021-10-12 16:14 | 只看该作者
Similarv 发表于 2021-10-12 08:06
这玩意还是让电脑自动生成更快捷有效。

…………

不知道咋说……,感觉就像是我看人垂钓累的慌,就给人发个网捞鱼,
然后……,你看到了,干脆发了一个渔网编制图解。
回复

使用道具 举报

6#
ID:57925 发表于 2021-12-22 15:00 | 只看该作者
188610329 发表于 2021-10-12 16:14
…………

不知道咋说……,感觉就像是我看人垂钓累的慌,就给人发个网捞鱼,

哈哈哈哈哈哈
回复

使用道具 举报

7#
ID:47286 发表于 2021-12-23 13:02 | 只看该作者
我个人更偏向楼主的方法 板凳楼大神的方法要吃片子的计算量吧
回复

使用道具 举报

8#
ID:887371 发表于 2021-12-23 13:51 | 只看该作者


谁说keil不能输入二进制常数?keil的帮助文件你有空多看看。
回复

使用道具 举报

9#
ID:47286 发表于 2021-12-23 14:08 | 只看该作者
datouyuan 发表于 2021-12-23 13:51
谁说keil不能输入二进制常数?keil的帮助文件你有空多看看。

没成功 咋弄 有范例吗

回复

使用道具 举报

10#
ID:624769 发表于 2022-1-5 11:11 | 只看该作者
dzbj 发表于 2021-12-23 14:08
没成功 咋弄 有范例吗

弄不出来的……

他那个截图,源自另外一个求助贴,求助者就是看到这么一段说明然后贴图问为什么KEIL里面不能实现。其实也有人在那个帖子回复,告知什么叫KEIL C,但是那个帖子的楼主好像完全不懂什么叫KEIL C。
所以,看到8楼的说法,我怀疑就是那个求助者的小号,因为他也压根没明白,什么叫 KEIL C。

多的就不说了,就说16进制, 0x  啥啥的,你用表格里的 H 后缀代替 0x  输入 1234H 你看看编译能通过么?就明白了。

最近,像8楼这种,自己整不明白,不愿意虚心提问,总想着 喷别人一顿,然后人家耐心给他解释的时候偷师,然后还不用说谢谢的人越来越多。所以我压根就没打算回他。
回复

使用道具 举报

11#
ID:47286 发表于 2022-1-6 02:04 来自手机 | 只看该作者
188610329 发表于 2022-1-5 11:11
弄不出来的……

他那个截图,源自另外一个求助贴,求助者就是看到这么一段说明然后贴图问为什么KEIL里 ...

能人们都不那么弄 连耍小聪明的也没那么弄 多半是没戏 果然是没戏
回复

使用道具 举报

12#
ID:887371 发表于 2022-1-6 12:00 | 只看该作者
188610329 发表于 2022-1-5 11:11
弄不出来的……

他那个截图,源自另外一个求助贴,求助者就是看到这么一段说明然后贴图问为什么KEIL里 ...

你想多了。
这图是确实是我看了你的帖子后在keil帮助文件中找到并截图的。
在keil C中不能使用,我刚验证了,确实不行。
另外我觉得,
P1 = B_0100_1100;
P1 = (1<<6)|(1<<3)|(1<<2);//更直观,方便

回复

使用道具 举报

13#
ID:624769 发表于 2022-1-11 17:14 | 只看该作者
datouyuan 发表于 2022-1-6 12:00
你想多了。
这图是确实是我看了你的帖子后在keil帮助文件中找到并截图的。
在keil C中不能使用,我刚验 ...

也许吧,

我想的多了,所以觉得可能有人想要输入二进制,发个头文件,帮助一些有需要的人。

你“想的不多”,所以有时间找帮助,然后、没时间做实验,就立刻发图嘲讽。
9楼根据你的“想的不多” 的引导浪费自己的时间,测试后无法实现,失望而归,你“想得不多”所以对人家没有任何表示, 而因为“想的不多”却还不忘再过来补充一句,觉得P1 = (1<<6)|(1<<3)|(1<<2);//更直观,方便

你要是觉得,P1 = (1<<6)|(1<<3)|(1<<2);//更直观,方便, 一开始就可以如此表示,而不用去发表所谓的“多看帮助”的言论,在开头,我也表明了,帮到有需要的黑友,即便,你发图嘲讽,表示你是一个“想的少”但是看帮助特别多(即便没有看懂)的人,我也没打算回应你,直到有人被误导后,浪费了时间精力,我才为此表示一下,不要浪费时间了。也许用词有些犀利,但是,你没时间回应因为你而白白浪费时间的黑友,却有时间表示我“想多了”,呵呵……   不由感叹,“想的少”真幸福。
回复

使用道具 举报

14#
ID:887371 发表于 2022-1-12 10:45 | 只看该作者
本帖最后由 datouyuan 于 2022-1-12 10:50 编辑

我不会和你一样有那么强的攻击性。
问题讨论就围绕问题,不应牵扯这么多问题以外的。
尽管我这次我查找帮助没解决问题,但我还是认为“多看帮助”是解决问题的好方法。

回复

使用道具 举报

15#
ID:624769 发表于 2022-1-13 23:06 | 只看该作者
datouyuan 发表于 2022-1-12 10:45
我不会和你一样有那么强的攻击性。
问题讨论就围绕问题,不应牵扯这么多问题以外的。
尽管我这次我查找帮 ...

你说没那么强的攻击性,你说围绕问题。

我发帖是为了提供一个解决问题的方案。

你回帖是提供了一条“岔路”, 这是解决问题?还是制造问题?

然后,由于你的回帖,误导了某些人,让某些人更加的茫然了,不知道你基于什么原因,始终没有回复,你可以看看日期,然后,我替你“擦屁股”了,你就跳出来了,你也可以看看日期。我是真的看不出来,你是起积极作用,还是消极作用。

并且,你还是多看“多看帮助”得来的岔路, 看了帮助,不去理解,然后就以为掌握了某个技巧,就进行发表,这是对学术的正确态度么?这是解决问题的态度么? 然后,你还在觉得这是好办法?
回复

使用道具 举报

16#
ID:887371 发表于 2022-1-14 09:31 | 只看该作者
188610329 发表于 2022-1-13 23:06
你说没那么强的攻击性,你说围绕问题。

我发帖是为了提供一个解决问题的方案。

一条“岔路”,花费很少的时间就能验证的“岔路”,能让你这么重视,太令人惊诧了。
为啥keil的帮助文件这部分为啥不适用keil C,这我也确实不知道,有时间我会琢磨下。你真要“擦屁股”,也应该是解决这点。
你虽然说了那么多,但我还是认为“多看帮助”是解决问题的好方法。
回复

使用道具 举报

17#
ID:887371 发表于 2022-1-14 14:24 | 只看该作者
对于你那么多关于本人的臆测,看来我还是解释下,这可能会让你很不爽。
我认为移位操作是更好的方法。对于你说我通过“多看帮助”获得的所谓技巧,或你提供的技巧,我以前没用过,以后也不打算使用,所以我才没有立刻解决或请人解决。
讨论不是谁强词夺理谁就有道理,还是尽量围绕问题吧。
回复

使用道具 举报

18#
ID:476527 发表于 2022-1-14 17:49 | 只看该作者
188610329 发表于 2021-10-12 16:14
…………

不知道咋说……,感觉就像是我看人垂钓累的慌,就给人发个网捞鱼,

发这个子程序的目的,是让大家能自由定制自己的二进制头文件。
比如我自己比较喜欢 B0010_0011 这样的格式,
有些人又是喜欢 b_0010_0011 这样的格式,
用这个子程序的话,想怎么定制自己喜欢的就随意了。

另,再回复7楼,这个子程序不是给MCU用的,是给你生成.txt(后期改.h)文件的时候用的……
回复

使用道具 举报

19#
ID:47286 发表于 2022-1-16 01:13 | 只看该作者
Similarv 发表于 2022-1-14 17:49
发这个子程序的目的,是让大家能自由定制自己的二进制头文件。
比如我自己比较喜欢 B0010_0011 这样的格 ...

感谢回复

你的方法是我不理解也不会的方法 应该是这方面懂太少了 没法理解为什么要生成txt再生成.H 我只会keil里直接干

我说喜欢楼主的方法是因为我从PC转到MCU 发现这东西好穷困啊 资源太紧张了 你知道我第一次看手册说这东西只有128b的内存还不能全用有多吃惊 然后256以上的居然就开始影响运算速度 我当时就想 这厮是穷疯了么

楼主的东西看过不少 比较喜欢那种风格 简单粗暴直接 比如define一下什么都不占用 所以喜欢 你的方法应该是比较高级 但我不懂所以有点不识货吧
回复

使用道具 举报

20#
ID:57925 发表于 2022-1-21 18:04 | 只看该作者
这有啥好吵的啊.

大家各取所需即可,这个H文件我用着挺顺手的,那就上来说声"谢谢".

有不同的意见,完全可以另开一帖,"在KEIL_C中输入二进制的另一种方法",这不就行了,何必在这里杠楼主呢.

别人辛辛苦苦折腾个好东西出来给大家使用,直接鼓励即可,完全没有必要非得挑刺,不是么
回复

使用道具 举报

21#
ID:278006 发表于 2022-2-1 21:58 | 只看该作者
不是可以直接输出 0b开头的二进制吗?
回复

使用道具 举报

22#
ID:965012 发表于 2022-2-16 09:24 | 只看该作者
Similarv 发表于 2022-1-14 17:49
发这个子程序的目的,是让大家能自由定制自己的二进制头文件。
比如我自己比较喜欢 B0010_0011 这样的格 ...

确实不错
回复

使用道具 举报

23#
ID:965012 发表于 2022-2-16 09:32 | 只看该作者
dzbj 发表于 2022-1-16 01:13
感谢回复

你的方法是我不理解也不会的方法 应该是这方面懂太少了 没法理解为什么要生成txt再生成.H 我 ...

说白了,这个代码是用来生成楼主的头文件,找个c编译器编译生成exe文件运行就可以获得和楼主提供的类似文件,好处在于只要更改printf("#define B%d%d%d%d_%d%d%d%d 0x%.2x\n就"可以随意修改成自己喜欢的前缀
回复

使用道具 举报

24#
ID:1058325 发表于 2022-12-19 19:57 | 只看该作者
思路不错
回复

使用道具 举报

25#
ID:1108581 发表于 2024-1-9 22:33 | 只看该作者
这个厉害啊,确实方便不少
回复

使用道具 举报

26#
ID:654797 发表于 2024-1-10 06:43 | 只看该作者
188610329 发表于 2022-1-5 11:11
弄不出来的……

他那个截图,源自另外一个求助贴,求助者就是看到这么一段说明然后贴图问为什么KEIL里 ...

KEIL C里不是不能实现,那是因为KEILC里保留了十进制的原因,因为十进制里也有1010这样的数字,好果我发给你一串10101010这样的数字,又不加以说明,你说我是想表达十进制的10101010还是二进制的10101010呢!所以为了人类方便的十进制数,所以就不能用计算机的二进制表示了
回复

使用道具 举报

27#
ID:378108 发表于 2024-1-10 16:42 | 只看该作者
dzbj 发表于 2022-1-16 01:13
感谢回复

你的方法是我不理解也不会的方法 应该是这方面懂太少了 没法理解为什么要生成txt再生成.H 我 ...

你要是 懂 PC,就更不会说这话了,这个就是用PC自动生成 #define XXX YYY 的,和你说的风马牛不相及,是省人手指头打字的.
回复

使用道具 举报

28#
ID:378108 发表于 2024-1-10 16:44 | 只看该作者
我也贡献一个
/*************二进制输入宏****************************/
#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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表