关于单片机的引脚和输入输出问题
单片机引脚可以同时作为输入和输出端口吗?也就是说,比如我在程序中设定P0=0xF0,然后在外部将P1^7接地,也就是置为零,请问此时内部程序中会变成P0=0x80,还是依...
单片机引脚可以同时作为输入和输出端口吗?也就是说,比如我在程序中设定P0=0xF0,然后在外部将P1^7接地,也就是置为零,请问此时内部程序中会变成P0=0x80,还是依然为P0=0xF0?
展开
2个回答
展开全部
51 单片机,所有IO口都可以作为输入和输出,但不是"同时" 作为输入时,要先向其端口写1
然后再读取
如程序中设定P0=0xF0,然后在外部将P0^7接地,也就是置为零,
此时读取P0的话,得到P0=0x70 即最高位确实是0
但P0口内部没有上拉电阻的, 如果IO口外部不经电阻接电源的话,虽然你置1了,但你读取的外部的结果可不一定是1 即P0不一定等于0x70
P1-P3是内部是有上拉电阻的,所以若设P1=0xF0,然后再读取P1得到仍是P1=0xF0
若在外部将P1^7接地,则得到P1=0x70
所以多数增强型51单片机IO口内部有推挽管,同时有上拉和下拉电阻,有IO口配置寄存器,根据需要可配置成浮空 推挽 弱上拉等状态
然后再读取
如程序中设定P0=0xF0,然后在外部将P0^7接地,也就是置为零,
此时读取P0的话,得到P0=0x70 即最高位确实是0
但P0口内部没有上拉电阻的, 如果IO口外部不经电阻接电源的话,虽然你置1了,但你读取的外部的结果可不一定是1 即P0不一定等于0x70
P1-P3是内部是有上拉电阻的,所以若设P1=0xF0,然后再读取P1得到仍是P1=0xF0
若在外部将P1^7接地,则得到P1=0x70
所以多数增强型51单片机IO口内部有推挽管,同时有上拉和下拉电阻,有IO口配置寄存器,根据需要可配置成浮空 推挽 弱上拉等状态
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询