求助:PICC 端口操作宏 问题。

2020-02-10 08:37发布

以前用CCS编译器,最近转用了PICC的。

定义了端口:
#define   PIN_C3 = 59

端口操作宏:
#define   sbit(port, bit)   port |= (1<<bit)           // 位置1
#define   set(pin)          sbit(*(pin / 8), pin % 8)  // 端口置1

程序中只需调用 set(PIN_C3); 就可以将RC3端口置1了,但在PICC编译环境下这个宏就编译不过了。左右摆弄就不通,望有知道的朋友解答。先谢过!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
yujie
1楼-- · 2020-02-10 10:18
其它宏:

#define    in(pin)    sbit(*(pin / 8 + 0x80), pin % 8)   // 设为输入
#define    out(pin)   cbit(*(pin / 8 + 0x80), pin % 8)   // 设为输出

利用这些宏,端口操作就好多了。如操作24C02,需要转换端口方向的。只需定义如下定义,方便些:

#define    SCL    PIN_C3
#define    SDA    PIN_C4

void i2c_start (void)
{
    out(SCL);
    out(SDA);                // 设置为输出

    set(SDA);
    set(SCL);                // SCL->H 准备开始

    rst(SDA);                // 在SCL为H时拉低SDA为开始信号
    rst(SCL);

    // in(SDA);              // 设为输入
}
yujie
2楼-- · 2020-02-10 13:51
自行解决:

#define  set(pin)         sbit(*(char *)(pin / 8), pin % 8)
#define  rst(pin)         cbit(*(char *)(pin / 8), pin % 8)
piccode
3楼-- · 2020-02-10 17:43
为什么不再用CCS了?

一周热门 更多>