从TI提供的P1口的图纸上看,P1OUT.0的输出不受P1REN.0的影响,可是如果做个实验,发现完全不是这么回事:
如下分析使用EZ430-F2013:
1.随便打开一个工程,进入调试状态,不运行程序,打开寄存器窗口;
2.在寄存器窗口中,设置P1OUT.0=1,P1DIR.0=1,此时LED灯亮,显示工作正常;
3.此时设置P1REN.0=1,按照图里的说法,是不是应该不受影响?可是实际上P1.0的LED立即暗了许多(几乎看不到了),象是P1OUT的输出不起作用了,在靠上拉电阻工作一样;
4.设置P1REN.0=0,LED灯恢复原来的亮度。
如果您要是觉得上面的描述做起来麻烦,可以在main的开头加入如下语句做单步调试:
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1OUT=1;
P1DIR=1; //LED正常亮
P1REN=1; //LED正常变得很暗
P1REN=0; //LED正常亮
P1REN=1; //LED正常变得很暗
麻烦大家了,谢谢!
并请高手解释这是一个正常现象呢,还是一个BUG
6.2.2 输出寄存器PxOUT
当某个输入/输出引脚被设置为输入/输出功能、输出方向和禁用上(下)拉电阻时,这个输
入/输出端口的PxOUT 寄存器的相应位反映了这个引脚的输出信号的电平值。
Bit = 0 : 输出为低电平
Bit = 1 : 输出为高电平
如果引脚的上拉(下拉)电阻使能,PxOUT 寄存器的相应位则表示是选择上拉电阻还是选
择下拉电阻。
Bit = 0 : 引脚是下拉
Bit = 1 : 引脚是上拉
结果已经在这里了,好也没有什么可说的,可是这与TI的手册中P1口的原理图描述是不同的,
原理图中P1REN好像没有影响P1OUT。
8.2.2 Output Registers PxOUT
Each bit in each PxOUT register is the value to be output on the corresponding
I/O pin when the pin is configured as I/O function, output direction, and the
pull-up/down resistor is disa××ed.
Bit = 0: The output is low
Bit = 1: The output is high
If the pin’s pull?up/down resistor is ena××ed, the corresponding bit in the
PxOUT register selects pull-up or pull-down.
Bit = 0: The pin is pulled down
问题关闭。
TI的官方回复:
按照您的设置,当P1OUT.0=1,P1DIR.0=1,P1REN.0=1时,P1.0设置为上拉,内部上拉电阻起作用。可以参照用户手册“Output Registers PxOUT”章节的详细介绍。
分析出现与原理图不吻合的原因可能是对多路选择器的理解。建议您按照用户手册的解释进行操作。
TI的官方回复结束。
看来以后我们看问题,不能仅仅相信一个东西。
我觉得TI是变相承认原理图上的错误。
没有必要再深究了。
我觉得TI是变相承认原理图上的错误--------------你挺NB