单片机读端口与读引脚的区别
时间:11-23
来源:互联网
点击:
把I/O口作为输入口使用时,是“读引脚”,不同于“读端口”。注意,读端口的“口”
不是P0口、P1口的“口”,而是锁存器的Q端口,也就是读锁存器Q端的输出信号然后送
三态缓冲器输入,经过缓冲器输出到单片机内部总线。而读引脚则是直接把芯片引脚上
的外部数据,经过三态缓冲器把数据放到内部总线。
例如,用MOV进行读引脚操作:
MOV P1,0FFH ;注意首先把P1引脚置为高电平
MOV A,P1 ;P1作为输入口,读P1口信号到A
编程时须先置I/O口引脚为高电平的原因如下(请查看口电路结构图):
51单片机的P0口是双向口,P1~3口是准双向口,其I/O口引脚都和单片机内部的场效应管
FET漏极连接。首先我们不妨假设init时引脚为低电平(我不知道单片机reset时
引脚缺省电平是低还是高?还是不定?),即FET漏极为低电平,因为此时FET是导通的,
所以无论外部输入1还是0,都会产生拉电流,拉为低电平,从而无法正确判断外部输入
的是1还是0.严重的话,如果拉电流过大,还可能烧坏FET。
因此,init时只好将引脚设为高电平,例如MOV P1,0FFH,由单片机口电路的结构图可以
看出,这条指令的内部电路逻辑是这样的:
先把0FFH放到内部总线,锁存器输入端(D端)从内部总线取数据,锁存,然
后从Q非端输出到FET栅极,显然此时Q非为0,FET截止,通过漏极上拉电阻输出高电平,
不会影响外部输入电平(相当于和外部输入逻辑与)。
不是P0口、P1口的“口”,而是锁存器的Q端口,也就是读锁存器Q端的输出信号然后送
三态缓冲器输入,经过缓冲器输出到单片机内部总线。而读引脚则是直接把芯片引脚上
的外部数据,经过三态缓冲器把数据放到内部总线。
例如,用MOV进行读引脚操作:
MOV P1,0FFH
MOV A,P1
编程时须先置I/O口引脚为高电平的原因如下(请查看口电路结构图):
51单片机的P0口是双向口,P1~3口是准双向口,其I/O口引脚都和单片机内部的场效应管
FET漏极连接。首先我们不妨假设init时引脚为低电平(我不知道单片机reset时
引脚缺省电平是低还是高?还是不定?),即FET漏极为低电平,因为此时FET是导通的,
所以无论外部输入1还是0,都会产生拉电流,拉为低电平,从而无法正确判断外部输入
的是1还是0.严重的话,如果拉电流过大,还可能烧坏FET。
因此,init时只好将引脚设为高电平,例如MOV P1,0FFH,由单片机口电路的结构图可以
看出,这条指令的内部电路逻辑是这样的:
先把0FFH放到内部总线,锁存器输入端(D端)从内部总线取数据,锁存,然
后从Q非端输出到FET栅极,显然此时Q非为0,FET截止,通过漏极上拉电阻输出高电平,
不会影响外部输入电平(相当于和外部输入逻辑与)。
单片机读端口读引 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)