以下是单片机程序,请高手注释解释一下每句话的含义啊
#define SET_LE() GP4DAT = (GP4DAT | 0x00080000) //P4.3->LE
#define CLR_LE() GP4DAT = (GP4DAT & 0xFFF7FFFF)
#define SET_SCL() GP4DAT = (GP4DAT | 0x00100000) //P4.4->SCL
#define CLR_SCL() GP4DAT = (GP4DAT & 0xffefffff)
#define SET_DATA() GP4DAT = (GP4DAT | 0x00200000) //P4.5->DATA
#define CLR_DATA() GP4DAT = (GP4DAT & 0xffdfffff)
#define SET_DATA_OUT() GP4DAT = GP4DAT | 0x20000000;
#define SET_DATA_IN() GP4DAT = GP4DAT & 0xDFFFFFFF;
------解决方案--------------------
就是一个宏定义,很好理解啊
#define SET_LE() GP4DAT = (GP4DAT
------解决方案--------------------
0x00080000) //P4.3->LE
看SET_LE()的名字,就是把LE那根线拉高
GP4DAT应该就是映射GP4口的寄存器
(GP4DAT
------解决方案--------------------
0x00080000) 就是把寄存器GP4DAT对应的那位拉高
然后LE那根线就高了
如果楼主是初学,不明白#define可以百度下
------解决方案--------------------
看看C语言语法的 宏定义部分 和 位操作部分 就明白了,很简单的
------解决方案--------------------
1楼说得对,就是宏定义
代码中碰见SET_LE() 就用GP4DAT = (GP4DAT
------解决方案--------------------
0x00080000)替换就好明白了
------解决方案--------------------
是这样:
编译程序在遇到你所定义的宏名的时候,就会替换成对应的宏字符串。这个过程也叫做宏展开。
例如你定义了
#define SET_LE() GP4DAT = (GP4DAT
------解决方案--------------------
0x00080000) //P4.3->LE
编译时,代码中所有的 SET_LE() 都会替换成 GP4DAT = (GP4DAT
------解决方案--------------------
0x00080000) //P4.3->LE。