打印

编译无法通过

[复制链接]
494|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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) ;也行

使用特权

评论回复
5
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均可

使用特权

评论回复
6
zyf部长| | 2016-3-21 22:18 | 只看该作者
#define B00000000 0x00
#define B00000001 0x01
#define B00000010 0x02
#define B00000011 0x03
.
.
.
#define B11111111 0xff

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

使用特权

评论回复
7
小小猫咪| | 2016-3-21 22:20 | 只看该作者
lz,你C怎么学的?define后面跟 ; 的?

使用特权

评论回复
8
liuzaiy|  楼主 | 2016-3-21 22:23 | 只看该作者
我先自己检查检查吧

使用特权

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

本版积分规则

735

主题

7546

帖子

2

粉丝