单片机的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处继续反复
;***********************************************************
延时子程序同上,不再重复。
以上我们可看出,完成相同的任务,但编写程序的方法却不一样,其实还有更多的方法完成这一任务。由此,我们的同学们应该领会到,“指令是死的,人是活的”,“条条大道通北京”,只要发挥我们的聪明才智,总是可以达到目的的。
最后强调一下,做这些发光管亮灭实验的意义何在?它的意义就在于:我们能使发光管随心所欲的亮和灭,且有精确的时间控制,就能对任何其他的外部设备进行控制,如彩灯、电动机、车床等,只是变一变相应的电路而已。

相关阅读

低成本小家电智能风扇设计方案

分享一型已量产的风扇设计方案。 I下面分功能模块来讲解下: 电源部分 该电源部分采用小家电常用的阻容降压电路,阻容降压的特点是成本低,缺点为电源不隔离,不安全,且提供的...
2023-08-01
低成本小家电智能风扇设计方案

使用太阳能电池电源的锂离子电池充电器电路图

上述设计图是以太阳能电池/光伏为电源供电的锂离子电池充电器的电路图。 该电子电路将受控的电流和 6V 电压从太阳能电池馈送到 3.6v 锂离子电池。电流限制为 300mA,电压限制为 4....
2023-08-09
使用太阳能电池电源的锂离子电池充电器电路图

汽车电瓶电压不稳定怎么办

在汽车上电瓶是重要的组成部件之一,汽车打火及电子元件的正常工作,都离不开汽车电瓶,那么当汽车电瓶出现电压不稳的问题时,应该怎么解决,下面与电工之友小编一起来看下。...
2023-06-26
汽车电瓶电压不稳定怎么办

家用电压220V用地线代替零线,火线接通后,电器能正常工作吗?

大家好,我是水电小知识,每天学习一点水电小知识。对家用交流220v来说,火线接通,然后用地线代替零线,用电器虽然可以正常工作,但这是违反规定的,不安全的。接下来给大家分...
2023-06-11
家用电压220V用地线代替零线,火线接通后,电器能正常工作吗?

三相电机“紧急”停车制动的电路

一、电路是干嘛的? 这是工业现场很实用的三相电机紧急停车 + 能耗制动电路。电机正常运行时由接触器 KM1 控制;按下停止按钮后,电机不仅断电,还会通过接触器 KM2 接入制动电阻,实...
2026-06-03
三相电机“紧急”停车制动的电路

热销商品

手术衣一次性防护服打农药防尘实验服参观服加厚透气无纺布隔离衣

手术衣一次性防护服,作为一种重要的医疗防护用品,广泛应用于医院、实验室等场所。它采用加厚透气无纺布制成,具有优良的防尘、防污、防病毒能力,能有效保护医护人员免...
14

欧普照明led灯泡e27/e14大小螺口超亮家用节能灯螺旋暖白光球泡

欧普照明LED灯泡,适用于E27和E14两种常见螺口,是您家用照明的理想选择。这款灯泡采用先进LED技术,亮度超群,瞬间点亮,无需等待,为您提供明亮舒适的光环境。同时,它节能环...
3.59

LED柜内照明灯 AC220V 4W 7W配电箱导轨式 LL10-W 高压柜内照明灯

LED柜内照明灯AC220V 4W/7W配电箱导轨式LL10-W是一款专为高压柜、配电箱等封闭电气设备设计的紧凑型照明产品。采用高效LED光源,功耗低(4W/7W可选),亮度高,寿命长,节能...
7

密封胶条包邮耐磨耐高温耐腐蚀圆柱棒丁晴/氟胶实心硅胶胶条红色

本品采用优质丁腈橡胶(NBR)或氟橡胶(FKM)及实心硅胶材质制成,呈红色圆柱棒状,具备卓越的耐磨、耐高温(-40℃至+200℃以上,氟胶可达250℃)、耐腐蚀性能,适用于酸、碱、油类等...
1

小木锤木锤子实木木榔头圆头木锤实木棰木头锤子木柄锤黄檀手工锤

小木锤采用优质黄檀木精心打造,通体实木结构,质地坚硬、纹理细腻,手感温润舒适。圆头设计兼顾敲击与整形功能,适用于木工、雕刻、家具组装及日常维修等场景。木柄经精...
3.4

网站栏目