EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 697|回复: 0

[转帖] PIC16F877的PORTA笔记

[复制链接]

83

主题

19

回帖

275

E币

技术员

Rank: 2

积分
185
发表于 2017-4-25 13:57:26 | 显示全部楼层 |阅读模式
PORTA 和 TRISA 寄存器

PORTA是8位宽的双向端口。它所对应的数据方向寄存器是 TRISA(寄存器 3-2)。将 TRISA 的一个位置 1(= 1)可以将相应的 PORTA 引脚配置为输入(即,禁止输出驱动器) 。清零TRISA的一个位(= 0)可将相应的 PORTA 引脚配置为输出(即,将输出锁存器的内容输出到所选择的引脚)。

读 PORTA 寄存器(寄存器 3-1)读的是引脚的状态而写该寄存器将会写入端口锁存器。所有写操作都是读-修改-写操作。因此,写一个端口就意味着先读该端口的引脚电平,修改读到的值,然后再将改好的值写入端口数据锁存器。

即使在 PORTA 引脚用作模拟输入时,TRISA 寄存器(寄存器 3-2)仍然控制 PORTA 引脚的方向。当将PORTA引脚用作模拟输入时,用户必须确保 TRISA寄存器中的位保持为置 1 状态。  配置为模拟输入的 I/O 引脚总是读为0。

PORTA:bit 7-0 RA<7:0>:PORTA I/O 引脚位

1 = 端口引脚电平> VIH

0 = 端口引脚电平< VIL



bit 7-0 TRISA<7:0>: PORTA 三态控制位

1 = PORTA 引脚被配置为输入(三态)

0 = PORTA 引脚被配置为输出

注 1: TRISA<7:6> 在 XT、 HS 和 LP 振荡器模式下总是读为 1。



例:初始化 PORTA

注: 必须初始化ANSEL寄存器以将模拟通道配置为数字输入。配置为模拟输入的引脚将

读为0。

BANKSEL PORTA ;

CLRF PORTA ;Init PORTA

BANKSEL ANSEL ;

CLRF ANSEL ;digital I/O

BANKSEL TRISA ;

MOVLW 0Ch ;Set RA<3:2> as inputs

MOVWF TRISA ;and set RA<5:4,1:0>;as outputs



ANSEL 寄存器

ANSEL 寄存器(寄存器3-3)用于将I/O引脚的输入模式配置为模拟模式。将 ANSEL 中适当的位置 1 将导致对相应引脚的所有数字读操作返回 0,并使引脚的模拟功能正常工作。

ANSEL 位的状态对数字输出功能没有影响。 TRIS 清零且 ANSEL 置 1 的引脚仍作为数字输出,但输入模式将成为模拟模式。这会导致在受影响的端口上执行读-修改-写操作时产生不可预计的结果。

ANSEL :bit 7-0 ANS<7:0>:模拟选择位

分别选择引脚AN<7:0>的模拟或数字功能。

1 =模拟输入。引脚被分配为模拟输入(1)。

0 =数字 I/O。引脚被分配给端口或特殊功能。

注 1: 将引脚设置为模拟输入将自动禁止数字输入电路、弱上拉电路和电平变化中断(如果有的话) 。相应的TRIS 位必须置 1以将引脚设置为输入模式,从而允许从外部控制引脚电压。

2:在 PIC16F883/886 上未实现。
积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-4-25 16:13 , Processed in 0.037950 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表