如果我不将 8051 中的端口设置为输入或输出会怎样?
Posted
技术标签:
【中文标题】如果我不将 8051 中的端口设置为输入或输出会怎样?【英文标题】:What happens if I don't set a port in 8051 as input or output? 【发布时间】:2021-06-17 10:50:09 【问题描述】:我是初学者,最近才开始,所以如果这是一个愚蠢的问题,请多多包涵。
所以在 8051 MCU 中我们使用
MOV P1, #00H
或MOV P1, #0FFH
分别设置端口为输入或输出。
我的问题是,如果我没有特别提到端口是输入或输出,程序还能工作吗?
我正在尝试实现一个查找表,其中 P1 将获取输入(0-9)并显示其正方形
在 P2 中。
ORG 0000H
MOV DPTR, #TBLE
MOV P1, #0FFH
MOV P2, #00H
;Begin Transfer
NEXT: MOV A, P1
MOV R1, A
MOVC A, @A+DPTR
MOV P2, A
CJNE R1, #00H,NEXT
SJMP $
ORG 0100H
TBLE: DB 00H,01H,04H,09H,16H,25H,36H,49H,64H,81H
END
【问题讨论】:
【参考方案1】:所以在 8051 MCU 中我们使用
MOV P1, #00H
或MOV P1, #0FF
分别将端口设置为输入或输出。
这已经错了:
您使用MOV P1, #00H
将端口的所有引脚设置为低电平。如果P1
的所有引脚都out并且想要将所有引脚设置为高电平,您也可以使用MOV P1, #0FFH
。
在 8051 MCU 中,(几乎)所有引脚都是开漏输出:您可以将输出值为“高”的引脚拉至“低”,因此如果您想使用,可以将“高”输出到引脚它作为输入。
但是,您必须不时将输出引脚设置为“高”;否则引脚将始终为“低”,这绝对没有意义:
您可以简单地使用电源的负极而不是使用微控制器!
...如果我没有特别提到端口是输入还是输出...
P0
...P3
的重置值为0FFH
。
这意味着这些寄存器在启动 MCU 后具有0FFH
的值。如果您没有明确写入这些寄存器,它们将保留值0FFH
。
这也是有道理的:
如果初始值不是0FFH
,则某些引脚会在MOV P1, 0FFH
指令之前的几微秒内为“低”。
如果您有一个输入并且来自外部的值是“高”,那么如果P1
在执行MOV P1, 0FFH
之前包含另一个值,您将有一个快捷方式。
【讨论】:
以上是关于如果我不将 8051 中的端口设置为输入或输出会怎样?的主要内容,如果未能解决你的问题,请参考以下文章
c8051f320学习,单片机不外乎时钟IO串口USB等外设用法
AudioKit - 记录默认输入(麦克风)而不将其发送到输出
如何在不将 UIScrollView 的 delaysContentTouches 设置为 NO 的情况下快速点击它时使 UIScrollView 中的按钮突出显示