shooly 发表于 2014-10-28 14:27:22

SDCC+codeblocks,如何定义位?怎么设置才能输出hex文件

昨晚试了下开源IDE(codeblocks)和51编译器(SDCC),把以前keil写的小程序拷过去试了下,寄存器位定义与keil不一样,不知道该怎么设置,看了手册还是不明白,比如STC15F2K60S2,手册中部分寄存器地址如下:


keil中可以这样设置位
sbit LED1 = P2^0;
sbit LED2 = P2^1;
看SDCC中的头文件,定义规则是这样:
/* P2 */
__sbit __at (0xA0) P2_0       ;
__sbit __at (0xA1) P2_1       ;
__sbit __at (0xA2) P2_2       ;
__sbit __at (0xA3) P2_3       ;
__sbit __at (0xA4) P2_4       ;
__sbit __at (0xA5) P2_5       ;
__sbit __at (0xA6) P2_6       ;
__sbit __at (0xA7) P2_7       ;
括号中的地址是绝对地址,在上面图中显示0xA1--0xA7不是P2端口了,一直没搞没明白,不知道是不是我的理解有问题。
后来把P2端口直接赋值,不按位赋值,编译通过了,但codeblocks没有生成hex文件,建立工程的时候已经选择了 输出格式,是不是哪里设置不对,使用过的过来探讨下。


页: [1]
查看完整版本: SDCC+codeblocks,如何定义位?怎么设置才能输出hex文件