关于51单片机的输入输出,高、低电平的问题【问题补充】

2019-07-16 00:13发布

本帖最后由 水雷 于 2013-6-14 17:50 编辑

【最新补充】需要用51单片机的端口实现这样一个功能:
67-1.jpg
1.先将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。
2.将P1.1、P1.2设置为输入状态,P1.0设为高电平输出,通过RK电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,即C1上的电压达到单片机高电平输入的门嵌电压时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T1。
3.将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。
4.再将P1.0、P1.2设置为输入状态,P1.1设为高电平输出,通过RT电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T2。。


赋值的话
理论上作为输出的时候只要将对应的管脚写1或者是写0,对应着51输出高电平或者是低电平;

而作为输入的时候,要先将对应的管脚写1,然后接收输入的的信号!
那么如何实现”检测P1.2为高电平”呢?之前想要让他做输入状态的话就已经要赋予1值了!(之前很多资料都是先拉高然后检测是否变低,这个好理解)

而且,还有一个问题就是,一旦 ”把某脚设置为输入状态“,以及”另某脚高电平输出“ 这两个都需要赋1值的话,第二步和第四步就突然变成一样的程序了=-=太囧了=-=

小弟初学,觉得这个程序应该挺好做的,但是一开始就晕了,求指教啊!!!谢谢!!!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
毛坦523416
1楼-- · 2019-07-16 05:20
作为输入是  先拉高  然后检测那一脚是低电平,  就输入了    你是检测出的  
  你可以参考矩阵键盘的程序设计中 检测是否有按键按下那部分代码  

评分

参与人数 1积分 +3 收起 理由 xiaoliu241 + 3 非常感谢您对提问者的无私帮助.

查看全部评分

Hoyloun
2楼-- · 2019-07-16 10:43
没什么区别,只是作输入时是以检测低电平为有效输入信号,当管脚没接负载而直接接到地0V或者低电平的时候就会将管脚的高电平拉低,不管你是作输入还是输出。

评分

参与人数 1积分 +3 收起 理由 xiaoliu241 + 3 非常感谢您对提问者的无私帮助.

查看全部评分

dongyumin
3楼-- · 2019-07-16 14:12
你可以参看51的数据手册,看看他的I/O口结构。
QQ图片20130606183815.jpg
panclimb
4楼-- · 2019-07-16 16:00
 精彩回答 2  元偷偷看……
znanwl
5楼-- · 2019-07-16 17:46
一楼说的很清楚,补充一点,为什么我们在键盘检测中不写1,是因为复位上电后,P0-P3寄存器默认为0xff,所以可以直接作为输入口使用
jstzhxyy
6楼-- · 2019-07-16 22:32
51单片机没有输入输出方向控制的,不像PIC单片机要设置TRIS

一周热门 更多>