📅  最后修改于: 2021-01-01 02:49:14             🧑  作者: Mango
在8051微控制器中,通过使用四个端口和40个引脚来执行I / O操作。 I / O操作端口使用32个引脚,每个端口有8个引脚。其余的8引脚用于提供
让我们看一下微控制器的40引脚塑料双列直插式封装(PDIP)集成电路:
注-在微控制器的DIP结构中,我们可以通过使用IC中间存在的切口来识别第一个和最后一个引脚,该切口称为微控制器的缺口。第一个销钉位于槽口的左侧,最后一个销钉位于槽口的右侧。
在微控制器中,有四个输入/输出端口P0,P1,P2和P3,每个端口都是具有8个引脚的8位端口。 RESET期间,所有端口均用作输入端口。当端口的第一个端口为0时,它将成为输出端口。为了将其重新配置为输入,必须将高电平信号(1)发送到端口。
端口0(32号针-39号针):
端口0包含8个引脚。可以用作输入或输出。通常,我们将P0与10K欧姆上拉电阻相连,以将其用作开漏的输入或输出端口。
它也称为AD0-AD7,它可以同时用作地址和数据传输端口。当我们想增加外部ROM时,P0既用作数据总线又用作地址总线。
地址锁存使能(ALE)引脚号31指示PO是否用作地址或数据。
当ALE = 0时,它将提供数据D0-D7。
当ALE = 1时,它将提供地址A0-A7。
让我们看一下端口0的结构,该端口带有外部连接的上拉电阻:
让我们看一下将Port 0用作输入的汇编语言代码:
MOV A, #FFH; (comments: A=FFH i.e. A=1111 1111)
MOV P0, A; (Port 0 all pin have 1's so that it work as Input)
端口1(1号针脚8号针脚):
它也是一个8位端口,可以用作输入或输出。不需要外部连接的上拉电阻,因为它们已经在内部存在。重置后,端口1用作输入端口。
如果将端口1配置为输出端口,然后再次使用端口1作为输入端口,则将1写入端口1的所有位,如以下代码所示:-
MOV A, #FFH ; Value of Accumulator register A=FF hex
MOV P1, A ; Port 1 worked as an input port
MOV A, P1 ; get data from P1
MOV R5, A ; save it in Register R5
ACALL DELAY ; wait
MOV A, P1 ; get another data from P1
MOV R6, A ; save it in R6
ACALL DELAY ; wait
MOV A, P1 ; get data from P1
MOV R7, A ; save it in R7
端口2(21号针脚-28号针脚):
端口2总共使用8个引脚,也可以用作输入和输出操作。与端口1相同,P2也不需要外部上拉电阻。端口2可以与P0一起使用,以为外部存储器提供16位地址。因此,如引脚图所示,它被指定为(A0-A7)。
如果将端口2配置为输出端口,则为了再次将其用作输入端口,我们将1写入端口2的所有位,如以下代码所示:
MOV A, #FFH ; Value of Accumulator register A=FF hex
MOV P2, A ; Port 2 worked as an input port
BACK:
MOV A, P1 ; get data from P2
MOV P1, A ; save it in Port 1
SJMP BACK ; Keep doing that
端口3(第10针-第17针):
端口3也是8位的,可以用作输入/输出。此端口提供一些重要信号。
P3.1和P3.0分别是RxD(接收器)和TxD(发送器),它们共同用于串行通信。
P3.3和P3.2引脚用作外部中断。
P3.5和P3.4分别用作定时器T1和T0。
P3.6和P3.7是写(WR)和读(RD)引脚。
让我们看一下显示单个引脚函数的端口3表:
Pin | Function | P3 Bit |
---|---|---|
10 | Receiver (RxD) | P3.0 |
11 | Transmitter (TxD) | P3.1< |
12 | Complement of INT 0 | P3.2< |
13 | INT 1 | P3.3< |
14 | Timer 0(TO) | P3.4< |
15 | Timer 1(T1) | P3.5< |
16 | Write (WR) | P3.6< |
17 | Complement of read (RD) | P3.7< |
在编写8051的代码时,它是8051的最常用功能。有时只需要使用端口的1或2位,而不是使用整个8位。 8051微控制器提供了使用端口的每个位的功能。
当以一位方式使用端口时,我们提供语法“ SETB XY”,其中X是端口号,范围从0到3,Y是位数,范围从0到7。
例如:-“ SETB P1.3”设置端口1的高位3。
让我们看一下用于连续切换P1.5的汇编代码:
AGAIN:
SETB P1.5
ACALL DELAY
CLR P1.5
ACALL DELAY
SJMP AGAIN
Instruction | Function |
---|---|
CLR bit | Clear the bit (bit=0) |
CPL bit | Complement the bit (bit=NOT bit) |
SETB bit | Set the bit (bit = 1) |
JB bit, target | Jump to target if bit = 1 (jump if bit) |
JBC bit, target | Jump to target if bit = 1, clear bit (jump if bit, then clear) |
JNB bit, target | Jump to target if bit = 0 (jump if no bit) |