你好!为什么单片机并行口用于输入时要先向端口写“1”

作者&投稿:叶喻 (若有异议请与网页底部的电邮联系)
为什么单片机并行口用于输入时要先向端口写"1"~

可能你的问题没有问到点子上。设置端口的工作模式是由端口寄存器决定的。不同厂家的设置不一样甚至相反。
比如PB口需要设置为输入,则需要先向B口控制寄存器写入为I/O工作模式,再向B口方向寄存器写入方向模式。针对PIC单片机,只需向B口寄存器写入0xFF;表示B口为输入;如果写入0x0F;则B口高4位为输出,第4位为输入。
像51单片机端口是固定的,则只需要向端口写0 表示输出,写1表示输入。

先写1,是使I/O脚输出为高电平,拉高了,是写到内部的并行口的寄存器了。原每个I/O脚即可输出,也可输入,当写0后,使输出状态为低电平,这样,再作输入,读引脚时就会读入0,不管外部的输入状态是什么都只能读入0,这样,读入的数据就是错误的。而先写1后,当外部输入0,读入的也是0,外部输入1,读入的也是1,读入的数据才与外部相同。

这和io口的内部电路有关,写1后该口被拉至高电平,在没有低电平输入是始终为1。如果不写1,该io口被悬空,状态不确定。


单片机中的外接晶振为什么要并上两个电容 ??为什么好要接到啊?
单片机的外接晶振要对地连接两个电容,这两个电容是晶体振荡器的两个负载电容器,起着匹配负载频率的作用,有了这两个电容器,电路更容易起振,频率更为稳定。不同的晶振,要求不同的负载电容器。

单片机中的外接晶振为什么要并上两个电容 ??为什么好要接到啊?
组成谐振回路。模电里面电容三点式知道吧 后一个问题看不懂。。

为什么说学单片机用C语言比较好?为什么说C语言的可移植性好?体现在哪...
汇编语言,需要你了解该单片机的各个寄存器,端口。这些和单片机的硬件关系很大,所以你需要知道这个单片机的硬件结构,而移植到另一款单片机时,由于硬件结构不同,可能就不能用了 而C语言,不需要知道硬件方面是怎么运算的,将数据放在哪个数据区。而且C语言是高级语言较易理解和掌握。所以说,C语言比较好...

单片机芯片的作用
可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。以8051单片机为例讲解单片机的引脚...

为什么单片机需要一个晶振,晶振越大越好还是越小越好
晶振好比单片机的心脏,如果没有心脏起跳,单片机无法工作,晶振值越大,单片机运行速度越快,有时并不是速度越快越好,对于电子电路而言,速度够用就是最好,速度越快越容易受干扰,可靠性越差!

单片机用c语言好还是汇编语言,为什么???
各有各的好。汇编产生的代码少,程序占用单片机空间小,速度运行快,可移植性差。C语言可移植性强,相对于汇编程序产生的代码多占用空间大,运行速度稍微慢些(程序不大时感觉不明显)。

AVR单片机这么好,为什么还有这么多人用PIC
这个每个人都有自己熟悉的一些知识,用起来当然用熟悉的,再说,每款单片机都有自己的优劣,PIC电压适用范围很宽,也就是说,抗干扰就比较强,AVR只是比较接近ARM而已,有的地方还不如51,比如51就有数据和地址总线,AVR就没有。用51的人绝对比用AVR的人多的多。

学嵌入式好还是单片机好?!为什么?现在各自的前景咋样?!不懂的不要乱...
过去阶段:熟悉电子技术者,侧重于对单片机;熟悉 IT 技术者,侧重于嵌入式系统。现在及将来:两种应用模式的并存与互补 由于嵌入式系统最大、最广、最底层的应用是传统电子技术领域的智能化改造,因此,以通晓对象专业的电子技术队伍为主,用最少的嵌入式系统软、硬件开销,以8位机为主,带有浓重的电子...

为什么好多单片机在给电源供电时都使用了7805芯片,不可以直接用5V的电源...
为了保证单片机电源的稳定,没有干扰。单片机的电源必须稳定并且没有干扰,电源由外部稳压电源提供必然是长线引入,容易带入干扰或发生意外造成电压值错误,而在电路中用廉价的三端稳压器做电源,稳压输出端就在电路板上,稳压质量高,而稳压器输入端的电压范围很宽,有稳压器隔离不容易发生意外。

