PIC18系列单片机I/O端口操作寄存器及应用

发布者:upsilon30最新更新时间:2017-01-09 来源: eefocus关键字:PIC18系列  单片机  I  O端口  操作寄存器 手机看文章 扫描二维码
随时随地手机看文章

试验芯片:Microchip PIC 18F4550

集成开发环境:MPLAB IDE v8.53

编译器:Microchip C18

PIC18系列单片机是美国微芯公司(Microchip)8位单片机系列中的高档系列,其任一I/O引脚允许的最大灌电流或最大拉电流达25mA,可以直接驱动LED和继电器。PORTA、PORTB 和PORTE 的最大灌电流或最大拉电流总和为200mA,PORTC和PORTD的最大灌电流或最大拉电流总和为200mA,PORTF和PORTG的最大灌电流或最大拉电流总和为100mA(注:PIC18F4550没有这两个端口)。 

 

单片机和外设的交互都是通过I/O端口进行,每个I/O端口均有三个操作寄存器:

1、TRISx ——— 数据方向寄存器

用来控制 I/O 引脚的方向,即用来控制PORTx 是输入还是输出。

2、PORTx ——— 端口寄存器

用来锁存输出数据。当读PORTx 时,器件直接读 I/O 引脚电平(而不是锁存值)。

3、LATx ——— 输出数据锁存器

写端口就是写该锁存器(LATx)。数据锁存器也可以直接读写。如果外设没有使用该引脚,并且TRISx位配置该引脚为输出,则将锁存器内的数据输出到引脚。 

    在复位状态下,TRISx 的复位值为0xff,即TRISx 寄存器的8个位(D0 ~ D7)的值均为1。此时相应的PORTx 引脚被定义为输入,相应的输出驱动器呈现高阻状态。设置为0时表示相应的引脚定义为输出。

这里应注意的是写PORT就是写LAT,但读PORT和读LAT不同。读PORT读的是引脚的状态,无论该引脚设置为输入引脚还是输出引脚。而读LAT得到的是输出数据锁存器的存储值,读LAT得到的值可能和读PORT得到的值存在不同。

                     

在Microchip C18中,I/O端口三个操作寄存器可以按位(bit)操作,也可以按字节(byte)操作。

如端口B的方向寄存器用TRISB(或DDRB)表示,某一位用TRISBbits.TRISB0(或DDRB bits.RB0)表示。字节用TRISB(或DDRB)表示。

如端口B的PORT寄存器用PORTB表示,某一位用PORTBbits.RB0表示。字节用PORTB表示。

如端口B的输出数据锁存器用LATB表示,某一位用LATBbits. LATB0表示。字节用LATB表示。

    由于芯片复位后,LATx(PORTx)锁存器的值是随机的,为了排除 I/O 引脚电平出现毛刺的可能性,在初始化端口时,首先初始化该PORT 的数据锁存器(LAT 或PORT 寄存器),然后再初始化数据方向寄存器TRIS。

    下面用一个实例说明一下具体应用,下图PIC18F4550与电源、晶振和发光二极管组成一个最简单的8位单片机系统,要求同时点亮8个发光二极管。   

   

    首先可以选择按位操作的方法实现。不难看出,按位操作实际不是真正实现同时点亮与PORTB相连的8个发光二极管,只是发光二极管发光的延时效应掩盖了依次点亮的事实,使得最终效果达到了同时点亮。以下是按位操作方式的实现代码。

#include

void main(void)

