网站首页 > 技术文章 正文
1.通用I/O
用作通用I/O 时,引脚可以组成3 个8 位端口,端口0、端口1 和端口2,表示为P0、P1 和P2。其中,P0和P1 是完全的8 位端口,而P2 仅有5 位可用。所有的端口均可以通过SFR 寄存器P0、P1 和P2 位寻址和字节寻址。每个端口引脚都可以单独设置为通用I/O 或外部设备I/O。
(驱动电流很重要,有时候和MOS管电路、上拉电阻的选择等密切相关)除了两个高驱动输出口P1.0 和P1.1 各具备20 mA 的输出驱动能力之外,所有的输出均具备4 mA 的驱动能力。
寄存器PxSEL(选择为通用IO模式还是外设IO信号),其中x 为端口的标号0~2,用来设置端口的每个引脚为通用I/O 或者是外部设备I/O 信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚。在任何时候,要改变一个端口引脚的方向,就使用寄存器PxDIR(选择输入或输出)来设置每个端口引脚为输入或输出。因此只要设置PxDIR 中的指定位为1,其对应的引脚口就被设置为输出了。当读取端口寄存器P0、P1 和P2 的值,不管引脚配置如何,输入引脚上的逻辑值都被返回。这在执行读-修改-写指令期间不适用。读-修改-写指令是:ANL,ORL,XRL,JBC,CPL,INC,DEC,DJNZ,MOV,CLR和SETB。在一个端口寄存器上操作,以下是正确的:当目标是端口寄存器P0、P1 或P2 中一个独立的位,寄存器的值,而不是引脚上的值,被读取、修改并写回端口寄存器。
用作输入时,通用I/O 端口引脚可以设置为上拉、下拉或三态操作模式。作为缺省的情况,复位之后,所有的端口均设置为带上拉的输入。要取消输入的上拉或下拉功能,就要将PxINP(输入上拉、下拉、三态模式选择)中的对应位设置为1。I/O 端口引脚P1.0 和P1.1 没有上拉/下拉功能。注意配置为外设I/O 信号的引脚没有上拉/下拉功能,即使外设功能是一个输入。
在电源模式PM1、PM2 和PM3 下I/O 引脚保留当进入PM1/PM2/PM3 时设置的I/O 模式和输出值(如果可用的话)。
2.通用I/O 中断
通用I/O 引脚设置为输入后,可以用于产生中断。中断可以设置在外部信号的上升或下降沿触发。P0、P1或P2 端口都有中断使能位,对位于IENl(端口中断使能寄存器)寄存器内的端口所有的位都是公共的,如下:
IENI.P0 IE:P0 中断使能
IEN2.PI IE:P1 中断使能
IEN2.P2IE:P2 中断使能
除了这些公共中断使能之外,每个端口的位都有位于SFR 寄存器P0IEN、P1IEN 和P2IEN(单独引脚中断使能寄存器)的单独的中断使能。即使配置为外设I/O 或通用输出的I/O 引脚使能时都有中断产生。
当中断条件发生在I/O 引脚之一上面,P0-P2 中断标志寄存器P0IFG、P1IFG 或P2IFG(中断标志寄存器)中相应的中断状态标志将设置为1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入0。这个标志必须在清除CPU 端口中断标志(PxIF)之前被清除。用于中断的SFR 寄存器描述在下一节。寄存器总结如下:
P0IEN: P0 中断使能
P1IEN: P1 中断使能
P2IEN: P2 中断使能
PICTL: P0、P1 和P2 触发沿设置
P0FG: P0 中断标志
P1IFG: P1 中断标志
P2IFG: P2 中断标志
猜你喜欢
- 2024-10-12 [ZigBee] 2、 ZigBee开发环境搭建
- 2024-10-12 基于ZigBee网络的智能铁鞋系统设计
- 2024-10-12 Ameya360干货|基于 TI 的智能 LED 照明设计方案
- 2024-10-12 基于ZigBee远程通信的水质监测系统设计
- 2024-10-12 NFC与ZigBee技术在智慧农业物联网监测系统中的应用
- 2024-10-12 如何选择不同版本TI的ZigBee 协议栈进行开发?
- 2024-10-12 i.MX6ULL开发板处理器软硬件规格资料说明书
- 2024-10-12 基于ZigBee的粮库环境监控系统设计
- 2024-10-12 基于zigbee的环境监测系统设计 基于zigbee的环境监测系统设计产品
- 2024-10-12 iMX6ULL开发板物联网模块开发,Zigbee/LoRa/4G模块测试(下)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)