单片机的编程用C语言好还是汇编语言好。为什么?
一般都用C语言编程。只有在C解决不了和代码效率比较高的时候才会使用汇编。很明显,C语言容易编程,更容易模块化编程,容易学习,会的人多。编写同一个程序,C语言所花的时间平均比汇编短很多。而且对应不同的单片机平台,汇编语言都是不同的,而C语言是通用的。鉴于C语言有这么多好处,建议你用C语言...

长丰县18767565969: 你好!为什么单片机并行口用于输入时要先向端口写“1” -
戊修尼麦: 这和io口的内部电路有关,写1后该口被拉至高电平,在没有低电平输入是始终为1.如果不写1,该io口被悬空,状态不确定.

长丰县18767565969: 1;单片机的并行口都是准双向,在作输入时,应先写1.为什么有些程序例子没有这样做? -
戊修尼麦: 因为有的时候你这个口从初始化就没有用过,再加上单片机复位时引脚是高电平的,所以就不必写了,但是如果你一个IO口一段时间作为输入,另一段时间作为输出的话,就要在接受输入数据时先写1了哈,我这是自己用的过程中想到的哈,你可以参考下哈,我感觉应该是这个样子的哈

长丰县18767565969: 单片机的四个并行口可以做准双向IO使用,作为输入口为什么必须输入高电平
戊修尼麦: 不是一定的 你说的那种I/O是开漏的,如果输入低电平,该口无论输入高低电平都会被拉至低电平,也就无法正确识别输入电平 还有其它不同的I/O类型,另说

长丰县18767565969: 单片机并行口的使用方法? -
戊修尼麦: 一、传统 51 单片机的并行口不需要特别设置端口的属性为输入或输出,读端口自动为输入,写端口自动处理为输出.开机后,端口自动弱输出 二、PIC、AVR、Holtek、EMC 等单片机是需要设置端口的 输入/输出 功能的,可对并行口的每一位单独设置为输入或输出.设置为输入后,可读端口的状态;设置为输出后,可对端口的每位进行单独的输出控制.如果需要改变 IO 口的输入/输出属性,必须对方向控制寄存器另行处理 三、PIC、Holtek、EMC 的端口方向控制寄存器设置为 1 时选为输入,0 时输出;AVR 的相反,1 选择输出,0 选择输入.

长丰县18767565969: 单片机的串行口和并行口有什么不同,它们各执行什么功能,可以详细讲解下单片机的整个工作步骤 -
戊修尼麦: 串口:实现相互通信只用两根线 发,收 比如你要发 0xaa 你就往io口写10101010就行了 总共发了8次并口:假如是8个io 发0xaa你只需要向各个第一个io写1第二个写0 一次类推发一次就完成了串口省io 并口速度快

长丰县18767565969: MCS - 51单片机有几个并行I/O口,它们作为输入口时应注意哪些问题? -
戊修尼麦: 40个引脚.4个 并行I/0 口,p0要接上啦电阻才可以用,单做并行口时介意不加.另p1,p2,p3单片机内部产家以有加上啦电阻.

长丰县18767565969: 为什么单片机的读输入的时候,都要口写1 -
戊修尼麦: 那是51系列吧,我是这样理解的,51单片机的IO口都是漏极开路形式的,就算是P0口在IO模式下也是,读IO前先写1,是为了把低端晶体管关闭,这样IO就变成高阻输入态,尽管有个几百K的片内上拉电阻. 如果不先写1,IO输出寄存器可能还锁存着0,这样低端晶体管就一直导通,无论你怎么读都只能读到0

长丰县18767565969: 51单片机P口做输入时需要先向其写1,为什么? -
戊修尼麦: 如图是端口内部结构,写入 1 ,则 Q' = 0 ,V2 截止,等于输出部分断路,端口只有上拉电阻,引脚是高电平,准备接受输入信号. 如果端口曾经输入 0 ,锁存器 Q' = 1 ,V2 导通, 输入信号被 V2 接地,CPU 只能读入 0 .

长丰县18767565969: c51单片机的并行IO口为什么不能直接进行输入输出操作? -
戊修尼麦: 你好!可以直接进行操作的呀

长丰县18767565969: 单片机如何设置并行口 -
戊修尼麦: 不太明白你的意思,每个口也就是I/O口,可进行位操作,既可以做输出也可以做输入,输出时跟驱动能力有关,一般现在得mcu驱动能力都提高了;做输入时也可以对其阻抗进行设置,如作为A/D转换时就得把其设置成高阻态. 这些操作都是通过指令对内部的寄存器进行操作得以实现.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网