设为首页  |  加入收藏
新闻动态
输入输出程序设计考虑
发布人:管理员   发布时间:2014-4-23

大多数片内I/O装置是易于程序设计的。
如果一个口的一部分口线用作输入,另一部分口线用作输入,另一部分口线用作输出,当作该口时,要特别小
心。现考虑利用P1.0作为输入,随后使P1.1翻转,作为输出。看来用下列指令可完成上述任务:
ORB  IOPORT1,#00000001B;设置P1.0作输入
XORB  IOPORT1,#000000010B;对P1.1取反
第一条指令将如愿工作,而第二条指令则存在2个潜在的问题。问题之一是:即使CPU向P1.1写了1,但引脚上
却可能呈现为0.比如,若P1.1脚直接连到NPN晶体管的基极,其射极接地,则CPU向P1.1写1后,晶体管导通,基极被箝位在0.7伏左右,从逻辑上呈现为0.XORB是一条“读--修改--写”类的指令,即先把口的状态读入CPU,在CPU中与指令中的立即数进行异或操作,以修改读入的状态,随后再把修改后的状态写到口上。现在CPU把P1.1的状态错读为“0”,与立即数中的“1”亦或后,得到“1”,微机消谐因此在上述接线情况下该指令执行后,始终向P1.1输出1,不可能使它翻转。可能存在的问题之二是:若XORB指令执行后,恰好P1.0被外接输入装置驱动为0.这样,XORB指令执行后,将向P1.0输出0.使P1.0不能再用作输入口线。

扫描添加微信账号