PIC单片机PORT LAT寄存器的区别

    PIC单片机和外设的交互都是通过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。

    IAR 快捷键列表 嵌入式开发

    IAR 快捷键列表

    *Ctrl+Shift+V 列出剪切板中所有的字符串供选择粘贴 Ctrl+B 智能选择光标所在括弧内的区域,多次使用可选更大的区域 Ctrl+T 对选择区域进行自动缩进 Ctrl+K 注释掉选择区域 ...
    IAR更改代码字体 嵌入式开发

    IAR更改代码字体

    在IAR Option选项里,可供选择的字体太少,大多数还是不好看的。其实是可以通过配置文件调用所有系统字体的。如下: 首先在你的系统盘里找到这个文件,地址是: C:\Users\你的用户名\AppD...
    IAR常用快捷键和使用小技巧 嵌入式开发

    IAR常用快捷键和使用小技巧

    这篇文章主要是我在IAR使用过程中用到的一些很方便的快捷键和小技巧,方便自己查阅而使用。 1、复制和粘贴几行的部分代码 需求:有时候我们需要复制几行代码的后半部分,不需要复制前半部分。 方法:按住Al...