产品概述

单片机输入引脚 单片机引脚读写操作

小编 2024-10-09 产品概述 23 0

单片机引脚读写操作

自己总结下单片机引脚的用法。

使用单片机时肯定会用到单片机的IO引脚。以51单片机P1口为例。内部结构如图所示

当单片机进行写操作时,引脚锁存器(D触发器)CLK端接收有效电平,然后内部总线上需要写的数据就会通过D触发器传输到Q'。当写1时Q'为0,使MOSFET截止,因此外部引脚电平为1.当写0时Q'为1,MOSFET饱和导通,此时引脚可以看成接地,所以引脚为0。

如果对单片机IO口进行读操作。由图可以看出读操作包括读寄存器和读引脚。以前知道有这两种区别,但是从来没仔细区分过。从图中可以看出读寄存器时读寄存器上的三态缓冲器打开,Q端的值直接传到了内部总线上,而下面的读引脚三台缓冲器是高阻态,读引脚时则相反。

汇编语言中对读寄存器和读引脚做了一定的区别,但说实话我在看汇编代码时还是区分不清两者的区别。现在大家对单片机编程应该大部分采用的都是C语言,在我看来,C语言中已经极大的淡化了读寄存器还是读引脚的区别。

有些人说a=P1是读引脚(a是某个字符变量),P1=P1|0x00是读寄存器(可能是认为这里P1进行了一次逻辑运算,只有寄存器中的值才能进行逻辑运算),但我在用C语言时感觉用P1=P1|0x00也是读的引脚。也有些人说看经过编译器编译后的汇编代码才能分辩出两者的区别,不知道这里大家怎么看读引脚和读寄存器?

在读引脚时需要先向引脚锁存器中写1。因为如果引脚寄存器中是0的话会导通MOSFET,使外部端口一直是低电平,即使外面接的是高电平在读引脚的时候也读的是0。以前知道需要这样做,但读引脚的时候一直没写过1,发现读的也对,现在我觉得这样写不符合规范。

一般来说单片机在上电复位后默认引脚寄存器的值是1,这样一来关断了MOSFET,而我们在使用单片机的时候如果这个引脚作为输入,也不会让它变成一会儿输出一会儿输入,使得能够准确的读出外部端口的值。现在我在写程序时如果端口做为输入引脚,我会在初始化里对其写一次1。当然,以后就不用写了,因为写了一次1后没有其他的写操作,引脚锁存器中会一直保持这个值不变。当然,如果某个单片机引脚同时作为输出和输入引脚复用时,则必须在输出完成后变成输入前先向其写1,再读引脚的值。

单片机引脚读写操作

使用单片机时肯定会用到单片机的IO引脚。以51单片机P1口为例。内部结构如图所示

当单片机进行写操作时,引脚锁存器(D触发器)CLK端接收有效电平,然后内部总线上需要写的数据就会通过D触发器传输到Q'。当写1时Q'为0,使MOSFET截止,因此外部引脚电平为1.当写0时Q'为1,MOSFET饱和导通,此时引脚可以看成接地,所以引脚为0。

如果对单片机IO口进行读操作。由图可以看出读操作包括读寄存器和读引脚。以前知道有这两种区别,但是从来没仔细区分过。从图中可以看出读寄存器时读寄存器上的三态缓冲器打开,Q端的值直接传到了内部总线上,而下面的读引脚三台缓冲器是高阻态,读引脚时则相反。

汇编语言中对读寄存器和读引脚做了一定的区别,但说实话我在看汇编代码时还是区分不清两者的区别。现在大家对单片机编程应该大部分采用的都是C语言,在我看来,C语言中已经极大的淡化了读寄存器还是读引脚的区别。

有些人说a=P1是读引脚(a是某个字符变量),P1=P1|0x00是读寄存器(可能是认为这里P1进行了一次逻辑运算,只有寄存器中的值才能进行逻辑运算),但我在用C语言时感觉用P1=P1|0x00也是读的引脚。也有些人说看经过编译器编译后的汇编代码才能分辩出两者的区别,不知道这里大家怎么看读引脚和读寄存器?

在读引脚时需要先向引脚锁存器中写1。因为如果引脚寄存器中是0的话会导通MOSFET,使外部端口一直是低电平,即使外面接的是高电平在读引脚的时候也读的是0。以前知道需要这样做,但读引脚的时候一直没写过1,发现读的也对,现在我觉得这样写不符合规范。

一般来说单片机在上电复位后默认引脚寄存器的值是1,这样一来关断了MOSFET,而我们在使用单片机的时候如果这个引脚作为输入,也不会让它变成一会儿输出一会儿输入,使得能够准确的读出外部端口的值。现在我在写程序时如果端口做为输入引脚,我会在初始化里对其写一次1。当然,以后就不用写了,因为写了一次1后没有其他的写操作,引脚锁存器中会一直保持这个值不变。当然,如果某个单片机引脚同时作为输出和输入引脚复用时,则必须在输出完成后变成输入前先向其写1,再读引脚的值。

来源:网络整理,如涉及版权问题,请及时联系删除

相关问答

单片机引脚 怎么接?

单片机引脚的连接方式与具体应用有关,但一般遵循以下几个步骤:1.确定单片机型号:不同的单片机引脚排列和功能有所差异,需要根据具体型号来确定引脚连接方式...

proteus 单片机 端口 引脚 怎么连?

在Proteus中连接单片机的端口引脚需要进行以下步骤:1.打开Proteus软件并创建一个新的电路图。2.在库文件中选择你要使用的单片机型号,例如选择8051系列的...

单片机 电源 引脚 如何定义?

单片机的电源引脚用于提供电源给芯片,主要有两个引脚:VCC和GND。VCC是电源正极引脚,连接正电源,提供工作电压给单片机芯片和其它外围电路;而GND则是电源地引...

单片机 所有 引脚 都要焊吗?

不一定,因为单片机的引脚数很多,实际用到的引脚可能没有那么多,只需要把实际用到的引脚焊上即可。但是目前一般在制作电路板的时候会让厂家用机器进行贴片,机...

GD系列 单片机 晶振 引脚 能否做 输入 ?

GD系列单片机晶振引脚一般是专门用于连接外部晶振的引脚,一般情况下不建议将其设置为输入引脚。晶振引脚一般需要采用特定的电路连接晶振,以提供稳定的时钟信...

单片机 晶振 引脚 怎么接?

单片机晶振引脚一般有两个,一个是晶振输入引脚,一个是晶振输出引脚。晶振输入引脚需要连接到单片机的外部晶振,晶振输出引脚需要连接到单片机的晶振输入引脚。...

单片机 EA脚是什么功能?

单片机EA脚功能:单片机EA引脚表示存取外部程序代码之意,低电平动作,当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。EA引...单...

单片机 boot 引脚 功能?

单片机的boot引脚是用于引导启动芯片的引脚,通常在启动时用来加载程序或者固件。当boot引脚被拉低时,单片机会从外部设备如Flash存储器中加载程序或者固件。...

单片机 的外部中断仿真实验。在 单片机 P1口上接有8只LED。在外部中断0 输入引脚 (P3.2)接一只按钮开关K1?

中断处理函数感觉有些问题,for循环之前使用P1=0x0f;然后将for内的P1=0x0f;改为P1=~P1;同时for循环中应该需要调用延时函数Delay(10);这里的值看你自...

单片机引脚 功能?

如下:电源引脚:单片机需要通过引脚来接收供电,通常会有VCC引脚和GND引脚。VCC引脚连接到正电源,GND引脚连接到地。供电引脚是单片机正常工作的基础。复位引...

猜你喜欢