找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1504|回复: 14
打印 上一主题 下一主题
收起左侧

C语言这种宏定义怎么理解?

[复制链接]
跳转到指定楼层
楼主
也摸索了快一年的单片机了,看书,开发板上各种练习,可一到实际应用就懵逼了,下面是一段以前工程师写的实际项目代码,完全看不懂呀,, 老手们指点一二,谢谢!

51hei图片_20210915105755.png (86.4 KB, 下载次数: 58)

51hei图片_20210915105755.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2021-9-15 13:18 | 只看该作者
实际代码中,用前面的,直接用后边的替换上去。
回复

使用道具 举报

板凳
ID:656213 发表于 2021-9-15 14:17 | 只看该作者
devcang 发表于 2021-9-15 13:18
实际代码中,用前面的,直接用后边的替换上去。

你讲的替换我肯定是知道的,我不明白的是后面的那些表达式。
回复

使用道具 举报

地板
ID:480510 发表于 2021-9-15 14:33 | 只看该作者
#define    key5       (1<<4) 就是1左移4位,意思是key5那个引脚设置为高电平
回复

使用道具 举报

5#
ID:656213 发表于 2021-9-15 15:12 | 只看该作者
ByanouQ 发表于 2021-9-15 14:33
#define    key5       (1

(1<<4) 就是1左移4位,》这句能理解,    意思是key5那个引脚设置为高电平》这句理解不了,咋就成了高电平, 难道是 1左移4位=10000,  “1” 刚好对应第5位 ?
回复

使用道具 举报

6#
ID:509408 发表于 2021-9-15 15:23 | 只看该作者
程序都是从0开始编号计数的 ,然后我们实际生活中大多从1开始计数。  
比如 (1<<4) 变成10000,如果每一位(0或1)代表一个按键状态(闭合或断开),不就可以表示5个按键状态了吗?
这样很通俗易懂了吧
回复

使用道具 举报

7#
ID:656213 发表于 2021-9-15 15:30 | 只看该作者
tzs233 发表于 2021-9-15 15:23
程序都是从0开始编号计数的 ,然后我们实际生活中大多从1开始计数。  
比如 (1

好的,谢谢,有点理解了。
回复

使用道具 举报

8#
ID:656213 发表于 2021-9-15 15:34 | 只看该作者
#define        LED7(m)        (Dram[0] = Dram[0]&(~(1<<6))|(m<<6))   这句有人讲解一下吗?  里面的数据定义如下: uint8 Dram[2];     m 怎么理解,程序里面也没有关于它的定义
回复

使用道具 举报

9#
ID:814525 发表于 2021-9-15 15:49 | 只看该作者
主要是把这些单一离散的输入输出信号组合到一个寄存器中统一处理。比如5个按键经过按键处理程式得到的结果是11110或00001,表示KEY1被按下;11101或00010表示KEY2被按下。一个位代表一个按键,依次类推。
回复

使用道具 举报

10#
ID:885138 发表于 2021-9-15 20:05 来自手机 | 只看该作者
jiahz2019 发表于 2021-9-15 15:34
#define        LED7(m)        (Dram[0] = Dram[0]&(~(1

调用时为LED(0)或LED(1);对应m=0或m=1
编译时把后面定义式中的m代换为0或1
回复

使用道具 举报

11#
ID:885138 发表于 2021-9-15 20:09 来自手机 | 只看该作者
是LED7(0)或LED7(1),只是看起来像个函数,实质还是一句表达式
回复

使用道具 举报

12#
ID:950946 发表于 2021-9-15 23:04 | 只看该作者
就是给右边那些数字啊,公式啊之类的一个名字,左边那些字母就是。下次想用那些东西直接写他们的名字就行,也就是你定义的那些
回复

使用道具 举报

13#
ID:731755 发表于 2021-9-16 00:06 来自手机 | 只看该作者
涨知识了。
回复

使用道具 举报

14#
ID:81196 发表于 2021-9-16 08:44 | 只看该作者
首先你得知道,单片机里边用的执行,其实是一堆寄存器的执行。那么寄存器是怎么交互的呢?只能通过数据了,你这里的所有数据都是最终赋值给寄存器的,而且寄存器的每一位都有其对应的特殊意义。
回复

使用道具 举报

15#
ID:656213 发表于 2021-9-16 13:54 | 只看该作者
好的,谢谢你们的回答!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表