我的单片机学习之路1

为了更好地学习单片机,同时与大家一起进步,我将以一个飞控程序的main函数开始读,记录每一个不懂的语句,并写下心路历程。
第一个,关于PWMGO里的语句
这个函数是用define定义的(我不知道define定义的语句是不是叫函数,先这么称呼吧)
到了疑问出现的时刻,这句看不懂
我从图书馆借了一本C primer plus,本打算了解每个不懂得语句得整个体系,即如上得define,不止一种用法,我这里不懂这个用法。原先我打算通过这里,了解完所有define得用法,后来觉得,这样子进程缓慢,很可能拖卡我的学习动力,于是决定只了解这里的这种用法。
————————————————————————分割线---------------------------——————————
#define P2n_push_pull(bitn) P2M1 &= ~(bitn), P2M0 |= (bitn)
每逻辑行都由三部分组成,
1、#define本身
2、选定的缩写,也称为,在这里就是P2n_push_pull(bitn)了。
3、替换列表或者称替换体。
在这个例子中是使用参数,所以这个宏是
类函数宏
,其中可以有一个或者多个参数,这些参数会出现在替换体中。
宏只替换,不计算是个很注重要的概念!!!
回到语句本身,这是一个带一个参数的类函数宏。
所以预处理得时候P2n_push_pull(bitn)会被替换成P2M1 &= ~(bitn), P2M0 |= (bitn)
P2M1和P2M0是可以对P2的8位IO进行输出类型设定的寄存器。
在这里插入图片描述
0x0f对应的8位二进制数为00001111;
P2M1 &= ~(0X0F),由于要保证高四位的值不受影响,所以先对00001111取反,得到11110000
再P2M1&=11110000,不会对高四位产生影响。得到P2M1=11110000,
对P2M0 |= (bitn),则P2M0=xxxx1111,高四位不在这个变量运算中发生改变。
第一次些博客,略显庸杂

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值