单片机的I/O引脚(输出篇)

时间:2023-03-15作者:佚名
一、I/O引脚的特性
单片机的外部属性就是它有众多的I/O引脚,如40脚封装的51系列,就有32个脚是I/O引脚。它们也叫单片机的并口。
这32个I/O引脚全是数字的(即只会出现或只允许0、1变化)。
这32个I/O引脚分成4组,每组8位(即8根I/O引脚),用P0、P1、P2、P3标注,每组里的各位用Px.y区别,如P0口的8位标记为P0.0~P0.7(x=0~3;y=0~7)。
当然,这四个口P0、P1、P2、P3是有区别的,它们都有另外的功能;若只做一般的I/O引脚用,可视它们是一样的(我们这一讲只考虑做一般的I/O引脚用)。
二、I/O引脚的寻址
这四个口P0、P1、P2、P3(共32根引线)在内部映射有4个8位专用寄存器,名字也叫P0、P1、P2、P3,对这4个寄存器进行操作,也就可对32根引线进行操作(它们一一对应),很方便。
这里介绍一下字操作、字节操作、位操作的概念:字是由字节组成的,一个字节为8位二进制。字的位数由CPU的位数(或CPU里寄存器的位数)决定,即字长;若CPU为8位机,则字长为8位,正好等于一个字节;若CPU为16位机,则字长为16位,所以字操作时,一次就对两个字节进行处理,同理,我们就知道当CPU为32位机、64位机时,字操作所处理的字节数了。所谓字节操作,就是一次对8位二进制同时进行操作。说到这里,大家肯定能回答什么叫位操作了,即对一个字节里的某一位进行操作。再次强调一下,以上所讲的操作、处理,就是对I/O引脚的寻址、就是执行指令的过程,执行的结果就是各位变0或1。
有了以上概念,我们就可以告诉大家,这四个口P0、P1、P2、P3即可字节操作,也可位操作。(同学们好好想一想,拿P1口做例,字节操作是怎么回事?位操作又是怎么回事?)再进一步,操作的含义是什么呢?答:输入和输出,即I/O。这32根线,每一根都可以输入和输出,输入是单片机从外部接收数据和命令、感知外部世界的过程;输出是单片机根据设定、经过运算、甚至是智能的对外部世界作出反应,进行控制的过程。从指令的角度看,输入和输出稍有不同,输入稍复杂一些,所以,51单片机的这32个输入和输出口,也叫准双向口。我们下边先讲简单的输 出过程,而把输入过程放在后边的讲座里。

