打印

编译无法通过,如何声明2进制

[复制链接]
1401|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
宋倩2010|  楼主 | 2013-11-17 23:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如:
main.c
void main(void)
{
    OSCICN = _OSCICN_INIT;
}
main.h
#define _OSCICN_INIT 0x83;
如果想方便添加注释:
#define     _OSCICN_INIT    0b10000011; //内部晶振控制
//                            ||    ||____  IFCN0
//                            ||    |_____  IFCN1
//                            ||__________  IFRDY
//                            |___________  IOSCEN
编译无法通过,如何声明2进制???
沙发
宋倩2010|  楼主 | 2013-11-17 23:29 | 只看该作者
明白了自己定义2进制代替
如:
#define B00000000 0x00;
我试过几个
#define 0b00000000 0x00;
#define 0b00000000 0x00
都不行!

看来不行,编译报错:
*** ERROR C100 IN LINE 1 OF BINARY.H: unprintable character 0xA1 skipped
*** ERROR C100 IN LINE 1 OF BINARY.H: unprintable character 0xA1 skipped
*** ERROR C100 IN LINE 1 OF BINARY.H: unprintable character 0xA1 skipped
*** ERROR C100 IN LINE 1 OF BINARY.H: unprintable character 0xA1 skipped
*** ERROR C141 IN LINE 1 OF BINARY.H: syntax error near '#'
*** ERROR C129 IN LINE 1 OF BINARY.H: missing ';' before 'B00000000'

使用特权

评论回复
板凳
chenho| | 2013-11-17 23:31 | 只看该作者
OSCICN = IFCN0 | IFCN1 | IOSCEN ;最好

使用特权

评论回复
地板
gongche| | 2013-11-17 23:32 | 只看该作者
OSCICN = (1<<IFCN0) | (1<<IFCN1) | (1<<IOSCEN) ;也行

使用特权

评论回复
5
宋倩2010|  楼主 | 2013-11-17 23:33 | 只看该作者
#define _BIN(a,b,c,d,e,f,g,h) ((a  <<7)+(b  <<6)+(c  <<5)+(d  <<4)+(e  <<3)+(f  <<2)+(g  <<1)+(h  <<0))
#define _bin _BIN // _bin,_BIN均可

使用特权

评论回复
6
huanghuac| | 2013-11-17 23:34 | 只看该作者
#define B00000000 0x00
#define B00000001 0x01
#define B00000010 0x02
#define B00000011 0x03
.
.
.
#define B11111111 0xff

这样不行吗?我在KEIL编译通过,我看1楼写的多了个分号。

使用特权

评论回复
7
happy_10| | 2013-11-17 23:36 | 只看该作者
lz,你C怎么学的?define后面跟 ; 的?

使用特权

评论回复
8
宋倩2010|  楼主 | 2013-11-17 23:37 | 只看该作者
我先自己检查检查吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

322

主题

3217

帖子

2

粉丝