PIC单片机I/O口控制

本文详细介绍了嵌入式系统中I/O口配置的重要性,包括ANSELx、TRISx和PORTx/LATx寄存器的作用。TRIS寄存器用于设置数据方向,PORT用于读取实际I/O状态,而LAT则用于写入输出值。当定义I/O口为输入时,直接读取PORTx获取电平;为输出时,通过写入LATx设定电平。同时,模拟输入口需在ANSELx寄存器中设置。了解这些寄存器的使用是有效控制I/O口的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么配置I/O口:

I/O端口寄存器复位后默认为输入(输出高阻态);为实现I/O端口功能需要先对端口进行I/O口初始化

配置I/O口需要的几种寄存器:

ANSELx(模拟选择寄存器):0 = 数字I/O口,1 = 模拟输入口

TRISx(数据方向控制寄存器):0=输出模式(Out),1=输入模式(In)      

PORTx(读取器件引脚电平)

LATx(输出锁存器)

PORT与LAT寄存器区别:

rd port指令脉冲来的时候,管脚端平锁存到port中,也就是说要想获得正确的管脚状态,只有读取port寄存器,而如果去读lat寄存器,读到的输出锁存器的值,比如说你一开始设置管脚成输出,通过lat输出了一个0x55,然后你设置管脚成输出,这个时候管脚电平再外部电路的驱动下发生了变化编程了0x66,这个时候你读port才能读到0x66,而如果你去读lat则读到的是你上一次输出值,不是当前时刻管脚电平状态。这也就是lat和port的不同之所在。所以在做pic18的时候我们应该养成写则写lat,读则读port的好习惯

LAT是作为缓存使用的,PORT读的是I/O状态,所以,读I/O时用PORT,写I/O时用LAT。

总结一下:

1、I/O作为写输出时使用锁存器LAT;

2、I/O作为读输入时使用端口PORT;

***3.若定义IO口为输入,要得到IO端口的实际电平,则直接读取PORTx寄存器,若将IO口定义为输出,则通过写LATx来达到对IO口置高低电平操作。

4.当某个引脚配置成模拟IO时候,必须将其相应的TRISx配置成输入,这样才能读取到引脚上外部电压。

IO控制:https://blog.csdn.net/dmlk31/article/details/114162703?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162480988116780357284144%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162480988116780357284144&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-5-114162703.first_rank_v2_pc_rank_v29&utm_term=pic%E6%95%B0%E5%AD%97IO%E8%AE%BE%E7%BD%AE&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值