PIC24FJ32的IO端口使用简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NOTE1-PIC24FJ32GA004系列的IO端口使用简介介绍针对PIC24FJ32GA004或相同系列单片机IO端口使用。
1、IO寄存器
TRISx:方向寄存器
PORTx:端口寄存器
LATx:锁存寄存器
ODCx:漏极输出控制寄存器
2、寄存器使用
TRISx:控制端口输入输出属性。其中某位为1,引脚输入(input);为0,引脚输出(output)。
PORTx:读PORTX,是直接读引脚上的电平状态(见图)。
写PORTX,将数值写入引脚数据锁存器(见图)。
PIC单片机引脚操作模式为“读出--修改--写入”,使用PORTX操作引脚时应注意两点,一是在单片机初始化之后的运行中尽量不改变端口输入输出方向,容易出问题,二是IO端口避免链接容性负载,此种在高速操作IO端口时会出问题,比如输出快速变化的高低电平时,每次输出都会读取一次端口寄存器数值。
LATx:读LATX,得到保存在端口数据锁存器中的值(该值为写LATX或PORTX后所得)。
写LATx,讲数值写入引脚数据锁存器,与写PORTX效果相同。
通过LATX操作端口IO,可避免上述因“读出--修改--写入”模式造成的问题。
ODCx:将引脚的相应位置1可配置引脚为漏极开路输出。
3、IO端口使用原则
(1)端口用作出入,需要直接读取外部引脚上的电平状态,使用PORTX寄存器:int V ALUE=PORTA;
(2)端口用作输出,输出高低电平,驱动芯片等使用LATX寄存器:
LATA=0XFFEE;
4、IO端口使用的位操作
可以使用P24FJ32GA004.h中定义的位操作宏定义对单片机的IO端口以及其他众多单片机寄存器进行位操作。
如:_LATB0=1; RB0输出高电平
以端口B为例,针对PIC24F系列的位操作被定义如下形式:
/* TRISB */
#define _TRISB0 TRISBbits.TRISB0
#define _TRISB1 TRISBbits.TRISB1
……
#define _TRISB15 TRISBbits.TRISB15
/* PORTB */
#define _RB0 PORTBbits.RB0
#define _RB1 PORTBbits.RB1
……
#define _RB15 PORTBbits.RB15
/* LATB */
#define _LATB0 TB0
#define _LATB1 TB1
……
#define _LATB15 TB15
/* ODCB */
#define _ODB0 ODCBbits.ODB0
#define _ODB1 ODCBbits.ODB1 ……
#define _ODB15 ODCBbits.ODB15