标题: 请问明明一个单片机置零的语句为什么要这么复杂呢... [打印本页]

作者: laopihappy123    时间: 2019-11-17 20:20
标题: 请问明明一个单片机置零的语句为什么要这么复杂呢...
本帖最后由 laopihappy123 于 2019-11-18 12:28 编辑

最近研究pwm ,下载了STC的例程,发现了里面这个指令,这条指令是让P3M1 清零的 但是,直接让他清零不就行了 为啥要这么复杂呢...请问..为什么呢?
难道是不能按位读取?
新手问问题 可能有点幼稚 还请大佬能给一点提示 真心求问..为什么呢?

批注 2019-11-17 201750.png (6.68 KB, 下载次数: 22)

批注 2019-11-17 201750.png

作者: xuyaqi    时间: 2019-11-18 06:36
这可不是在给P35置0,这是在为P35配置工作模式,让P3M1=0,P3M0=1,设置为推挽输出模式。

作者: whx.000    时间: 2019-11-18 07:57
这个要看这个芯片的寄存器手册,他这么做是因为寄存器的移位操作,看起来比较直观
作者: pcbboy    时间: 2019-11-18 08:03
这个不是引脚取反,是设置P3 口某IO的状态,比如高阻,开漏,准双向,推挽输出的设置,貌似不能直接简单取反能设置的。
作者: wulin    时间: 2019-11-18 08:04
这不是让P3.5 清零的指令,是设置P3.5 端口模式为推挽输出。
P3M0、P3M0是端口模式特殊功能寄存器,不支持位操作。
作者: yzwzfyz    时间: 2019-11-18 10:49
道理很简单:普通P35只有一个IO的功能,而STC的P35有多重功能。所以需要做功能的选择。
作者: laopihappy123    时间: 2019-11-18 12:25
xuyaqi 发表于 2019-11-18 06:36
这可不是在给P35置0,这是在为P35配置工作模式,让P3M1=0,P3M0=1,设置为推挽输出模式。

对对对,发现我写错了 ,其实我就是这个意思,我的疑问是为什么他要这么写,为什么不能直接写=0x(数值) 呢
作者: laopihappy123    时间: 2019-11-18 12:25
pcbboy 发表于 2019-11-18 08:03
这个不是引脚取反,是设置P3 口某IO的状态,比如高阻,开漏,准双向,推挽输出的设置,貌似不能直接简单取 ...

意思是不能位操作?
作者: laopihappy123    时间: 2019-11-18 12:26
wulin 发表于 2019-11-18 08:04
这不是让P3.5 清零的指令,是设置P3.5 端口模式为推挽输出。
P3M0、P3M0是端口模式特殊功能寄存器,不支持 ...

奥 是这样啊! 谢谢 不过为什么不能直接=0x(数值) 呢 而要用移位来操作呢?
作者: laopihappy123    时间: 2019-11-18 12:27
yzwzfyz 发表于 2019-11-18 10:49
道理很简单:普通P35只有一个IO的功能,而STC的P35有多重功能。所以需要做功能的选择。

嗯嗯 谢谢大佬解答 其实我想问的是为什么他这么写 而不是直接赋值=0x(数值)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1