关于单片机程序一些问题
以下是单片机程序,请高手注释解释一下每句话的含义啊
#define SET_LE()GP4DAT = (GP4DAT | 0x00080000)//P4.3->LE
#define CLR_LE()GP4DAT = (GP4DAT & 0xFFF7FFFF)
#defineSET_SCL()GP4DAT = (GP4DAT | 0x00100000)//P4.4->SCL
#defineCLR_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。