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

发布者:Howard_Sun最新更新时间:2015-03-24 来源: diangon关键字:单片机  IO引脚  输出 手机看文章 扫描二维码
随时随地手机看文章
一、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引脚的输出
在第一讲里,在最小系统的电路图里,大家已知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,轮流不息,俗称“流水灯”。[page]
四、流水灯编程
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处继续反复
;***********************************************************
延时子程序同上,不再重复。
以上我们可看出,完成相同的任务,但编写程序的方法却不一样,其实还有更多的方法完成这一任务。由此,我们的同学们应该领会到,“指令是死的,人是活的”,“条条大道通北京”,只要发挥我们的聪明才智,总是可以达到目的的。
最后强调一下,做这些发光管亮灭实验的意义何在?它的意义就在于:我们能使发光管随心所欲的亮和灭,且有精确的时间控制,就能对任何其他的外部设备进行控制,如彩灯、电动机、车床等,只是变一变相应的电路而已。

关键字:单片机  IO引脚  输出 引用地址:单片机的I/O引脚(输出篇)

上一篇:单片机最小系统的“烧片”问题
下一篇:什么是单片机?单片机是如何工作的?

推荐阅读最新更新时间:2024-03-16 13:55

平凡单片机教学——前言
新8051教程 前言 传统的单片机教学,均是以单片机的结构为主线,先讲单片机的硬件结构,然后是指令,然后是软件编程,然后是单片机系统的扩展和各种外围器件的应用,最后再讲一些实例。按照此种教学结构,按照这种结构,学生普遍感到难学。试想,一个从未接触过计算机结构的人,甚至数字电路也是刚刚接触的人,要他去理解单片机内部结构,这实在不是个容易的事,至于很多书一开始就提出的总线、地址等概念,更是初学者难以理解的 不管用什么巧妙的比方都不容易理解。于是糊里糊涂地学完了第一部份,第二部份一开始就是寻址方式,更抽象,好多人直到学完单片机还不能理解寻址方式究竟是什么意思,为什么需要这么多寻址方式,刚开始学当然更不懂了。然后是指令,111条指令,又不分
[单片机]
STM32单片机的PSAM卡驱动模块设计
引言 刷卡消费随着人们生活水平的提高已经成为常用的支付方式之一。为了保证刷卡消费的安全性,将PSAM卡内嵌于各种终端刷卡设备中。PSAM(Purchase SecureAccess Module,销售点终端安全存取模块),由IC卡发行主管部门或者应用主管机构发行,是可以用于对IC卡进行脱机消费交易认证的安全认证卡,主要应用于商用POS、网点终端、直连终端等设备上,支持多级发卡机制,适用于多应用的环境,符合识别卡、带触点的集成电路卡标准、ISO/IEC 7816—1/2/3/4以及《中国人民银行PSAM卡规范》。 1 PSAM卡简介 PSAM卡是接触式CPU卡的一种。CPU卡也称智能卡,卡内集成电路带有微处理CPU,存储单元
[单片机]
STM32<font color='red'>单片机</font>的PSAM卡驱动模块设计
接口设计更简便 微芯推出强化图形处理MCU
微芯(Microchip)推出PIC32MZ DA系列,共计40款强化图形处理的32位微控制器(MCU),因应市场对人性化接口开发的需求。辅以软件配套如MPLAB Harmony软件架构、硬件配套如附带maXTouch之多媒体开发板II (MEB-II),提供设计上更便利、更便宜的完整解决方案。 内建2D图形处理器(GPU)、32 MB之DDR2 DRAM,配合2MB闪存、640KB RAM、12位模拟数字转换器(ADC)等其他相关组件,PIC32MZ DA系列毋须外接其他处理器或内存,即可运行动画、游戏等高阶影像信息;透过附属图型液晶显示(GLCD)控制器,可同时处理多达3个图层,缩放、旋转控制对象透明度, 并支持24位颜色深度
[半导体设计/制造]
MAX517与单片机的I2C总线数据通信
摘要:介绍了I2C总线的特点及数据通信的基本协议,并以AT89C51单片机与美国MAXIM公司的8位电压输出DAC数模转换器MAX517之间的通信为例,详细介绍了通过I2C总线进行数据通信的具体硬件电路连接和其通信子程序的编程方法。 关键词:I2C总线;AT89C51;MAX517;数据通信 1 I2C总线的特点及基本通信协议 I2C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线串行数据线和串行时钟线即可使连接于总线上的器件之间实现信息传送,同时可通过对器件进行软件寻址,而不是对硬件进行片选寻址的方式来节约通信线数目,从而减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了设计时间,
[应用]
基于单片机的无功补偿控制器设计
在工业和生活用电负载中,阻感负载占有很大的比例。异步电动机、变压器、荧光灯等都是典型的阻感负载。异步电动机和变压器所消耗的无功功率在电力系统所提供的无功功率中占有很高的比例。电力系统中的电抗器和架空线等也消耗一些无功功率。阻感负载必须吸收无功功率才能正常工作,这是由其本身的工作性质决定的。最合理的方法就是在这些感性设备附近及线路适当位置并联电容器组来进行无功补偿。在电力系统中,采用无功补偿的方法来提高功率因数、减少无功损耗,是改善供电质量、提高设备利用率的重要手段之一。 1 以ATT7022A为核心的无功补偿器介绍 进行无功补偿的前提是能准确地测量电网的运行状况,主要有功功率、无功功率、功率因数、谐波状况等。ATT70
[单片机]
基于<font color='red'>单片机</font>的无功补偿控制器设计
51单片机读写AT24C02串行E2PROM
24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。 ;这是将0600H地址中以下的8个数据写到24C02的01H为首址单元中去的汇编程序 ORG 0000H SCL BIT P3.4;定义24C02的串行时钟线 SDA BIT P3.5;定义24C02的串行数据线 LJMP START START:LCALL STAR;调用 MOV R2,#08H;一个数据有8位 MOV DPTR,#0600H;定义源数据的位置 LOOP:MOV A,#00H MOVC A,@A+DPTR LCALL
[单片机]
义隆电子新推工业规格MCU,面向小家电等应用
义隆电子股份有限公司进军八位微控制器(MCU)工规产品再下一城,新推出的芯片EM78P159N已量产上市,编号EM78F651N的芯片预计今年第二季供货,两颗芯片均具有低功耗且符合工业规格的通用型IC。 义隆电子表示,这两颗芯片的差异是:EM78P159N是OTP型MCU;而EM78F651N是闪存型MCU(可重复读写资料之ROM)。这两颗芯片皆拥有高抗干扰及抗静电的能力,同时,操作温度范围可达-40℃ ~ 85℃,可广泛的应用于小家电产品、安全防护(如烟雾警报器、密码锁)、汽机车警报器等产品。 义隆电子指出,EM78P159N的简易规格为1K*13 Bit ROM,48 Byte RAM,I/O最大可达15个,另提供三种工作
[新品]
基于森国科MCU SPIN的落地扇和循环扇应用方案
本期内容重点介绍,针对三相低压风扇电机驱动,森国科SGK32G031芯片可提供的一款高性价比解决方案,加速实现低功耗、轻量化、节能化的落地扇&循环扇应用。 森国科MCU SPIN(SGK32G031)芯片 高性能 高可靠性 芯片采用32-bit Arm Cortex-M0内核,主频60MHZ,内置USART ,集成业内领先的高采样率的高速12bit ADC ,集成2个高速 模拟 比较器 ,2个OPA 运算放大器 , 硬件 除法器; 芯片针对电机应用进行了多项设计优化,具备了高精准高可靠 时钟 系统、可支持移相的 TI MER、以及-40℃~105℃增强 工业 级工作温度范围等多项高可靠性优势。 小尺寸、多应用 芯片采用Q
[嵌入式]
基于森国科<font color='red'>MCU</font> SPIN的落地扇和循环扇应用方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved