好的,谢谢你们的回答! |
首先你得知道,单片机里边用的执行,其实是一堆寄存器的执行。那么寄存器是怎么交互的呢?只能通过数据了,你这里的所有数据都是最终赋值给寄存器的,而且寄存器的每一位都有其对应的特殊意义。 |
涨知识了。 |
就是给右边那些数字啊,公式啊之类的一个名字,左边那些字母就是。下次想用那些东西直接写他们的名字就行,也就是你定义的那些 |
是LED7(0)或LED7(1),只是看起来像个函数,实质还是一句表达式 |
jiahz2019 发表于 2021-9-15 15:34 调用时为LED(0)或LED(1);对应m=0或m=1 编译时把后面定义式中的m代换为0或1 |
主要是把这些单一离散的输入输出信号组合到一个寄存器中统一处理。比如5个按键经过按键处理程式得到的结果是11110或00001,表示KEY1被按下;11101或00010表示KEY2被按下。一个位代表一个按键,依次类推。 |
#define LED7(m) (Dram[0] = Dram[0]&(~(1<<6))|(m<<6)) 这句有人讲解一下吗? 里面的数据定义如下: uint8 Dram[2]; m 怎么理解,程序里面也没有关于它的定义 |
tzs233 发表于 2021-9-15 15:23 好的,谢谢,有点理解了。 |
程序都是从0开始编号计数的 ,然后我们实际生活中大多从1开始计数。 比如 (1<<4) 变成10000,如果每一位(0或1)代表一个按键状态(闭合或断开),不就可以表示5个按键状态了吗? 这样很通俗易懂了吧 |
ByanouQ 发表于 2021-9-15 14:33 (1<<4) 就是1左移4位,》这句能理解, 意思是key5那个引脚设置为高电平》这句理解不了,咋就成了高电平, 难道是 1左移4位=10000, “1” 刚好对应第5位 ? |
#define key5 (1<<4) 就是1左移4位,意思是key5那个引脚设置为高电平 |
devcang 发表于 2021-9-15 13:18 你讲的替换我肯定是知道的,我不明白的是后面的那些表达式。 |
实际代码中,用前面的,直接用后边的替换上去。 |