{  

  PORTBbits.RB0=1;  

  TRISBbits.TRISB0=0; //点亮第1个LED  

  PORTBbits.RB1=1;  

  TRISBbits.TRISB1=0; //点亮第2个LED  

  PORTBbits.RB2=1;  

  TRISBbits.TRISB2=0; //点亮第3个LED  

  PORTBbits.RB3=1;  

  TRISBbits.TRISB3=0; //点亮第4个LED  

  PORTBbits.RB4=1;  

  TRISBbits.TRISB4=0; //点亮第5个LED  

  PORTBbits.RB5=1;  

  TRISBbits.TRISB5=0; //点亮第6个LED  

  PORTBbits.RB6=1;  

  TRISBbits.TRISB6=0; //点亮第7个LED  

  PORTBbits.RB7=1;  

  TRISBbits.TRISB7=0; //点亮第8个LED    

  while(1); 

    其次可以按字节操作来实现,代码比按位操作要简单很多,而且真正实现了同时点亮的要求。以下是按字节操作方式的实现代码。

#include

void main(void)

{  

  PORTB=0xff;  

  TRISB=0x00; //点亮8个LED    

  while(1); 

}


关键字:PIC18系列  单片机  I  O端口  操作寄存器 引用地址:PIC18系列单片机I/O端口操作寄存器及应用

上一篇:PIC18F2455/2550/4455/4550之通用串行总线USB
下一篇:PIC16F1937之定时器

推荐阅读最新更新时间:2024-03-16 15:29

并口实现AT89S系列单片机ISP功能
  1 ISP概述   从事单片机设计和开发的技术人员目前一般采用以下常用的方法开发单片机产品:首先利用单片机仿真设备进行硬件和软件的仿真调试,然后将调试通过的目标代码用程序烧写器固化到单片机的程序存储器中。在这个过程中,程序烧写器是必不可少的 开发工具 。程序烧写器一般价格较昂贵,对于初学者来说是一笔不小的开支,并将直接影响到初学者进一步学习开发单片机的积极性。另外,以后每修改一次源程序就要将单片机芯片从目标板上取出,再将更新后的目标代码重新固化到单片机芯片中,这样调试时就会由于频繁地插拔单片机芯片而对芯片和电路板带来相应的物理损坏。借助程序烧写器进行单片机编程的缺点是烧写设备昂贵,烧写操作麻烦,不便于实现在系统编程(I
[电源管理]
并口实现AT89S<font color='red'>系列</font><font color='red'>单片机</font>ISP功能
选择微控制器十个步骤
选择适合某个产品使用的微处理器是一项艰巨的任务。不仅要考虑许多技术因素,而且要考虑可能影响到项目成败的成本和交货时间等商业问题。 在项目刚启动时,人们经常压抑不住马上动手的欲望,在系统细节出台之前就准备微控制器选型了。这当然不是个好主意。 在微控制器方面做任何决策时,硬件和软件工程师首先应设计出系统的高层结构、框图和流程图,只有到那时才有足够的信息开始对微控制器选型进行合理的决策。此时遵循以下10个简单步骤可确保做出正确的选择。 步骤1:制作一份要求的硬件接口清单 利用大致的硬件框图制作出一份微控制器需要支持的所有外部接口清单。有两种常见的接口类型需要列出来。第一种是通信接口。 系统中一般会使用到USB、I2C、SPI、
[单片机]
选择<font color='red'>微控制器</font>十个步骤
51单片机定时器中断_51单片机中断系统_51单片机扩展中断的四种方法
  中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。   此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。   其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。   1.中断允许寄存器IE      图1.中断寄存器IE   中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH
[单片机]
51<font color='red'>单片机</font>定时器中断_51<font color='red'>单片机</font>中断系统_51<font color='red'>单片机</font>扩展中断的四种方法
单片机测控系统的接地作用及方式
1、单片机测控系统接地的作用及方式 接地的作用有两个,一是为了安全,二是为了抵制干扰。 将单片机测控系统接地后,可防止因存在漏电或产生电荷积累而使机壳带电。由于这种接地方法对人体起到了保护作用,故称之为“保护接地”。 2、单片机测控系统接地方式
[单片机]
<font color='red'>单片机</font>测控系统的接地作用及方式
STM32之模拟I2C读取加速度传感器
前言:由于之前学会了SPI,软硬件SPI都会了,发现只要读懂时序图,其他都是小菜一碟,I2C也是如此,不过本少爷还是花了1天时间去理解了I2C的一些知识,发现模拟比硬件更能理解其中的工作原理,虽然速度慢点。 废话:时间有限,暂时写一点核心内容,该内容本人从MMA8451Q加速度传感器的手册上读的。坑爹的新浪居然不支持我上传图片,很无奈 正文: ------------------------------------------------模拟I2C---------------------------------------------------- 1.start 2.写入7位device地址+1位写W 3.等待从设备握
[单片机]
基于单片机控制的数字移相器设计方案
简 述 移相电路常用于同步检测器的数据处理中。目前资料上有很多移相电路,其实现方法多种多样,大致可分为模拟式和数字式移相器两类。模拟式移相器的电路较为复杂、线性差、测试精度低;数字式移相器大多以标准逻辑器件按传统数字系统设计方法设计而成,其缺点为功耗大、可靠性低。本文介绍的基于单片机控制的数字移相器,采用环形队列实现信号波形的任意相位移相,并且保持波形的幅度、频率不变。其测试精度高,失真度小。系统原理方框图如图1所示。 1系统硬件电路设计 本系统的硬件电路主要由输入信号倍频电路、AT89C51单片机、A/D转换器、D/A转换器、6116存储器及键盘/显示等电路构成。 1.1输入信号倍频电路 倍频
[单片机]
基于<font color='red'>单片机</font>控制的数字移相器设计方案
基于AT89C51单片机和放大器实现音频信号均幅控制放大电路的设计
引言 现在的学校,有许多已经采用计算机加网络多媒体系统来进行现场教学。此外,工程施工人员在施工现场进行对讲通话,驾驶人员在开动的坦克等自行火炮车辆上进行通话等,都避免不了讲话时嘈杂的背景噪声或无线干扰(包括网络射频干扰),因而声音有大有小。怎样才能使听到的广播声或耳机中说话的声音平稳清晰,本文给出了一种用SG270、LM4884电路配合AT89C51单片机来解决干扰问题的实现方案。 1 电路主要器件 1.1 SG270放大器 SG270电路为国产工业级(-40℃~+85℃)可控增益音频放大器,该芯片的1、2脚为正、反相信号输人端,A、B、C为压控输入端,增益控制电压范围为2.1~2.5 V,可通过输出反馈信号来即时进行自动增益
[单片机]
基于AT89C51<font color='red'>单片机</font>和放大器实现音频信号均幅控制放大电路的设计
车载MCU,又要变天了
要说MCU未来两年还能怎么变?除了加入AI加速器,或者从Cortex-M核心切换到RISC-V核心,就是集成新型存储器。 2月28日,英飞凌宣布新一代MCU AURIX TC4x 即将量产,与传统MCU不同,本代产品引入 RRAM 非易失存储介质(NVM)。无独有偶,ISSCC 2024上,瑞萨宣布已开发出用于嵌入式(包括MCU)的STT-MRAM电路技术的测试芯片。而早在2022年,意法半导体就发布Stellar P6车规MCU,彼时产品中就采用了PCM。 这预示着新型存储的MCU终于要正式和我们见面,这意味着,MCU制程技术要全面朝28nm以下进发,而第一个将要改变的市场,就是车载MCU市场。 车载MCU升级的另
[汽车电子]
车载<font color='red'>MCU</font>,又要变天了
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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