关于51单片机读引脚状态
时间:10-02
整理:3721RD
点击:
请问单片机读引脚时,对应的引脚得先写1才能读吗?写0的话,外部给高/低电平都只能读到0吗?
51单片机不需要这样的。
PIC单片机需要先设置状态位TRISB来控制PORTB的读、写状态
你可以直接拿来用 就像 if(P11 == 0) 或者其他的方式。
51单片机必须写1(或保证在读IO口前没有将IO口置0)。相关原理我在本论坛另一帖子有详细回复,不想在啰嗦了,可以搜一下。
我查了一些关于51的资料,上面说读外部状态时,对应的引脚得先写1,然后才能读引脚;但是我试着给引脚写0,然后读外部状态1,还是能读到1~
你写0的时候读回来的状态是对的吗?
比如外部高电平就读回来1,低电平时就读回来0
谢谢~我也试过了,写0后,还是能读到外部的1。~只是看了一些书上都写着读数据前要先位置1,问了老师也是这样说的。
我试着写0后~外部给个高电平~读引脚还是可以读到1的~(我用的是51的,I/O不用设置读写状态的)
如果真的像你说的那样给端口写了0,然后又能读出1,只能是以下三种情况:
1.写0语句被优化掉,实际端口仍输出1。你可以用电表量一下(可能性低)
2.单片机IO口被损坏(可能性高)
3.单片机没有损坏的情况下,IO也确实输出了0,这时只有可能将IO口直接接到电源端才可能读出1,而此时电源基本相当于通过IO口短接,IO口将很快被损坏。
看看这个吧
51单片机I/O口
读引脚方式,可以从端口引脚线上读入信息。这种方式下,CPU首先必须使欲读端口引脚所对应的锁存器置位。
例如要读取P1口低四位引脚上信号的程序为:
MOV P1,#0FH ;使P1口低四位锁存器置位
MOV A,P1 ;读P1口低四位引脚线信号
