1、数字 I/O 端口寄存器7.2.1 输入寄存器 PxIN 当 I/O 管脚被配置为普通 IO 口时, 对应 IO 口的信号输入值表现为输入寄存器中的每一个位。 位为零:输入为低 位为一:输入为高注意:写只读寄存器 PxIN 写这些只读寄存器会导致在写操作被激活的时候电流的增加。 7.2.2 输出寄存器 PxOUT 当 I/O 管脚被配置为普通 IO 口并且为输出方向时, 对应 IO 口的输出值表现为输出寄存器中的每一个位。 位为零:输出为低 位为一:输出为高 如果管脚被配置为普通 I/O 功能、输出方向并且置位寄存器使能时,PxOUT 寄存器的相应管脚被选择置高或者置低。 位为零:该管脚置低
2、位为一:该管脚置高 7.2.3 方向寄存器 PxDIR PxDIR 寄存器中的每一位选择相应管脚的输入输出方向,不管该管脚实现何功能。当管脚被设置为其它功能时方向寄存器中对应的值应被设置为该管脚所实现功能要求的方向值。 位为零:管脚转变为输入方向 位为一:管脚转变为输出方向 7.2.4 置高/置低寄存器使能寄存器 PxREN PxREN 寄存器中的每一位可以使能相应 I/O 管脚的置高 /置低寄存器。 PxOUT 寄存器中相应的位选择管脚是否置高或者置低。 位为零:置高/置低寄存器关闭 位为一:置高/置低寄存器使能 表 7-1 总结 I/O 口配置时 PxDIRx、PxRENx 和 PxOUT
3、x 寄存器的用法 表 7-1 I/O 配置 PxDIRx PxRENx PxOUTx I/O 口配置 0 0 x 输入 0 1 0 置低 0 1 1 置高 1 x x 输出 7.2.5 输出驱动能力寄存器 PxDS PxDS 寄存器中的每一位选择全力驱动或者减弱驱动能力。默认的是减弱驱动能力。 位为零:减弱驱动能力 位为一:全力驱动能力 7.2.6 功能选择寄存器 PxSEL 接口管脚的功能因外围模块的功能不同而不同。参考器件的说明文档来决定管脚的功能。PxSEL 寄存器中的每一位选择对应管脚的功能普通 I/O 功能或者外围模块功能。 位为零:管脚选择为普通 I/O 功能 位为一:管脚选择为外
4、围模块功能 设置 PxSELx = 1 不会自动设置管脚的输入输出方式。其它外围模块功能需要根据模块功能所要求的方向设置 PxSELx 位。参考说明文档中的管脚示意图。 注意:当 PxSEL=1 时,P1 和 P2 口的中断功能被关闭 当 PxSEL 的任意一位被置位时,相应管脚的中断功能被关闭。因此从这些管脚引入的信号不能触发 P1 或者 P2 口中断,不管相应 P1IE 和 P2IE 寄存器的状态。 当一个接口的管脚被选择作为到外围设备的输出时,这个到外围设备的输 出信号就是这个设备管脚的锁存请求信号。当 PxSELx=1 时,内部输入信号 将跟随这个管脚的信号。但是,如果 PxSELx=
5、0,在 PxSELx 复位前到外围 设备的输入会保持这个管脚的输入信号值不变。7.2.7 P1 和 P2 口中断 当配置了 PxIFG, PxIE, and PxIES 寄存器后 P1 和 P2 口的每一个管脚都具有中断功能。所有的 P1 口中断标志位都是区分优先级并结合在同一个中断向量中的, 例如 P1IFG.0 具有最高相应优先级。最高优先级使能中断在 P1IV 寄存器中产生一个序号。这个数字会被程序计数器识别或者加入其中自动的执行合适的中断服务程序。 关闭 P1 口中断不会影响 P1IV 寄存器中的值。P2 口具有相同的功能。PxIV 寄存器只能字访问。 PxIFGx 寄存器的每一位都是
6、相应 I/O 管脚的中断标志位并且当该管脚被选择的中断触发沿产生时被置位。当相应的 PxIE 寄存器和 GIE 寄存器位被置位时,所有的 PxIFGx 中断标志寄存器都可以请求一个中断。软件同样可以使 PxIFG 标志位置位,这就提供了一种由软件产生中断的方法。 位为零:没有中断等待响应 位为一:有中断等待响应 只有电平的跳变才能产生中断。 如果在一个 Px 口中断服务程序执行期间或者 Px 口中断服务程序的 RETI 指令执行之后有任何一个 PxIFGx 位被置位,这个中断标志位就会触发另外一个中断。这样就可以保证每一个跳变都可以被识别。 注意:当 PxOUT、PxDIR 或者 PxREN
7、寄存器值改变时的 PxIFG 标志位 写 P1OUT、P1DIR、P1REN、P2OUT、P2DIR 或者 P2REN 寄存器会导致相应的 P1IFG 或者 P2IFG 标志位置位。 任何对 P1IV 寄存器的读写和访问操作都会自动使最高响应优先级中断标 志位复位。如果另外一个中断标志位被置位,在响应完已发起的中断以后 另外一个中断立即会被触发。例如,假设 P1IFG.0 拥有最高优先级。如果 中断服务程序访问 P1IV 寄存器时 P1IFG.0 和 P1IFG.2 被置位,P1IFG.0 会 自动复位。当中断服务程序的 RETI 指令执行以后,P1IFG.2 标志位会触发 另外一个中断。 P
8、2 口中断有相同的应用,利用 P2IV 寄存器并且源于另一个同一的中断向 量。中断触发沿选择寄存器 P1IES P2IES PxIES 寄存器的每一位为相应的 I/O 管脚选择中断触发沿。 位为零:上升沿将 PxIFGx 中断标志位置位 位为一:下降沿将 PxIFGx 中断标志位置位注意:写 PxIESx 寄存器 写 P1IES 和 P2IES 可以导致相应中断标志位置位。 PxIESx PxINx PxIFGx 01 0 可以置位 01 1 不改变 10 0 不改变 10 1 可以置位 中断使能寄存器 P1IE、P2IE PxIE 寄存器的每一位使能相联系 PxIFG 中断标志位。 位为零:
9、中断关闭 位为一:中断使能7.2.8 配置未使用的端口管脚 未使用的 I/O 管脚应被设置为普通 I/O 功能、输出方向并且在 PCB 板上不连接这些管脚,以防止浮动的输入和降低功耗。因为这些管脚没有被连接,所以它们的输出值没有必要在意。或者可以通过设置未使用管脚的 PxREN 寄存器来使能置高/置低寄存器以避免浮动输入的干扰。关闭未使用的管脚可以参考系统复位,中断和操作模式章节。 注意:配置 PJ 端口和共享 JTAG 管脚 记住在应用中特别注意保证 PJ 口被合适的配置以防范浮动输入的干扰时很重要的。因为 PJ 端口被共享为 JTAG 功能,在仿真环境中浮动输入可能不会被注意到。默认情况下
10、 PJ 端口被初始化为高阻态。P1IV,P1 口中断向量寄存器 P1IVx 位 15-0 P1 口中断向量值 _ P1IVx 目录 中断源 中断标志 中断优先级 00h 无中断 02h P1.0 口中断 P1IFG.0 最高 04h P1.1 口中断 P1IFG.1 06h P1.2 口中断 P1IFG.2 08h P1.3 口中断 P1IFG.3 0Ah P1.4 口中断 P1IFG.4 0Ch P1.5 口中断 P1IFG.5 0Eh P1.6 口中断 P1IFG.6 10h P1.7 口中断 P1IFG.7 最低P2IV,P2 口中断向量寄存器 P2IVx 位 15-0 P2 口中断向量
11、值 _ P1IVx 目录 中断源 中断标志 中断优先级 00h 无中断 02h P2.0 口中断 P2IFG.0 最高 04h P2.1 口中断 P2IFG.1 06h P2.2 口中断 P2IFG.2 08h P2.3 口中断 P2IFG.3 0Ah P2.4 口中断 P2IFG.4 0Ch P2.5 口中断 P2IFG.5 0Eh P2.6 口中断 P2IFG.6 10h P2.7 口中断 P2IFG.7 最低 _ P1IES,P1 口中断触发沿选择寄存器 P1IES 位 7-0 P1 口中断触发沿选择 0 上升沿 P1IFGx 标志位置位 1 下降沿 P1IFGx 标志位置位 P1IE,
12、P1 口中断使能寄存器 P1IE 位 7-0 P1 口中断使能 0 关闭相应端口中断 1 使能相应端口中断 P1IFG,P1 口中断标志寄存器 P1IFG 位 7-0 P1 口中断标志 0 无中断 1 有中断 P2IE,P2 口中断使能寄存器 P2IE 位 7-0 P2 口中断使能 0 关闭相应端口中断 1 使能相应端口中断 P2IFG,P2 口中断标志寄存器 P2IFG 位 7-0 P2 口中断标志 0 无中断1 有中断 PxIN,Px 口输入寄存器 PxIN 位 7-0 Px 口输入,只读 PxOUT,Px 口输出寄存器 PxOUT 位 7-0 Px 口输出 当 IO 口配置为输出模式时: 0 输出低电平 1 输出高电平 当 IO 口配置为输入模式并且置高 /置低使能时: 0 置低 1 置高 PxDIR,Px 口方向寄存器 PxDIR 位 7-0 Px 口方向 0 端口配置为输入 1 端口配置为输出 PxREN,Px 口寄存器使能寄存器 PxREN 位 7-0 Px 口置高/ 置低寄存器使能 0 关闭置高/置低 1 使能置高/置低 PxDS,Px 口输出驱动能力寄存器 PxDS 位 7-0 Px 口输出驱动能力 0 减弱输出驱动能力 1 全力输出驱动能力