
如果我们要读取外表数据(读引脚),则我们必须先执行这条指令MOV P0,#FFH,否则有可能你读不到外部的真实数据的(比如P0的锁存器为 “0”,你不执行 MOV P0,#FFH ,你读到的值一直为 “0”,因为内部锁存器把引脚拉低了)!即如果我们把 P0 作为输入,则先执行一条 MOV P0,#FFH,这样就可以读引脚了!
以下是我的理解,不知道对不对:1、要对P0输出“0xf0” --》 P0=0xf0;
2、读取P0引脚的值
回答:
--》直接用MOV A,P0(0x80),读取的是P0口与外部电路联通状态时的引脚实际值;
--》也可以先MOV P0,#0xff 将P0口与外部断开,在MOV A,P0(0x80)读取的是外部电路在P0口引脚处的实际值;
3、按照书上写的应该先对锁存器写“1”,也即是对P0锁存器写0xff,再读引脚值。可是这样跟前面时刻输出的0xf0不就冲突了吗?
回答: 对P0写1,实际上产生的动作就是 将P0口与外围电路断开。理解这一点就行了。至于你要不要写1,就看你想读取什么条件下的值了(你想断开还是不想断开)。
希望我的回答能对你有所帮助。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)