单片机的I/O引脚(输出篇)
三、I/O引脚的输出
在第一讲里,在最小系统的电路图里,大家已知P1口和P3口接了16只发光二极管,现在我们将这两个口作为输出口用,很明白,当其中的某个脚为1时,该脚所接的LED是“灭”的;反之,为0时,则“亮”。如下图所示。可见,这里的亮或灭是由硬件的接法决定的(若换一种接法,亮灭的电平会颠倒的)。
由此我们也看出,学习单片机,软、硬件是分不开的,这是它的显著的特点。
下面给大家介绍几条I/O引脚输出的指令:
先介绍指令格式
【标号:】操作码操作数1,操作数2 【,操作数n】【;注释】
以上的指令格式中,方括号内的内容可有可无,若要的话,一定注意标点符号不能省略;操作码必有,它是简单的英语单词以助记符形式出现,便于记忆,它说明了操作的性质;操作数可有可无,可多可少,中间以逗号分隔,它和操作码之间至少空一格,它说明了操作的具体内容;注释也是可有可无,但规范和专业的做法是要有详细的注释,且不是简单的指令说明,而是其物理的、硬件的、实质性的解释。
字节输出的指令
Mov P1,#00000000B ;该指令可使P1口的8个脚(P1.0~P1.7)全部变为低电平,当然,P1口的8只发光管都会点亮;(指令中的操作数2也可写成#0、#0H,前者是10进制写法,后者是16进制写法,均可)
Mov P1,#11111111B ;这条指令相反,8只发光管都会灭。
位输出的指令
Clr P1.0 ;该指令使P1口的0脚变为低电平,它所接的那只发光管亮,不会影响其他。
而 Setb P1.0 这条指令就使P1口的0脚变为高电平。
有了以上这些准备,下面我们就来编一段程序,让P1口和P3口的发光管轮流点亮,每个发光管点亮200ms,轮流不息,俗称“流水灯”。
四、流水灯编程
1.字节方式处理
;****************************************
Org 0000H
;org为伪指令,告诉汇编程序,下面的指令从ROM的0000H处开始放
Main: Mov P1,#11111110B
Mov P3,#11111110B
;可见,以上两条指令使P1口的P1.0脚和P3口的P3.0脚所接发光管点亮
Lcall ys200ms
;上面是一条调用子程序指令,用意是让CPU执行一些其他无关的指令,耗费掉200ms的时间,让刚亮的两只发光管能亮200ms时间,否则,由于CPU执行指令太快,我们将无法分清哪只发光管亮了。
Mov P1,#11111101B
Mov P3,#11111101B ;很显然,换了两只发光管亮
Lcall ys200ms
Mov P1,#11111011B
Mov P3,#11111011B ;很显然,又换了两只发光管亮
Lcall ys200ms
Mov P1,#11110111B
Mov P3,#11110111B ;很显然,又换了两只发光管亮
Lcall ys200ms
Mov P1,#11101111B
Mov P3,#11101111B ;很显然,又换了两只发光管亮
Lcall ys200ms
Mov P1,#11011111B
Mov P3,#11011111B ;很显然,又换了两只发光管亮
Lcall ys200ms
Mov P1,#10111111B
Mov P3,#10111111B ;很显然,又换了两只发光管亮
Lcall ys200ms
Mov P1,#01111111B
Mov P3,#01111111B ;很显然,又换了两只发光管亮
Lcall ys200ms
;到此为止,P1口和P3口的发光管轮流亮了一遍
Ljmp main
;我们应该让CPU返回开始处,再次开始亮灯循环,上边这条指令就是无条件跳转指令,命令CPU跳回标号为main处,继续执行指令,永远往复。
以下给出延时子程序,以保持程序的完整性,但不讲解,以后再说。
Ys200ms: Mov r7,#4
Ys0: Mov r6,#100
Ys1: Mov r5,#250
Djnz r5,$
Djnz r6,ys1
Djnz r7,ys0
Ret
End
;************************************************************
位处理方式
;**************************************************
Org 0000H
Main: Mov P1,#0FFH
Mov P3,#0FFH ;先做准备工作,使所有LED全灭
Loop: Clr P1.0 ;P1.0脚所接发光管点亮
Clr P3.0 ;P3.0脚所接发光管点亮
Lcall ys200ms
Setb P1.0
Setb P3.0 ;在点亮下一只前,关掉已点亮的
Clr P1.1 ;P1.1脚所接发光管点亮
Clr P3.1 ;P3.1脚所接发光管点亮
Lcall ys200ms
Setb P1.1
Setb P3.1 ;在点亮下一只前,关掉已点亮的
Clr P1.2 ;P1.2脚所接发光管点亮
Clr P3.2 ;P3.2脚所接发光管点亮
Lcall ys200ms
Setb P1.2
Setb P3.2 ;在点亮下一只前,关掉已点亮的
Clr P1.3 ;P1.3脚所接发光管点亮
Clr P3.3 ;P3.3脚所接发光管点亮
Lcall ys200ms
Setb P1.3
Setb P3.3 ;在点亮下一只前,关掉已点亮的
Clr P1.4 ;P1.4脚所接发光管点亮
Clr P3.4 ;P3.4脚所接发光管点亮
Lcall ys200ms
Setb P1.4
Setb P3.4 ;在点亮下一只前,关掉已点亮的
Clr P1.5 ;P1.5脚所接发光管点亮
Clr P3.5 ;P3.5脚所接发光管点亮
Lcall ys200ms
Setb P1.5
Setb P3.5 ;在点亮下一只前,关掉已点亮的
Clr P1.6 ;P1.6脚所接发光管点亮
Clr P3.6 ;P3.6脚所接发光管点亮
Lcall ys200ms
Setb P1.6
Setb P3.6 ;在点亮下一只前,关掉已点亮的
Clr P1.7 ;P1.7脚所接发光管点亮
Clr P3.7 ;P3.7脚所接发光管点亮
Lcall ys200ms
Setb P1.7 ;P1.7脚所接发光管灭
Setb P3.7 ;P3.7脚所接发光管灭
Ljmp Loop ;跳至标号LOOP处继续反复
;***********************************************************
延时子程序同上,不再重复。
以上我们可看出,完成相同的任务,但编写程序的方法却不一样,其实还有更多的方法完成这一任务。由此,我们的同学们应该领会到,“指令是死的,人是活的”,“条条大道通北京”,只要发挥我们的聪明才智,总是可以达到目的的。
最后强调一下,做这些发光管亮灭实验的意义何在?它的意义就在于:我们能使发光管随心所欲的亮和灭,且有精确的时间控制,就能对任何其他的外部设备进行控制,如彩灯、电动机、车床等,只是变一变相应的电路而已。

相关阅读

水电装修注意事项

新房子装修是一件大事情,需要人们注意的地方有很多,所以在装修的这段时间当中房主一般会忙的焦头烂额。房子当中的水电装修是很重要的一个方面,因为水电装修是在房子精装之...
2023-06-11
水电装修注意事项

H桥电路设计实例、拓扑结构、PCB设计

关于H桥,前面几篇篇文章基本上讲的差不多了,大家如果想看,可以点击下面文章去详细了解。电路一点通汇总了主要是关于H桥设计。 一、H桥基本拓扑结构 下图显示了H的基本拓扑结...
2023-07-31
H桥电路设计实例、拓扑结构、PCB设计

老电工教你看懂水电安装基本要求,赶紧来学习

目前建筑电气工程施工中存在的主要问题:专业工程承发包较混乱。材料市场混乱,产品质量差。施工现场安装专业人员配备严重不足。设计变更与现场施工不同步;图纸审核、方案策...
2023-06-11

轻载空载功率因数波动,到底是不是补偿故障?

在工厂配电运维里,无功补偿算得上是 “省电费大户”,可一旦判断错了,轻则白忙活,重则导致过补偿、被供电所罚款。我们团队就碰到过一个很典型的现场问题:某车间变压器...
2026-05-23
轻载空载功率因数波动,到底是不是补偿故障?

电动车充电器电路图解析 电动车充电器的输出端接入电池时会发生什么?

对于常见的一些动力电池充电器,如电动车充电器,设计时有时会考虑当充电器的输出端未接入电池时,充电器不输出电压。具体这个功能是怎样实现的呢?请看以下下图: 上图左边输...
2023-08-15
电动车充电器电路图解析 电动车充电器的输出端接入电池时会发生什么?

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目