个性化阅读
专注于IT技术分析

嵌入式系统I/O编程

本文概述

在8051微控制器中, 通过使用四个端口和40个引脚来执行I / O操作。 I / O操作端口使用32个引脚, 每个端口有8个引脚。其余的8引脚用于提供

让我们看一下微控制器的40引脚塑料双列直插式封装(PDIP)集成电路:

ES I/O编程1

注-在微控制器的DIP结构中, 我们可以通过使用IC中间存在的切口来识别第一个和最后一个引脚, 该切口称为微控制器的缺口。第一个销钉位于槽口的左侧, 最后一个销钉位于槽口的右侧。


I / O端口及其功能

在微控制器中, 有四个输入/输出端口P0, P1, P2和P3, 每个端口都是具有8个引脚的8位端口。 RESET期间, 所有端口均用作输入端口。当端口的第一个端口为0时, 它将成为输出端口。为了将其重新配置为输入, 必须将高电平信号(1)发送到端口。

端口0(Pin No 32-Pin No 39):

端口0包含8个引脚。可以用作输入或输出。通常, 我们将P0与10K欧姆上拉电阻相连, 以将其用作开漏的输入或输出端口。

它也称为AD0-AD7, 它可以同时用作地址和数据传输端口。当我们想增加外部ROM时, P0既用作数据总线, 又用作地址总线。

地址锁存使能(ALE)引脚号31指示PO是否用作地址或数据。

当ALE = 0时, 它将提供数据D0-D7。

当ALE = 1时, 它将提供地址A0-A7。

让我们看一下端口0的结构, 该端口带​​有外部连接的上拉电阻:

ES I/O编程2

让我们看一下将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(Pin No 1-Pin No 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 功能 P3位
10 Receiver (RxD) P3.0
11 Transmitter (TxD) P3.1 <
12 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<

I / O端口和位寻址

在编写8051的代码时, 它是8051的最常用功能。有时只需要使用端口的1或2位, 而不是使用整个8位。 8051微控制器提供了使用端口每一位的功能。

当以一位方式使用端口时, 我们提供语法“ SETB X.Y”, 其中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

一位指令

指令 功能
CLR位 Clear the bit (bit=0)
CPL bit Complement the bit (bit=NOT bit)
SETB bit Set the bit (bit = 1)
JB位, 目标 如果bit = 1则跳转到目标(如果bit则跳转)
JBC位, 目标 如果bit = 1, 则清除目标(清除位)(如果跳过, 则清除)
JNB位, 目标 如果位= 0, 则跳转到目标(如果没有位, 则跳转)
赞(0)
未经允许不得转载:srcmini » 嵌入式系统I/O编程

评论 抢沙发

评论前必须登录!