单片机汇编程序读引脚问题

单片机汇编程序读引脚问题,第1张

MOV P0,#FFH 这条指令是向P0的锁存器写高电平! 同时给P0引脚也输出高电平了!但是如果P0 端口被强负载拉低,则引脚就为低(如我们外部接一个开关,被按下的时候),即P0的引脚电平与外部负载有直接关系的!

如果我们要读取外表数据(读引脚),则我们必须先执行这条指令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,就看你想读取什么条件下的值了(你想断开还是不想断开)。

希望我的回答能对你有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11944623.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存