能直接对单片机的P0口的 0x80进行操作吗?

问题描述:

能直接对单片机的P0口的 0x80进行操作吗?
比如我们以前是这样写的:P0 = 0xfe;
这里既然这个P0是0x80的别名,那么我可不可以写成0x80 = 0xfe;
反正都是对0x80操作了.但是0x80好像又是一个常量,编译又不通过?难道这个真实的地址对于我们来说真的只能把它先sfr XX = 0x80;
1个回答 分类:综合 2014-09-17

问题解答:

我来补答
P0= 0xFE表示你往P0口对应的寄存器里送数据,这个数据是0xFEP0是0x80的别名?谁告诉你的?我们说P0口它寄存器所在的地址是0x80,不是说它和0x80等价(别名是等价的,例如一个人叫李勇,别名李工,你叫哪个名字都是指同一个人),但是这里的0x80是P0在单片机内部的地址,根本就没有等价之说.你也知道了0x80是个常数,0xFE也是常数 => 0x80=0xFE这不扯淡吗(好比1等于2?).P0=0xFE,而P0的0x80表示的是地址,意思是往单片机地址为0x81的内存里写上数据0xFE.sfr用于定义寄存器,sft aaa= 0x80;表示aaa寄存器在单片机内存地址为0x80的地方,aaa=5表示在单片机内存地址为0x80的地方写入数据,这个数据为5.sft用于声明寄存器在单片机内部的地址.也就是当你写数据时,将数据写入到哪里.
 
 
展开全文阅读
剩余:2000