首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于单片机程序一些有关问题

2013-07-09 
关于单片机程序一些问题以下是单片机程序,请高手注释解释一下每句话的含义啊#define SET_LE()GP4DAT (GP

关于单片机程序一些问题
以下是单片机程序,请高手注释解释一下每句话的含义啊

#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。

热点排行