IO端口及相关寄存器
- 格式:pdf
- 大小:435.54 KB
- 文档页数:2
1I/O空间-----I/O端口和I/O内存首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。
二者合起来统称为I/O空间。
设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。
外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类。
根据访问外设寄存器的不同方式,可以把CPU分成两大类。
一类CPU(如M68K,Power PC,ARM,Unicore等)把这些寄存器看作内存的一部分,寄存器参与内存统一编址,访问寄存器就通过访问一般的内存指令进行,所以,这种CPU没有专门用于设备I/O的指令(可以以此判定体系为哪种)。
这就是所谓的“I/O内存”方式。
另一类CPU(如X86)将外设的寄存器看成一个独立的地址空间,所以访问内存的指令不能用来访问这些寄存器,而要为对外设寄存器的读/写设置专用指令,如IN和OUT指令。
这就是所谓的” I/O端口”方式。
但是,用于I/O指令的“地址空间”相对来说是很小的。
事实上,现在x86的I/O地址空间已经非常拥挤。
但是,随着计算机技术的发展,单纯的”I/O端口"方式无法满足实际需要了,因为这种方式只能对外设中的几个寄存器进行操作。
而实际上,需求在不断发生变化,例如,在PC上可以插上一块图形卡,有2MB的存储空间(设备内存),甚至可能还带有ROM,其中装有可执行代码。
自从PCI总线出现后,不管CPU的设计采用I/O端口方式还是I/O内存方式,都必须将外设卡上的存储器映射到内存空间,实际上是采用了虚存空间的手段,这样的映射是通过ioremap()来建立的。
1. CPU是i386架构的情况在i386系列的处理中,内存和外部IO是独立编址,也是独立寻址的。
MEM的内存空间是32位可以寻址到4G,IO空间是16位可以寻址到64K。
2. 在Linux内核中,访问外设上的IO Port必须通过IO Port的寻址方式。
8086对存储器和io端口的编址方式-回复8086微处理器是Intel公司于1979年推出的一款16位微处理器,广泛应用于个人电脑和工业控制系统等领域。
在8086中,存储器和I/O端口被分别编址,下面将一步一步回答关于8086对存储器和I/O端口的编址方式的问题。
一、存储器的编址方式:8086微处理器使用20位地址总线,整个寻址空间范围为1MB(2^20)。
这种编址方式称为“段:偏移”地址形式。
1. 段选择器:在8086中,用于选择段的寄存器有CS(Code Segment, 代码段)、DS (Data Segment, 数据段)、SS(Stack Segment, 栈段)和ES(Extra Segment, 附加段)。
这些寄存器的值是16位的,用于存储存储器段的起始地址,偏移地址的计算需要与这些寄存器的值相结合。
2. 偏移地址:8086通过16位的偏移地址来表示存储器中的特定字节。
偏移地址可以是由程序员指定的常数,也可以是由程序中的地址计算得出的。
3. 存储器地址计算:8086微处理器将段选择器的值左移4位(乘以16),加上偏移地址的值。
例如,当使用DS和SI寄存器来指定一个存储器地址时,计算公式为:物理地址= DS * 16 + SI二、I/O端口的编址方式:8086微处理器使用16位地址总线寻址I/O端口。
I/O端口被视为存储器中的特殊地址,可以访问外部设备。
1. I/O端口地址空间:8086将I/O端口地址空间映射到存储器地址空间的一部分,称为I/O端口地址空间。
I/O端口地址空间的范围为0x0000到0xFFFF,共有65536个端口地址。
2. IN指令:IN指令用于从指定的I/O端口读取数据。
它需要提供一个8位或16位的端口地址。
IN指令执行时,8086将相应的端口地址发送给外部设备,然后接收来自该设备的数据。
例如,以下指令从I/O端口0x01 读取数据:IN AL, 0x013. OUT指令:OUT指令用于向指定的I/O端口写入数据。
PC的IO端⼝地址表(IO端⼝地址表)I/O端⼝地址表PC只⽤了10位地址线(A0-A9)进⾏译码,其寻址的范围为0H-3FFH,共有1024个I/O地址。
这1024个地址中前半段(A9=0,范围为0H-1FFH)是属于主机板I/O译码,后半段(A9=1,范围为200H-3FFH)则是⽤来扩展插槽上的I/O译码⽤。
I/O端⼝功能表———————————————————————————I/O地址 功能、⽤途———————————————————————————0 DMA通道0,内存地址寄存器(DMA控制器1(8237))1 DMA通道0, 传输计数寄存器2 DMA通道1,内存地址寄存器3 DMA通道1, 传输计数寄存器4 DMA通道2,内存地址寄存器5 DMA通道2, 传输计数寄存器6 DMA通道3,内存地址寄存器7 DMA通道3, 传输计数寄存器8 DMA通道0-3的状态寄存器0AH DMA通道0-3的屏蔽寄存器0BH DMA通道0-3的⽅式寄存器0CH DMA清除字节指针0DH DMA主清除字节0EH DMA通道0-3的清屏蔽寄存器0FH DMA通道0-3的写屏蔽寄存器19H DMA起始寄存器20H-3FH 可编程中断控制器1(8259)使⽤40H 可编程中断计时器(8253)使⽤,读/写计数器041H 可编程中断计时器寄存器42H 可编程中断计时器杂项寄存器43H 可编程中断计时器,控制字寄存器44H 可编程中断计时器,杂项寄存器(AT)47H 可编程中断计时器,计数器0的控制字寄存器48H-5FH 可编程中断计时器使⽤60H-61H 键盘输⼊数据缓冲区61H AT:8042键盘控制寄存器/XT:8255输出寄存器62H 8255输⼊寄存器63H 8255命令⽅式寄存器64H 8042键盘输⼊缓冲区/8042状态65H-6FH 8255/8042专⽤70H CMOS RAM地址寄存器71H CMOS RAM数据寄存器80H ⽣产测试端⼝81H DMA通道2,页表地址寄存器82H DMA通道3,页表地址寄存器83H DMA通道1,页表地址寄存器87H DMA通道0,页表地址寄存器89H DMA通道6,页表地址寄存器8AH DMA通道7,页表地址寄存器8BH DMA通道5,页表地址寄存器8FH DMA通道4,页表地址寄存器93H-9FH DMA控制器专⽤0A0H NM1屏蔽寄存器/可编程中断控制器20A1H 可编程中断控制器2屏蔽0C0H DMA通道0,内存地址寄存器(DMA控制器2(8237))0C2H DMA通道0, 传输计数寄存器0C4H DMA通道1,内存地址寄存器0C6H DMA通道1, 传输计数寄存器0C8H DMA通道2,内存地址寄存器0CAH DMA通道2, 传输计数寄存器0CCH DMA通道3,内存地址寄存器0CEH DMA通道3, 传输计数寄存器0D0H DMA状态寄存器0D2H DMA写请求寄存器0D4H DMA屏蔽寄存器0D6H DMA⽅式寄存器0D8H DMA清除字节指针0DAH DMA主清0DCH DMA清屏蔽寄存器0DEH DMA写屏蔽寄存器0DFH-0EFH 保留0F0H-0FFH 协处理器使⽤100H-16FH保留170H 1号硬盘数据寄存器171H 1号硬盘错误寄存器172H 1号硬盘数据扇区计数173H 1号硬盘扇区数174H 1号硬盘柱⾯(低字节)175H 1号硬盘柱⾯(⾼字节)176H 1号硬盘驱动器/磁头寄存器177H 1号硬盘状态寄存器1F0H 0号硬盘数据寄存器1F1H 0号硬盘错误寄存器1F2H 0号硬盘数据扇区计数1F3H 0号硬盘扇区数1F4H 0号硬盘柱⾯(低字节)1F5H 0号硬盘柱⾯(⾼字节)1F6H 0号硬盘驱动器/磁头寄存器1F7H 0号硬盘状态寄存器1F9H-1FFH保留200H-20FH游戏控制端⼝210H-21FH扩展单元278H 3号并⾏⼝,数据端⼝279H 3号并⾏⼝,状态端⼝27AH 3号并⾏⼝,控制端⼝2B0H-2DFH保留2E0H EGA/VGA使⽤2E1H GPIP(0号适配器)2E2H 数据获取(0号适配器)2E3H 数据获取(1号适配器)2E4H-2F7H保留2F8H 2号串⾏⼝,发送/保持寄存器(RS232接⼝卡2) 2F9H 2号串⾏⼝,中断有效寄存器2FAH 2号串⾏⼝,中断ID寄存器2FBH 2号串⾏⼝,线控制寄存器2FCH 2号串⾏⼝,调制解调控制寄存器2FDH 2号串⾏⼝,线状态寄存器2FEH 2号串⾏⼝,调制解调状态寄存器2FFH 保留300H-31FH原形卡320H 硬盘适配器寄存器322H 硬盘适配器控制/状态寄存器324H 硬盘适配器提⽰/中断状态寄存器325H-347H保留348H-357H DCA3278366H-36FH PC⽹络372H 软盘适配器数据输出/状态寄存器375H-376H 软盘适配器数据寄存器377H 软盘适配器数据输⼊寄存器378H 2号并⾏⼝,数据端⼝379H 2号并⾏⼝,状态端⼝37AH 2号并⾏⼝,控制端⼝380H-38FH SDLC及BSC通讯390H-393H Cluster适配器03A0H-3AFH BSC通讯3B0H-3B H MDA视频寄存器3BCH 1号并⾏⼝,数据端⼝3BDH 1号并⾏⼝,状态端⼝3BEH 1号并⾏⼝,控制端⼝3C0H-3CFH EGA/VGA视频寄存器3D0H-3D7H CGA视频寄存器3F0H-3F7H 软盘控制器寄存器3F8H 1号串⾏⼝,发送/保持寄存器(RS232接⼝卡1) 3F9H 1号串⾏⼝,中断有效寄存器3FAH 1号串⾏⼝,中断ID寄存器3FBH 1号串⾏⼝,线控制寄存器3FCH 1号串⾏⼝,调制解调控制寄存器3FDH 1号串⾏⼝,线状态寄存器3FEH 1号串⾏⼝,调制解调状态寄存器3FFH 保留2.2.1 I/O端⼝和寻址2.2 I/O端⼝寻址和访问控制⽅式2.2.1 I/O端⼝和寻址CPU为了访问I/O接⼝控制器或控制卡上的数据和状态信息,需要⾸先指定它们的地址。
IO接口的组成:数据缓冲寄存器,状态寄存器,命令寄存器,端口地址译码,接口控制逻辑,中断逻辑接口的主要功能:(1)地址识别与设备选择(2)接收、保存CPU的I/O控制命令(3)反映外设的工作状态(4)信号转换(5)数据格式、码制的转换与数据检错/纠错(6)传送数据(7)中断IO接口的基本组成图:p301 图9-1 ppt 21页端口的种类:数据端口,命令端口,状态端口端口的编址方式及其优缺点:p302程序查询方式的接口电路:(不一定考,但是见过这样的考试题目)程序查询方式的流程:中断(重中之重)中断的定义(背):计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机会停止现行程序的运行转向对这些异常情况或特殊请求进行处理,处理结束后再返回到现行程序的间断处继续执行凡是向CPU提出中断请求的各种因素,统称为中断源。
在每条指令执行结束时,CPU去执行中断服务程序外设向CPU发出中断申请的时间是随机的,在任何一个时刻只能为一个中断源的请求提供服务,实现中断的软/硬件,总称为中断系统中断的处理过程中断请求中断判优中断响应中断服务中断返回中断隐指令:在中断响应时候执行,主要功能:中断隐指令的功能:发出中断响应信号将程序断点(当前PC值)和标志位寄存器FR压入堆栈,关中断(清EINT为0),将中断处理程序的首地址送入PC。
在中断处理过程中,中断服务程序的处理流程是:保护现场、中断服务和恢复现场。
(p305)单重中断和多重中断的中断处理流程图p305 图9-4单重中断和多重中断的定义;(考试易出简答题)单:CPU执行中断服务程序时,不响应新的中断请求即不允许中断现行的中断服务程序。
多:在处理中断的过程中,有新的,优先级更高的中断请求到来,此时CPU暂停现行的中断服务,允许级别更高的中断源中断现行的中断服务程序形成中断入口地址的方法可分为:软件查询法和硬件向量法。
软件查询法:软件查询法是用一个中断管理程序,按照优先级由高到低的顺序,依次查询每一个中断源是否有中断请求。
单片机IO端口工作原理在单片机内部,每一个IO端口都对应着一个寄存器,该寄存器称为IO口寄存器,用于控制该IO端口的输入输出状态。
IO口寄存器通常是一个8位或16位的寄存器,每一位对应一个IO端口。
单片机的IO端口工作原理如下:1.输入方式:当一些端口被设置为输入模式时,它可以接收外部信号。
在输入模式下,该端口的电平状态可以被单片机读取到。
通常通过设置IO口寄存器的相应位来控制端口的输入模式。
在输入模式下,可以通过查询或中断方式读取IO端口的状态。
2.输出方式:当一些端口被设置为输出模式时,它可以向外部设备发送信号。
在输出模式下,可以通过设置IO口寄存器相应位的值来控制端口的输出电平状态。
高电平和低电平对应着不同的输出状态,可以通过操作寄存器来改变IO端口的电平状态。
3.端口模式设置:针对每一个IO端口,单片机提供了相应的寄存器来设置其工作模式。
通常包括输入模式、输出模式、上拉模式和下拉模式等。
输入模式和输出模式可以通过设置IO口寄存器的相应位来实现,上拉模式和下拉模式则需要通过设置其他寄存器或器件来实现。
4.状态改变:在一些情况下,IO端口的状态可能发生改变,如按键按下、外部信号触发等。
这时候可以通过查询或中断的方式来获取IO端口的状态变化,然后进行相应的处理。
5.外部设备连接:IO端口通常通过引脚连接到外部设备,如按键、LED灯、LCD显示屏、电机等。
通过IO端口的输出控制可以实现对外部设备的控制,通过IO端口的输入可以获取外部设备的状态。
总之,单片机IO端口通过IO口寄存器进行控制,可以实现与外部设备的信息交换和控制。
通过设置端口的输入输出模式,可以实现数据的输入和输出。
通过查询或中断的方式,可以实时获取IO端口的状态变化。
通过连接外部设备,可以实现对其控制和监测。
51单片机io口的用法51单片机是一种经典的单片机系列,广泛应用于各种嵌入式系统中。
其IO口是单片机最基本的输入输出功能,可以用来连接外部设备和实现与外界的交互。
本文将介绍51单片机IO口的用法,并提供相关参考内容,帮助读者更好地理解和应用。
一、51单片机IO口简介51单片机的IO口是通过P0、P1、P2、P3四个寄存器来控制的。
其中P0口为8位双向I/O口,P1、P2、P3口为8位I/O 口,可以通过配置将其设置为输入(IN)或输出(OUT)模式。
在51单片机中,IO口的状态(高电平或低电平)决定了其在电路中的功能。
二、IO口的输入模式通过将IO口设置为输入模式,可以实现对外部信号的读取。
以下是51单片机IO口输入模式的几种常见应用:1. 按键输入:通过将IO口与按键连接,读取按键的状态(按下或松开)。
2. 传感器输入:通过将IO口与传感器连接,读取传感器的输出信号,如光线强度、温度等。
3. 外部信号输入:通过将IO口与其他设备连接,读取外部设备的状态或数据。
在使用IO口作为输入时,需要设置对应端口的引脚为输入模式,并读取相应寄存器的值进行判断。
三、IO口的输出模式通过将IO口设置为输出模式,可以实现对外部设备的控制。
以下是51单片机IO口输出模式的几种常见应用:1. LED显示:通过将IO口与LED连接,控制LED的闪烁、亮灭。
2. 电机驱动:通过将IO口与电机驱动芯片连接,控制电机的转动方向、速度。
3. 继电器控制:通过将IO口与继电器连接,控制继电器的开关状态。
在使用IO口作为输出时,需要设置对应端口的引脚为输出模式,并将相应寄存器的值设置为高电平或低电平。
四、IO口的控制方法有两种常见的方式可以控制51单片机的IO口:位操作和寄存器读写。
1. 位操作:通过对相应寄存器的位进行操作来控制IO口的状态。
例如,要将P1口的第0位设置为高电平,可以使用以下代码:P1_0 = 1;要将P1口的第1位设置为低电平,可以使用以下代码:P1_1 = 0;2. 寄存器读写:通过读写相应寄存器的值来控制IO口的状态。
gpio常用寄存器解释GPIO是通用输入输出的缩写,是一种常见的硬件接口。
在嵌入式系统或单片机开发中,GPIO常用于与外部设备进行数据交互。
GPIO常用寄存器是用来控制和设置GPIO引脚的寄存器。
下面是几个常用的GPIO寄存器的解释:1. GPIO方向寄存器(GPIODIR):该寄存器用于设置GPIO引脚的输入或输出方向。
当某一位为1时,表示该引脚为输出模式;当某一位为0时,表示该引脚为输入模式。
2. GPIO数据寄存器(GPIODATA):该寄存器用于读取或设置GPIO引脚的数据。
当引脚为输出模式时,可以通过该寄存器设置引脚的输出值;当引脚为输入模式时,可以通过该寄存器读取引脚的输入值。
3. GPIO中断使能寄存器(GPIOIE):该寄存器用于启用GPIO引脚的中断功能。
当某一位为1时,表示该引脚的中断功能被启用;当某一位为0时,表示该引脚的中断功能被禁用。
4. GPIO中断状态寄存器(GPIOIS):该寄存器用于检测GPIO引脚的中断状态。
当某一位为1时,表示该引脚触发了中断;当某一位为0时,表示该引脚未触发中断。
读取该寄存器后,需清零相应引脚的中断状态。
5. GPIO上升/下降沿触发寄存器(GPIOIBE):该寄存器用于设置GPIO引脚的中断触发方式。
当某一位为1时,表示该引脚的中断触发方式为上升沿和下降沿;当某一位为0时,表示该引脚的中断触发方式为边沿触发。
通过使用这些GPIO常用寄存器,开发者可以灵活地控制和配置GPIO引脚的操作模式、数据传输和中断触发等功能。
在嵌入式系统中,GPIO的应用非常广泛,例如控制外部LED灯的亮灭、读取外部传感器的数据等。
熟悉并理解这些寄存器对于嵌入式系统的开发非常重要。
你知道io端口与io内存有哪些区别吗?(一)地址的概念物理地址:2)总线地址:总线的地址线或在地址周期上产生的信号。
外设使用的是总线地址,CPU使用的是物理地址。
,这是因为它们共享相同的地址空间——这句话有点难理解,详见下面的“独立编址”。
在其他平台上,可能需要转换/映射。
比如:CPU需要访问物理地址是0xfa000的单元,那么在x86平台上,会产生一个PCI总线上对0xfa000地址的访问。
因为物理地址和总线地址相同。
3)虚拟地址:现代操作系统普遍采用虚拟内存管理(VirtualMemory Management)机制,这需要MMU (MemoryManagement Unit)的支持。
MMU通常是CPU的一部分,如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到芯片引脚上,被内存芯片(物理内存)接收,这称为物理地址(Physical Address),如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(Virtual Address),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将虚拟地址映射成物理地址。
外设都是通过读写设备上的统一编址也称为“I/O内存”方式,外设寄存器位于“内存空间”(很多外设有自己的内存、缓冲区,外设的寄存器和内存统称“I/O空间”)。
如,S独立编址(单独编址):IO地址与存储地址分开独立编址,I/0端口地址不占用存储空间的地址范围,这样,在系统中就存在了另一种与存储地址无关的IO地址,CPU也必须具有专用与输入输出操作的IO指令(IN、OUT等)和控制逻辑。
独立编址下,地址总线上过来一个地址,设备不知道是给IO端口的、还是给存储器的,于是处理器通过MEMR/MEMW和IOR/IOW两组控制信号来实现对I/O端口和存储器的不同寻址。
如,CPU内存和I/O是一起编址的,就是说内存一部分的地址和I/O地址是重叠的。
单片机IO口结构及工作原理单片机(Microcontroller Unit,MCU)是一种集成了微处理器核心、主存储器、输入/输出端口和计时/定时器等功能部件的微型计算机系统。
它被广泛应用于各种电子设备中,如家电、汽车、工业控制等。
单片机的IO口是其中一个重要的功能部件,它负责与外部设备进行数据传输、信号输入输出等工作。
一、单片机IO口的结构单片机的IO口通常由GPIO(General Purpose Input/Output)端口组成。
GPIO是一种通用输入/输出口,具有多种工作模式的功能输入/输出,可以通过软件配置和控制来实现不同的功能。
一个GPIO引脚既可以作为输入口,也可以作为输出口。
当它作为输入口时,可以接收外部设备的输入信号,并由单片机内部进行处理和分析;当它作为输出口时,可以向外部设备发送数据信号或控制信号。
GPIO口的结构一般由以下几个部分组成:1.引脚:GPIO口与外部设备连接的接口,通常是芯片封装的金属引脚,可以引出到芯片外部的引脚脚座上。
2.输入/输出电路:GPIO口的输入/输出电路用于接收外部设备的信号或向外部设备发送信号。
对于输入电路,通常包括输入缓冲器、滤波器和电平转换器等部分;对于输出电路,通常包括输出驱动器和电平转换器等部分。
3.寄存器:GPIO口的寄存器用于存储和控制输入/输出的数据和参数。
单片机内部的软件可以通过对寄存器的读/写操作来实现对GPIO口的控制。
二、单片机IO口的工作原理1.配置GPIO口的工作模式:单片机的GPIO口通常有多种工作模式可选,如输入模式、输出模式、外部中断模式等。
在使用GPIO口之前,需要通过寄存器配置来选择所需的工作模式。
2.设置GPIO口的状态:GPIO口的状态通常分为高电平状态和低电平状态。
在输出模式下,可以通过寄存器设置GPIO口的输出值,从而控制输出的电平状态;在输入模式下,GPIO口将根据外部设备的输入信号自动判断电平状态。
arm cortex m0+ io位操作Arm Cortex-M0+是一款低功耗、高性能的微控制器核心,广泛应用于嵌入式系统中。
在嵌入式系统中,I/O(输入/输出)操作是非常重要的,它们允许我们与外部设备进行通信。
本文将详细介绍Arm Cortex-M0+的I/O操作。
Arm Cortex-M0+提供了多种I/O存储器映射。
这些I/O端口可以用来配置和控制外设,例如GPIO(通用输入/输出端口)、UART(通用异步收发器)和SPI(串行外设接口)等。
使用这些I/O端口,我们可以读写数据、配置引脚方向、设置中断等。
在Arm Cortex-M0+上,I/O操作可以通过寄存器访问来实现。
具体来说,我们可以使用C语言或汇编语言编写代码来操作这些寄存器。
以下是一些常用的输入/输出操作和相关寄存器的详细说明。
1. GPIO控制:Arm Cortex-M0+提供了GPIO端口,可以配置引脚的输入和输出模式,以及读取和写入引脚状态。
GPIO的控制可以通过操作相关寄存器来实现。
常用的GPIO控制寄存器包括GPIOx_MODER(配置引脚模式)、GPIOx_ODR(设置引脚输出状态)和GPIOx_IDR(读取引脚输入状态)等。
其中,x表示GPIO端口的编号。
例如,要将某个引脚配置为输出模式,可以使用以下代码:```GPIOx_MODER |= (1 << (pin * 2)); //将对应引脚的MODER位设置为1,表示输出模式```2. UART数据收发:UART是一种常见的串行通信接口,可以用于与其他设备进行数据交换。
Arm Cortex-M0+提供了UART控制器和相关寄存器,可以进行数据收发操作。
常用的UART控制寄存器包括USARTx_CR1(控制寄存器1)、USARTx_CR2(控制寄存器2)和USARTx_DR(数据寄存器)等。
其中,x表示UART控制器的编号。
以下是使用UART发送数据的示例代码:while (!(USARTx_SR & (1 << 7))); //等待发送缓冲区为空USARTx_DR = data; //将数据写入数据寄存器```3. SPI通信:SPI是一种常见的串行外设接口,用于与外部设备进行高速的全双工数据传输。
IO端⼝、IO内存、IO空间、内存空间的含义和联系1,IO空间:X86⼀个特有的空间,与内存空间独⽴的空间,同样利⽤IO空间可以操作数据,只不过是利⽤对应的IO端⼝操作函数,例如inb(), inbw(), inl(); outb(), outw(), outl()等。
2,内存空间:内存地址的寻址范围,例如32位内存空间为2的32次幂,即4G。
3,IO端⼝:当外部寄存器或内存映射到IO空间时,即只能⽤IO端⼝操作函数进⾏数据读写,称为IO端⼝。
4,IO内存:当外部寄存器或内存映射到内存空间时,即使⽤访问内存的⽅式对外部寄存器或者内存进⾏读写操作。
从上⾯定义可以看出,外部设备只能通过设备上的寄存器或者内存(SRAM?DRAM?)与CPU进⾏通讯,外部设备的寄存器可以是IO端⼝(映射到IO空间),也可以是IO内存(映射到地址空间)。
当映射到IO空间时,必须使⽤对应的IO操作函数;映射到内存空间时就要注意要使⽤特定的IO内存操作函数,最好不要直接使⽤指针操作,IO内存操作函数有如下:IO内存读函数:unsigned int ioread8(void *addr);unsigned int ioread16(void *addr);unsigned int ioread32(void *addr);IO内存写函数:unsigned int iowrite8(u8 value, void *addr);unsigned int iowrite16(u8 value, void *addr);unsigned int iowrite32(u8 value, void *addr);以下这些函数读和写⼀系列值到给定的I/O内存区域,从给定的buf读或写count个值到addr,参数count表⽰要读写的数据个数,⽽不是字节数void ioread8_rep(void *addr, void *buf, unsigned long count);void ioread16_rep(void *addr, void *buf, unsigned long count);void ioread32_rep(void *addr, void *buf, unsigned long count);void iowrite8_rep(void *addr, const void *buf, unsigned long count);void iowrite16_rep(void *addr, const void *buf, unsigned long count);void iowrite32_rep(void *addr, const void *buf, unsigned long count);需要操作⼀块IO地址时,使⽤下列函数(这些函数的⾏为类似于它们的C库类似函数)void memcpy_io(void *addr, u8 value, unsigned int count);void memcpy_fromio(void *dest, void *source, unsigned int count);void memcpy_fromio(void *dest, void *source, unsigned int count);由于边际效应的缘故,不管是否需要 ioremap,都不⿎励直接使⽤I/O内存指针,⽽应使⽤专门的I/O内存操作函数。
实验二单片机IO口的使用实验目的:掌握单片机IO口的使用方法,了解IO口的输入输出功能。
一、实验介绍在单片机系统中,IO口是通过端口来实现与外部设备的通信。
IO口可以用来输入控制信号或者输出数据信号,是单片机与外部世界交互的重要接口。
二、实验器材与工具1.单片机开发板2.扁平灯泡3.蜂鸣器4.电阻、电容等元器件5.逻辑分析仪三、实验步骤1.简单的IO口输出实验将一个扁平灯泡连接到单片机的一个IO口上,并将该IO口配置为输出模式。
实验中,可以通过控制该IO口的高低电平来控制灯泡的亮灭。
2.IO口输入实验将一个开关连接到单片机的一个IO口上,并将该IO口配置为输入模式。
实验中,可以读取该IO口的电平状态,来判断开关的状态。
3.组合实验将多个扁平灯泡和开关连接到单片机的IO口上,并通过控制和读取IO口的电平状态来实现各种功能。
可以实现灯泡的闪烁、扁平灯泡的亮度调节、蜂鸣器的控制等功能。
四、实验原理1.IO口模式设置单片机内部有寄存器用于控制IO口的工作模式。
通过设置相应的寄存器来将指定的IO口配置为输入或者输出模式。
2.IO口输出控制IO口的输出控制是通过操作相应的寄存器来实现的。
输出操作可以将指定的IO口设置为高电平或者低电平。
3.IO口输入读取IO口的输入读取也是通过操作相应的寄存器来实现的。
读取操作可以获取指定IO口的电平状态,以判断外部设备的状态。
五、实验总结通过这次实验,我学会了单片机IO口的配置与使用方法。
IO口是单片机与外部设备交互的重要接口,掌握了IO口的使用方法后,可以实现各种功能,如灯光控制、开关检测等。
同时,我也了解到了IO口的原理和应用场景,为以后的电子设计打下了基础。
I/O端口地址表Port addresses are not always constant across PC, AT and PS2 Unless marked, port addresses are relative to PC and XT only000-00F 8237 DMA controller:000 Channel 0 address register001 Channel 0 word count002 Channel 1 address register003 Channel 1 word count004 Channel 2 address register005 Channel 2 word count006 Channel 3 address register007 Channel 3 word count008 Status/command register009 Request register00A Mask register00B Mode register00C Clear MSB/LSB flip flop00D Master clear temp register00E Clear mask register00F Multiple mask register010-01F 8237 DMA Controller (PS2 model 60 & 80), reserved (AT)020-02F 8259A Master Programmable Interrupt Controller:020 8259 Command port (see 8259)021 8259 Interrupt mask register (see 8259)030-03F 8259A Slave Programmable Interrupt Controller (AT,PS2)040-05F 8253 or 8254 Programmable Interval Timer:040 8253 channel 0, counter divisor041 8253 channel 1, RAM refresh counter042 8253 channel 2, Cassette and speaker functions043 8253 mode control (see 8253)044 8254 PS/2 extended timer047 8254 Channel 3 control byte060-067 8255 Programmalbe Peripheral Interface (PC,XT,PCjr):060 8255 Port A keyboard input/output buffer (output PCjr)061 8255 Port B output062 8255 Port C input063 8255 Command/Mode control register060-06f 8042 Keyboard Controller (AT,PS2):060 8042 Keyboard input/output buffer register061 8042 system control port (for compatability with 8255)064 8042 Keyboard command/status register070 CMOS RAM/RTC, also NMI enable/disable (A T,PS2, see RTC)071 CMOS RAM data (A T,PS2)080 Manufacturer checkpoint port080-090 DMA Page Registers:081 High order 4 bits of DMA channel 2 address082 High order 4 bits of DMA channel 3 address083 High order 4 bits of DMA channel 1 address090-097 POS/Programmable Option Select (PS2):090 Central arbitration control Port091 Card selection feedback092 System control and status register094 System board enable/setup register095 Reserved096 Adapter enable/setup register097 Reserved0A0 NMI Mask Register (PC,XT) (write 80h to enable NMI, 00h disable) 0A0-0BF Second 8259 Programmalbe Interrupt Controller (AT,PS2):0A0 Second 8259 Command port (see 8259)0A1 Second 8259 Interrupt mask register (see 8259)0C0 TI SN76496 Programmable Tone/Noise Generator (PCjr)0C0-0DF 8237 DMA Controller 2 (AT):0C2 DMA channel 3 selector (see ports 6 & 82)0E0-0EF Reserved0F0-0FF Math Coprocessor (A T,PS2)0F0-0F5 PCjr Disk Controller:0F0 Disk Controller0F2 Disk Controller control port0F4 Disk Controller status register0F5 Disk Controller data port0F8-0FF Reserved for future microprocessor extensions 100-10F POS Programmable Option Select (PS2):100 POS Register 0, Adapter ID byte (LSB)101 POS Register 1, Adapter ID byte (MSB)102 POS Register 2, Option select data byte 1Bit 0 is card enable (CDEN)103 POS Register 3, Option select data byte 2104 POS Register 4, Option select data byte 3105 POS Register 5, Option select data byte 4Bit 7 is (-CHCK)Bit 6 is reserved106 POS Register 6, subaddress extension (LSB)107 POS Register 7, subaddress extension (MSB)110-1EF System I/O channel170-17F Fixed disk 1 (AT):170 disk 1 data171 disk 1 error172 disk 1 sector count173 disk 1 sector number174 disk 1 cylinder low175 disk 1 cylinder high176 disk 1 drive/head177 disk 1 status1F0-1FF Fixed disk 0 (AT):1F0 disk 0 data1F1 disk 0 error1F2 disk 0 sector count1F3 disk 0 sector number1F4 disk 0 cylinder low1F5 disk 0 cylinder high1F6 disk 0 drive/head1F7 disk 0 status200-20F Game Adapter210-217 Expansion Card Ports (XT):210 Write: latch expansion bus dataread: verify expansion bus data211 Write: clear wait,test latchRead: MSB of data address212 Read: LSB of data address213 Write: 0=enable, 1=/disable expansion unit214-215 Receiver Card Ports214 write: latch data, read: data215 read: MSB of address, next read: LSB of address21F Reserved220-26F Reserved for I/O channel270-27F Third parallel port (see PARALLEL PORT):278 data port279 status port27A control port280-2AF Reserved for I/O channel2A2-2A3 MSM58321RS clock2B0-2DF Alternate EGA, or 3270 PC video (XT, A T)2E0 Alternate EGA/VGAE1 GPIB Adapter (A T)2E2-2E3 Data acquisition adapter (AT)2E8-2EF COM4 non PS2 UART (Reserved by IBM) (see UART)2F0-2F7 Reserved2F8-2FF COM2 Second Asynchronous AdapterPrimary Asynchronous Adapter for PCjr300-31F Prototype Experimentation CardPeriscope hardware debugger320-32F Hard Disk Controller (XT):320 Read from/Write to controller321 Read: Controller Status, Write: controller reset322 Write: generate controller select pulse323 Write: Pattern to DMA and interrupt mask register324 disk attention/status330-33F Reserved for XT/370340-35F Reserved for I/O channel360-36F PC Network370-377 Floppy disk controller (except PCjr):372 Diskette digital output374 Diskette controller status375 Diskette controller data376 Diskette controller data377 Diskette digital input378-37F Second Parallel Printer (see PARALLEL PORT):378 data port379 status port37A control port380-38F Secondary Binary Synchronous Data Link Control (SDLC) adapter:380 On board 8255 port A, internal/external sense381 On board 8255 port B, external modem interface382 On board 8255 port C, internal control and gating383 On board 8255 mode register384 On board 8253 channel square wave generator385 On board 8253 channel 1 inactivity time-out386 On board 8253 channel 2 inactivity time-out387 On board 8253 mode register388 On board 8273 read: status; Write: Command389 On board 8273 write: parameter; read: response38A On board 8273 transmit interrupt status38B On board 8273 receiver interrupt status38C On board 8273 data390-39F Cluster Adapter3A0-3AF Primary Binary Synchronous Data Link Control (SDLC) adapter:3A0 On board 8255 port A, internal/external sense3A1 On board 8255 port B, external modem interface3A2 On board 8255 port C, internal control and gating3A3 On board 8255 mode register3A4 On board 8253 counter 0 unused3A5 On board 8253 counter 1 inactivity time-outs3A6 On board 8253 counter 2 inactivity time-outs3A7 On board 8253 mode register3A8 On board 8251 data3A9 On board 8251 command/mode/status register3B0-3BF Monochrome Display Adapter (write only, see 6845):3B0 port address decodes to 3B43B1 port address decodes to 3B53B2 port address decodes to 3B43B3 port address decodes to 3B53B4 6845 index register, selects which register [0-11h]is to be accessed through port 3B53B5 6845 data register [0-11h] selected by port 3B4,registers 0C-0F may be read. If a read occurs withoutthe adapter installed, FFh is returned. (see 6845)3B6 port address decodes to 3B43B7 port address decodes to 3B53B8 6845 Mode control register3B9 reserved for color select register on color adapter3BA status register (read only)3BB reserved for light pen strobe reset3BC-3BF Primary Parallel Printer Adapter (see PARALLEL PORT):3BC parallel 1, data port3BD parallel 1, status port3BE parallel 1, control port3C0-3CF EGA/VGA:3C0 VGA attribute and sequencer register3C1 Other video attributes3C2 EGA, VGA, CGA input status 03C3 Video subsystem enable3C4 CGA, EGA, VGA sequencer index3C5 CGA, EGA, VGA sequencer3C6 VGA video DAC PEL mask3C7 VGA video DAC state3C8 VGA video DAC PEL address3C9 VGA video DAC3CA VGA graphics 2 position3CC VGA graphics 1 position3CD VGA feature control3CE VGA graphics index3CF Other VGA graphics3D0-3DF Color Graphics Monitor Adapter (ports 3D0-3DB are write only, see 6845):3D0 port address decodes to 3D43D1 port address decodes to 3D53D2 port address decodes to 3D43D3 port address decodes to 3D53D4 6845 index register, selects which register [0-11h]is to be accessed through port 3D53D5 6845 data register [0-11h] selected by port 3D4,registers 0C-0F may be read. If a read occurs withoutthe adapter installed, FFh is returned. (see 6845)3D6 port address decodes to 3D43D7 port address decodes to 3D53D8 6845 Mode control register (CGA, EGA, VGA, except PCjr)3D9 color select palette register (CGA, EGA, VGA, see 6845)3DA status register (read only, see 6845, PCjr VGA access)3DB Clear light pen latch (any write)3DC Preset Light pen latch3DF CRT/CPU page register (PCjr only)3E8-3EF COM3 non PS2 UART (Reserved by IBM) (see UART)3F0-3F7 Floppy disk controller (except PCjr):3F0 Diskette controller status A3F1 Diskette controller status B3F2 controller control port3F4 controller status register3F5 data register (write 1-9 byte command, see INT 13)3F6 Diskette controller data3F7 Diskette digital input3F8-3FF COM1 Primary Asynchronous Adapter (see UART)3F0 Diskette controller status A:3220-3227 PS2 COM33228-322F PS2 COM44220-4227 PS2 COM54228-422F PS2 COM65220-5227 PS2 COM75228-522F PS2 COM8PC只用了10位地址线(A0-A9)进行译码,其寻址的范围为0H-3FFH,共有1024个I/O地址。
常用I/O设备简介计算机发展到现在,I/O设备的种类越来越多,在计算机系统中所起的作用也越来越重要,早期使用的纸带,卡片等输入输出介质早已被键盘、显示器、磁盘等代替,而且还涌现了一些新的设备。
如:对图像、语音、图形等进行识别和处理的设备。
今后,外设的发展趋势,将继续朝着智能化、功能复合化、高可靠性的方向发展。
随着计算机的不断进展,人类将最终通过“能听会说”、“能读会写”的外设,使智能计算机成为现实。
一、键盘(输入)字符键:字母键A-Z,a-z数字键0-9符号键!> < $控制键:CTRL SHIFT RESET ESC不同型号的机器,其键盘的构成可能不完全相同,键的排列顺序也可能不一样,但有一点是相同的---26个英文字母的排序和位置不变,这和英文打字机相同,和四通打字机也完全一样。
编码型:通过硬件线路来识别各键;非编码型:通过软件查询及键盘扫描查找被按下键。
二、打印机(输出)软拷贝设备:产生影像,一段时间后即失(显示器)硬拷贝设备:产生永久性记录(打印机、绘图仪)三、显示器(输入输出)是目前应用最广的人机通讯设备,它与键盘一起,构成显示终端。
字符显示器:显示字符、数字。
分辩率低图形显示器:除显示字符数字外,还能显示图形。
分辨率高i/o[编辑本段]1.I/O (input/output):输入输出端口就是输入输出地址。
每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。
CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。
存储器通常在CPU的同步控制下工作,接口电路比较简单;而I/O设备品种繁多,其相应的接口电路也各不相同,因此,习惯上说到接口只是指I/O接口。
一、I/0接口的概念1、接口的分类I/O接口的功能是负责实现CPU通过系统总线把I/O电路和外围设备联系在一起,按照电路和设备的复杂程度,I/O接口的硬件主要分为两大类:(1)I/O接口芯片这些芯片大都是集成电路,通过CPU输入不同的命令和参数,并控制相关的I/ O电路和简单的外设作相应的操作,常见的接口芯片如定时/计数器、中断控制器、DMA控制器、并行接口等。