编译无法通过

[复制链接]
 楼主| liuzaiy 发表于 2016-3-21 22:05 | 显示全部楼层 |阅读模式
如何声明2进制
如:
main.c
void main(void)
{
    OSCICN = _OSCICN_INIT;
}
main.h
#define _OSCICN_INIT 0x83;
如果想方便添加注释:
#define     _OSCICN_INIT    0b10000011; //内部晶振控制
//                            ||    ||____  IFCN0
//                            ||    |_____  IFCN1
//                            ||__________  IFRDY
//                            |___________  IOSCEN
编译无法通过,如何声明2进制???
 楼主| liuzaiy 发表于 2016-3-21 22:08 | 显示全部楼层
明白了自己定义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'
ousj 发表于 2016-3-21 22:10 | 显示全部楼层
OSCICN = IFCN0 | IFCN1 | IOSCEN ;最好
zyf部长 发表于 2016-3-21 22:13 | 显示全部楼层
OSCICN = (1<<IFCN0) | (1<<IFCN1) | (1<<IOSCEN) ;也行
 楼主| liuzaiy 发表于 2016-3-21 22:15 | 显示全部楼层

#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均可
zyf部长 发表于 2016-3-21 22:18 | 显示全部楼层
#define B00000000 0x00
#define B00000001 0x01
#define B00000010 0x02
#define B00000011 0x03
.
.
.
#define B11111111 0xff

这样不行吗?我在KEIL编译通过,我看1楼写的多了个分号。
小小猫咪 发表于 2016-3-21 22:20 | 显示全部楼层
lz,你C怎么学的?define后面跟 ; 的?
 楼主| liuzaiy 发表于 2016-3-21 22:23 | 显示全部楼层
我先自己检查检查吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

735

主题

7546

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部