- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机引脚与端口操作
单片机引脚与端口操作
首先对于单片机IO口一般有第二功能,因为P0 口比较特别以P0 口为例说明。
1. P0 口置1是怎么回事,什么时候置1?
单片机P0 口作为输入时需要先给锁存器置1,以关闭V2场效应管,不置1的
话当锁存器的值为0时,V2导通接地使引脚的值为低,不能输入高电平。至于
怎么给P0 口置1,就是给P0寄存器置1.
2. P0 口怎么要接上拉电阻?有什么用?
见P0 口结构图可知,P0 口作为通用IO口,即输入输出口时,需要把V1场效
应管关闭,多功能开关连接到锁存器,高电平信号通过锁存器Q端输出时为低
电平,V2管截止,V1,V2都截止,输出既不是高电平又不是低电平,这就是漏
极开路输出。为了能够输出高电平需要外接上拉电阻。
3. 读引脚和读端口有什么不一样?
读引脚是读P0 口引脚上的电平信号,读端口是读锁存器中的值,即就是读P0
口寄存器的值。作为输出时引脚和端口的值是一样的,但是作为输入时因为外设
可以影响引脚的值,所以端口和引脚的值作为输入时可以不一样。
4. 什么时候读端口?什么时候读引脚?各自的指令是什么?
一般的教科书上都会强调:读端口的指令为端口内容取反这样的“读-修改-写”
指令。而读引脚之前,先置1,然后用Mov A,Px之类的指令即可。 以下是从
相关网站上搜集的资料:
“ 资料称:这样的指令才有 Read-Modify-Write 功效
ANL (logicalAND, e.G., ANL P1,A)
ORL (logical OR, e.g., ORL P2,A)
XRL (logical EX-OR, e.g., XRL P3,A)
JBC (jump if bit = 1 and clea bit, e.g., JBC P1.1, LABEL)
CPL (complementbit, e.g., CPL P3.0)
INC (increment, e.g., INC P2)
DEC (decrement, e.g., DEC P2)
DJNZ (decrementand jump if not zero, e.g., DJNZ P3, LABEL)
MOV PX.Y,C(move ca y bit to bit Y of PORT X)
CLR PX.Y(clea bit Y of PORT X)
SETB PX.Y(set bit Y of PORT X)
”
有没有读端口的指令(而不修改端口)?
可以说,没有直接的读端口的指令。无论之前是否置1,以下指令
MOV A, P1
MOV 20H, P1
MOV R0, P1
MOV @R0, P1
读的都是引脚,尽管不一定读准确。
5. 端口的内容什么时候发生改变?当Px 口作为输入,若外部引脚信号不断变
化,读取引脚值之后, 端口内容是否变化?
某网友的看法与我不谋而合:“ 由于复位后各引脚寄存器的值是明确的,而以后
各引脚的寄存器的值的改变不会因为芯片外面而,影响到引脚寄存嚣的值,引脚
的寄存器的值只可能由程序来改变,所以就没有必要只读寄存器的值而不改变寄
存器的内容了。 ”
参考引脚内部结构图可知,端口就是一个锁存器,纵使锁存器D 口数据在变(内
部数据线),只要时钟触发端clk没有触发信号,锁存器中的内容永远都不会改
变,也就是说,不管外部引脚信号如何变,也不管执行过多少次读引脚操作,端
口锁存器中的内容是不会发生变化的。
那么,端口内容何时变化?答曰:只要执行过一次输出,端口内容必为输出值,
因为端口就是输出的数据锁存器。
6. 端口上的内容亦即反映到引脚上来吗?
Px 口如果作为输出口,由引脚内部结构可知,端口内容是直接反映到引脚上去
的。这对于P1 口更为直接。而其他口,由于有第二功能,是否作为I/O 口受内
部控制信号的控制
文档评论(0)