51单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问这个读的是锁存器还是引脚?
答案:3 信息版本:手机版
解决时间 2019-01-01 23:25
已解决
2018-12-31 23:23
51单片机C语言里有读引脚和读锁存器之分吗?这个P1 = P1 || 5; 请问这个读的是锁存器还是引脚?
最佳答案
2019-01-01 00:47
“P1 = P1 || 5;”
应该是P1 = P1 | 5;,如果编译成ANL指令的话就是读锁存器。
“据说C的时候编译器自动写1”
谣言。追问ANL是读锁存器,但是我这现在是C语言啊 ,到底是读的是锁存器还是引脚呢??P1 = P1 | 5;这个。或者比如a = P1 | 5;读的是引脚还是锁存器追答要看编译器编译出的是什么玩意儿。C不是汇编,究竟是读引脚还是读锁存器应当以汇编为准。
另外犯了个低级错误:应当是ORL指令。
P1 = P1 | 5在Keil PK51中编译出来是ORL P1,#0x05,是读锁存器,但并不代表所有编译器都是相同的编译结果。因此不能断言说C语言的什么什么就一定是读引脚或读锁存。C语言毕竟只是个中间商。追问光看C语言看不出来嘛?怎么可能呢?那我用C语言处理问题的时候我不知道是读的是引脚或者是锁存器那还怎么设计呢?追答只能以锁定编译器的前提下进行设计。
尤其对于嵌入式而言,正规的C语言程序开头都要声明“编译环境”的。
给你个典型的程序说明吧:
程序名称 Nam