这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » IO 这么定义为什么不对?#define SDA=0 P7&=_00_Pn7_

共6条 1/1 1 跳转至

IO 这么定义为什么不对?#define SDA=0 P7&=_00_Pn7_OUTPUT_0不能这个定义WHY?

高工
2012-09-11 13:37:24     打赏
void R_PORT_Create(void)
{
    P7 = _01_Pn0_OUTPUT_1 | _00_Pn2_OUTPUT_0 | _00_Pn7_OUTPUT_0;
    PM7 = _00_PMn0_MODE_OUTPUT | _02_PMn1_MODE_INPUT |                               _ 00_PMn2_MODE_OUTPUT | _08_PMn3_MODE_INPUT | _10_PMn4_NOT_USE |
          _20_PMn5_NOT_USE | _40_PMn6_NOT_USE | _00_PMn7_MODE_OUTPUT;
}

这是个标准定义。
调用的话。
P7&=_00_Pn7_OUTPUT_0;//=0
P7|=_80_Pn7_OUTPUT_1;//=1

而输入输出转换标准定法是这样的:
void PORT_ChangeP00Input(BOOL enablepu)
{
  if (enablepu)
  {
    PU0 |= _01_PUn0_PULLUP_ON;
  }
   else
  {
   PU0 &= (UCHAR)~_01_PUn0_PULLUP_ON;
  }
   PM0 |= _01_PMn0_MODE_INPUT;
}

这么定义我感觉读起来有点累。
用宏定义又太麻烦?

大家现在是怎么定义的啊。

用宏定义成C51的那种方式
P77=0;   ///   P7 &= _00_Pn7_OUTPUT_0;//=0
P77=1;
大家是这样定义的不??是不?????

关于IO的输入输出选换也可以定义成宏方式不?


这样为什么不对?如下
#define SDA=0  P7&=_00_Pn7_OUTPUT_0
SDA=0;



关键词: 这么     定义     为什么     不对     #define     OUTP    

专家
2012-09-11 14:28:59     打赏
2楼
可以自己宏定义!!!

高工
2012-09-11 14:34:07     打赏
3楼
这样为什么不对?
#define SDA=0  P7&=_00_Pn7_OUTPUT_0
SDA=0;
报错:expected an expression

高工
2012-09-11 15:34:35     打赏
4楼
#define SDA=0  P7&=_00_Pn7_OUTPUT_0
SDA=0;

这种定义是不能被识别的,这样可以被识别。为什么呢?
#define SDA  P7&=_00_Pn7_OUTPUT_0
SDA;

助工
2012-09-11 17:25:38     打赏
5楼
前面的表达式不能有等号吧 你把等号换成下划线试试

高工
2012-09-12 10:32:17     打赏
6楼

知道不能用等号了。3Q


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]