第六章 通用IO接口的基本结构与基本应用
第6章 通用IO接口的基本结构与输出应用分解
11
AVR通用I/O端口的主要特点
• DDRx可控的方向寄存器。
– AVR的I/O端口结构同其它类型单片机的明显区别是,AVR采 用3 个寄存器来控制 I/O 端口。一般单片机的I/O 仅有数据寄存 器和控制寄存器,而 AVR 还多了一个方向控制器,用于控制 I/O的输入输出方向。由于输入寄存器PINx实际不是一个寄存 器,而是一个可选通的三态缓冲器,外部引脚通过该三态缓 冲器与MCU的内部总线连接,因此,读PINx时是读取外部引 脚上的真实和实际逻辑值,实现了外部信号的同步输入。这 种结构的 I/O 端口,具备了真正的读 - 修改 - 写( Read-ModifyWrite)特性。
这个运算对一个位取反有用 例如 在下面的例子中 位 7 是被翻转的 PORTA ^= 0x80; // 翻转位 7 ~a –- 按位取反 在表达式中这个运算执行一个取反 当用按位与运算关闭某些位 时 与这个运算组合使用尤其有用 如 13 PORTA &= ~0x80;// 关闭位 7
9
AVR通用I/O端口的主要特点
• 双向可独立位控的I/O口
– ATmega16的PA、PB、PC、PD四个端口都 是8位双向I/O口,每一位引脚都可以单独的 进行定义,相互不受影响。如用户可以在定 义PA口第0、2、3、4、5、6位用于输入的 同时定义第1、7位用于输出,互不影响
10
AVR通用I/O端口的主要特点
7
I/O端口寄存器 PA口寄存器—PORTA、DDRA、PINA各个位的具体定义
位 7 6 PORTA6 R/W 0
7 6 R/W 0
5 DDA5 R/W 0
5 PINA5 R N/A
4 PORTA4 R/W 0
4 DDA4 R/W 0
第6章常用IO接口电路
6.2.2 常用并行I/O接口电路
1. 并行I/O接口的基本概念 2. 常用简单接口芯片 (1) 缓冲器接口芯片 ①单向缓冲器74LS244 ②双向缓冲器74LS245 (2)锁存器接口芯片 ①锁存器74LS273
②锁存器74LS374
图6-15 74LS374作为输入/输出接口
③量程:量程是指ADC所能够转换的模拟量输入电压范围。 ④绝对精度:是指在ADC输出端获得给定的数字输出时,
所需要的实际模拟量输入值与理论模拟量输入值之差值。 ⑤相对精度:是指ADC进行满刻度校准以后,任意数字输
出所对应的实际模拟输入值(中间值)与理论模拟输入值 (中间值)之差。
(3)ADC0809)ADC0809简介及应用 ①ADC0809的内部结构与引脚功能
6.2.3 常用数/模和模/数转换电路
1.数/模(D/A)转换器 (1)D/A转换原理 ( 2 )D/A转换器的性能参数 ①分辨率 ②转换精度 影响精度的原因有失调误差、增益误差、线性误
差和微分线性误差等。 ③建立时间 ④温度系数
(3)DAC0832简介及应用 ①DAC0832的内部结构与引脚功能
1.无条件传送方式 (1)无条件输入
2.查询传送方式
3.中断传送方式
4.直接存储器存取(DMA)方式
直接存储器存取(DMA,Direct Memory Access)方式, 即外设在专用的接口电路DMA控制器的控制下直接和存储 器进行数据传送的方式。采用DMA方式所传送的数据,无 须CPU干涉,而是在存储器和高速外设之间直接进行交换。
计数器式A/D转换器,双积分式A/D转换器,逐次逼近式 A/D转换器,并行A/D转换器。 (3)A/D转换器的性能参数 ①分辨率(位数):分辨率是指A/D转换器可转换成数字 量的最小模拟电压值,它标志着A/D转换器对输入电压微 小变化的响应能力。
第六章 IO接口电路
DMA传送方式
CPU I/O、DMA DMA请求
I/O初始化
读I/O控制器数据
其他任务 数据存入存储器
I/ODMA
DMAMem
否
传送完成?
引起中断
是
处理DMA中断
DMA CPU 子程序返回
6.2 中断控制器
• 6.2.1 概述 • 6.2.2 S3C44B0x的中断控制器
2013-8-9
6.1 引言——数据传送方式
• I/O的数据传送方式
– 查询
• 最简单、最可靠的数据传送方式
– 中断
• 嵌入式系统最常用的数据传送方式
– 直接内存访问(DMA)
• 批量数据传送方式
2013-8-9
6
程序查询方式
• cpu运行输入、输出程序循环对输入、输出设备 的状态寄存器进行查询,若准备就绪则处理这个输 入或输出,否则继续等待或查询
16
1 中断源
• S3C44B0x中断控制器的中断源有30个
– 中断请求线只有26个
• 其中外部中断4、5、6、7共用一根中断请求线 • UART0、UART1接收错误共用一根中断请求线 • 中断源查询
2013-8-9
17
中断源
EINT0 EINT1
Description
External interrupt 0 External interrupt 1
21
中断源 INT_TIMER1 INT_TIMER2 INT_TIMER3 INT_TIMER4 INT_TIMER5 INT_URXD0 INT_URXD1 INT_IIC INT_SIO INT_UTXD0 INT_UTXD1 INT_RTC 2013-8-9
第6章 基本输入输出接口(jkbs)--0173页PPT
IN AX,DX
第6章:OUT指令实例(向300H端口输出一个字节)
;唯一的方法:间接寻址,字节量输出 MOV AL,BVAR ;BVAR是字节变量 MOV DX,300H OUT DX,AL
第6章:输入/输出指令(IN、OUT)特点
(1) 累加器AL、AX的专用指令 对输入指令IN ,目的操作数只能为AL, 或AX IN AL, 21H IN AX, DX IN BX, 21H 对输出指令OUT ,源操作数只能为AL, 或AX OUT 20H, AL OUT DX, AX OUT DX, CX
I/O接口是位于系统与外设间、用来协助完成数据传 送和控制任务的逻辑电路,是CPU与外界进行信息 交换的中转站。
PC机系统板的可编程接口芯片、I/O总线槽的电路 板(适配器)都是接口电路
CPU
接口 电路
I/O 设备
第6章:6.1.1 I/O接口的主要功能
⑴ 对输入输出数据进行缓冲和锁存 输出接口有锁存环节;输入接口有缓冲环节 实际的电路常见: 输出锁存缓冲环节、输入锁存缓冲环节
;方法3:直接寻址,字节量输入
IN AL,21H
MOV AH,AL
IN AL,20H
;方法4:间接寻址,字节量输入
MOV DX,21H
IN AL,DX MOV AH,AL DEC DX IN AL,DX
;方法1:直接寻址,字量输入 IN AX,20H
;方法2:间接寻址,字量输入 MOV DX,20H
OUT 20H, AL
E620
IN AL, DX
输入指令(IN:将外设数据传送给CPU内的AL/AX)
IN AL,i8 ;字节输入
IN AL,DX ;字节输入
IN AX,i8;字输入
课件:第6章 基本IO接口技术20140217
空间
读写,使程序清晰易读。
I/O
空间
对内存操作的指令不能用于I/O 0
⑴ 数据寄存器
– 输入数据寄存器:保存外设给CPU的数据 – 输出数据寄存器:保存CPU给外设的数据
⑵ 状态寄存器
– 保存外设或接口电路的状态
⑶ 控制寄存器
– 保存CPU给外设或接口电路的命令
2021/6/30
14
2. 接口电路的外部特性
• 主要体现在引脚上,分成两侧信号 面向CPU一侧的信号:
– 用于与CPU连接 – 主要是数据、地址和控制信号
数据寄存器
CPU
地址1.总接线A口B电路的状内态部寄存结器构 2. 接口电路的外部特性
控制3.总接线C口B电路芯控片制的寄存分器类 4. 接口电路的可编程性
数据 状态
外设
控制
2021/6/30
13
1. 接口电路的内部结构
• CPU与外设主要有数据、状态和控制信息需 要相互交换,于是从应用角度看内部:
串行传送(一位一位)
2021/6/30
7
6.1.1 I/O信息的种类(续)
2. 状态信息 — CPU与外设之间交换数据时的联络信息
3. 控制信息 — CPU发给外设的命令信息。
2021/6/30
8
6.1.2 I/O接口的功能
1.为什么需要I/O接口(电路)?
• 微机的外部设备多种多样 多种外设 • 工作原理、驱动方式、信息格式、以及工作速
实际的电路常见:
输出锁存缓冲环节、输入锁存缓冲环节
⑵ 设备选择--对I/O端口进行寻址
⑶ 对信号的形式和数据的格式进行变换
微机直接处理:数字量、开关量、脉冲量
第六章IO接口与总线
READY? N
MOV CX, COUNT_1
READ_SI:IN AL,PORT_SI TEST AL, 01H ;查询READY
Y 输入数据信息
JZ READ_SI
IN AL,PORT_IN MOV [BX],AL
请思考:
INC BX LOOP READ_SI
假如D1代表输出状态位BUSY,输 出的程序该如何完成?例:打印机
接口与端口:CPU要与多个外设打交道,一个外设又需和CPU 交换多种信息,所以一个接口通常包含多个端口。同一时刻 CPU只能和一个端口交换信息。
二、简单的输入输出接口芯片
1、缓冲器:74LS244
TTL 8位单向缓冲器 作用:缓冲+提高总线驱动能力 简述:分成4位的两组,当成8位 数据使用时,两个控制端连接在一 起。控制端低电平有效 常用连接:A端接外设,Y端接 CPU的数据总线。两个G端并接, 由CPU片选。
三 1、IO端口
CPU与外设通信时传送的信息由:数据信息、状态信息及控制信息
DB
主 AB
机 CB
接口电 路
数据信息
外 状态信息
设 制信息
不同的信息进入不同的寄存器,通常将这些寄存器和他们的控制 逻辑统称为IO端口。CPU可对端口的信息直接读写。对应三种 端口:数据端口、状态端口、命令端口(控制端口)。三种信息 分别进入三种端口的寄存器,完成不同的功能。但是传输的通道 都是一样的,都是通过数据总线。
传送前,CPU首先将有关参数,包括DMAC的工作方式, 要访问的存储单元的首地址,要传送的字节数等预先写入 DMAC。 当外设需要传送数据时,向DMAC提出请求,该信号应该 维持到DMAC响应为止。 DMAC收到请求后,向CPU提出HOLD总线请求,申请借 用总线,CPU在当前总线周期结束时,将响应该请求,发回 HLDA信号,然后输出高阻态放弃总线。 DMAC向外设发回响应,DMA传送开始。DMAC接管总 线,将数据从外设顺序传送到存储器,并进行地址增量,对 传送次数计数等操作,一直到传输完成,将HOLD信号置为 无效,将总线交还给CPU。
第六章输入输出接口基础(CPU与外设之间的数据传输)
§6.1 接口的基本概念
3、什么是微机接口技术?
处理微机系统与外设间联系的技术 注意其软硬结合的特点 根据应用系统的需要,使用和构造相应的接 口电路,编制配套的接口程序,支持和连接 有关的设备
§6.1 接口的基本概念
4、接口的功能
⑴对I/O端口进行寻址,对送来的片选信号进行 识别;
(2)根据读/写信号决定当前进行的是输入操作还 是输出操作,对输入输出数据进行缓冲和锁存 输出接口有锁存环节;输入接口有缓冲环节 实际的电路常见: 输出锁存缓冲环节、输入锁存缓冲环节
对接口内部寄存器的寻址。
P279
§6.2 CPU与外设之间数据的传送方式
CPU与外设之间传输数据的控制方式通常有 三种: 程序方式:
• 无条件传送方式和有条件传送方式
中断方式 DMA方式
§6.2 CPU与外设之间数据的传送方式
一、程序方式 指用输入/输出指令,来控制信息传输
的方式,是一种软件控制方式,根据程序控 制的方法不同,又可以分为无条件传送方式 和条件传送方式。
输入数据寄存器:保存外设给CPU的数据 输出数据寄存器:保存CPU给外设的数据
⑵ 状态寄存器
保存外设或接口电路的状态
⑶ 控制寄存器
保存CPU给外设或接口电路的命令
§6.1 接口的基本概念
接口电路的外部特性 主要体现在引脚上,分成两侧信号 面向CPU一侧的信号:
用于与CPU连接 主要是数据、地址和控制信号
程序不易阅读(不易分 清访存和访问外设)
00000
I/O 部分
§6.1 接口的基本概念
独立编址方式
FFFFF
优点:
I/O端口的地址空间独立
内存 空间
控制和地址译码电路相对简单 FFFF I/O
IO接口电路的典型结构输入输出的控制方式
微机原理第六章接口2??I/O接口电路的典型结构??输入输出的控制方式??DMA控制器8237A及应用微机原理第六章接口3I/O接口概述为什么需要I/O接口电路??微机的外部设备多种多样其工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大它们不能与CPU直接相连必须经过中间电路再与系统相连??这部分电路被称为I/O接口电路微机原理第六章接口4I/O接口概述续1什么是I/O接口电路??I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路CPUCPU接口接口电路电路I/OI/O设备设备微机原理第六章接口5I/O接口的主要功能⑴对输入输出数据进行缓冲和锁存⑵对信号的形式和数据的格式进行变换微机直接处理数字量、开关量、脉冲量⑶对I/O端口进行寻址⑷与CPU和I/O设备进行联络微机原理第六章接口6I/O接口的典型结构控制总线CB地址总线ABI/O接口电路数据控制状态数据总线DBCPU外设控制寄存器状态寄存器数据寄存器微机原理第六章接口7接口电路的内部结构??CPU与外设主要有数据、状态和控制信息需要相互交换于是从应用角度看内部⑴数据寄存器??保存外设给CPU和CPU发往外设的数据⑵状态寄存器??保存外设或接口电路的状态⑶控制寄存器??保存CPU给外设或接口电路的命令微机原理第六章接口8接口电路的外部特性??主要体现在引脚上分成两侧信号面向CPU一侧的信号??用于与CPU连接??主要是数据、地址和控制信号面向外设一侧的信号??用于与外设连接??提供的信号五花八门??功能定义、时序及有效电平等差异较大微机原理第六章接口9接口电路芯片的分类??接口电路核心部分往往是一块或数块大规模集成电路芯片接口芯片??通用接口芯片??支持通用的数据输入输出和控制的接口芯片??面向外设的专用接口芯片??针对某种外设设计、与该种外设接口??面向微机系统的专用接口芯片??与CPU和系统配套使用以增强其总体功能微机原理第六章接口10接口电路的可编程性??许多接口电路具有多种功能和工作方式可以通过编程的方法选定其中一种??接口需要进行物理连接还需要编写接口软件??接口软件有两类??初始化程序段——设定芯片工作方式等??数据交换程序段——管理、控制、驱动外设负责外设和系统间信息交换微机原理第六章接口11I/O端口的编址接口电路占用的I/O端口有两类编排形式??I/O端口单独编址??I/O地址空间独立于存储地址空间??如8086/8088??I/O端口与存储器统一编址??它们共享一个地址空间??如M6800微机原理第六章接口12I/O端口单独编址??优点??I/O端口的地址空间独立??控制和地址译码电路相对简单??专门的I/O指令使程序清晰易读??缺点??I/O指令没有存储器指令丰富内存空间I/O空间FFFFF0FFFF微机原理第六章接口13I/O端口与存储器统一编址??优点??不需要专门的I/O指令??I/O数据存取与存储器数据存取一样灵活??缺点??I/O端口要占去部分存储器地址空间??程序不易阅读不易分清访存和访问外设内存部分I/O部分存储器空间00000FFFFF微机原理第六章接口148088/8086的输入输出指令??输入指令演示IN ALPORT字节输入直接寻址IN ALDX字节输入间接寻址IN AXPORT字输入直接寻址IN AXDX字输入间接寻址输出指令演示OUT PORTAL字节输出直接寻址OUT DXAL字节输出间接寻址OUT PORTAX字输出直接寻址OUT DXAX字输出间接寻址微机原理第六章接口158088/8086的I/O端口??8088只能通过输入输出指令与外设进行数据交换呈现给程序员的外设是端口Port即I/O地址??8086用于寻址外设端口的地址线为16条端口最多为2166553664K个端口号为0000H FFFFH??每个端口用于传送一个字节的外设数据微机原理第六章接口16I/O寻址方式??8088/8086的端口有64K个无需分段设计有两种寻址方式直接寻址只用于寻址00H FFH前256个端口操作数i8表示端口号间接寻址可用于寻址全部64K个端口DX寄存器的值就是端口号??对大于FFH的端口只能采用间接寻址方式微机原理第六章接口17数据交换方式??如果输入输出一个字节利用AL寄存器??如果输入输出一个字利用AX寄存器??输入一个字实际上是从连续两个端口输入两个字节分别送AL对应低地址端口和AH对应高地址端口??输出一个字实际上是将AL对应低地址端口和AH对应高地址端口两个字节的内容输出给连续两个端口微机原理第六章接口18IN指令从20H端口输入一个字字输入直接寻址in ax20h字输入间接寻址mov dx20hin axdx字节输入直接寻址in al21hmov ahalin al20h字节输入间接寻址mov dx21hin aldxmov ahaldec dxin aldx微机原理第六章接口19OUT指令向300H端口输出一个字节唯一的方法间接寻址字节量输出mov albvarbvar是字节变量movdx300hout dxal微机原理第六章接口20I/O地址的译码??I/O地址的译码方法与存储器地址的译码方法一样但有它的特点??常采用部分译码方式。
第六章 IO接口和总线
1、缓冲器 74LS244
单路基本组成:
真值表 A
B
G#
0
A
1
B
1
0 G
1
0
高阻
0
状态
1A1 1A2
/1G 1A1 2Y4 1A2 2Y3 1A3 2Y2 1A4 2Y1 GND
1 2 3 4 5 6 7 8 9 10
1Y1 1Y2 1Y3 1Y4 2Y1 2Y2 2Y3 2Y4
244
20 19 18 17 16 15 14 13 12 11
需要输入设备送入信息,输出设备送出结果,这些输 入输出设备被称为外设。
通信:计算机(CPU)与外设间的数据、状态和控制
命令的交换过程统称为通信。
2、CPU与外设直接通信存在的问题 速度不匹配(CPU快,外设慢) 信号电平不匹配 (CPU使用TTL电平,外设多为机电设备) 信号格式不匹配 (CPU总线上为并行数字量,而外设有串行模拟量等) 时序不匹配 解决方案: 用I/O接口:把外设连接到CPU总线上的一组逻辑电 路的总称。用于协调外设与主机之间的信息交换。
2、译码的常用方法
线选法
利用一根地址线,产生指定的端口地址的选择信号。
A7
PORT1
当A7=1,选中PORT1,地址可为80H 当A6=1,选中PORT2,地址可为40H 当A5=1,选中PORT3,地址可为20H
A6
PORT2
对于PORT1,地址为81H,82H,83H
等仍可选中。
A5
PORT3
无条件输出电路例子 例:假设该端口号为
0# D0
80H,要想让0、2、4、
6号灯亮,如何编写
D1
1D 2D
IO接口技术
I/O指令(IN、OUT) ★ I/O指令(IN、OUT)
特殊情况:如果端口地址>256(00FFH),那么需先把端口地址放在 特殊情况:如果端口地址>256(00FFH),那么需先把端口地址放在 >256 ), DX寄存器内 其指令格式如下: 寄存器内, DX寄存器内,其指令格式如下: 输入: 输入:MOV IN 或 IN OUT 或 OUT 输出: 输出:MOV DX, DX,XXXXH AX, AX,DX AL, AL,DX DX, DX,XXXXH DX, DX,AX DX, DX,AL 例:MOV DX,03FCH IN AX,DX 把端口地址为03FCH的内容送 把端口地址为03FCH的内容送AX 的内容送AX
外围设备特点
输入设备:键盘、鼠标、扫描仪、手写笔 输出设备:显示器,打印机,绘图仪; 输入兼输出设备:终端,传真机; 外存储器:磁盘,磁带、光盘; 数据通讯设备:FAX ,MODEM; 过程控制设备:A/D,D/A,传感器,仪表。
外部设备多种多样,它们在工作原理、 外部设备多种多样,它们在工作原理、驱动方式 、信息格式、以及工作速度方面彼此差别很大 信息格式、
I/O端口与寻址 I/O端口与寻址
状态端口:状态端口是用来指示外设的当前状态。 状态端口:状态端口是用来指示外设的当前状态。 每种状态用 位表示,每个外设可以有几个状态位 每种状态用1位表示,每个外设可以有几个状态位 ,它们可由CPU读取,以测试或检查外设的状态, ,它们可由CPU读取,以测试或检查外设的状态, 决定程序的流程。
I/O体系概述 I/O体系概述★ 体系概述★
因此,为了解决计算机与种类繁多的外部设备之间 因此, 的连接和信息交换,必须有一个信息转换和传输的 设备。一般称为 I/O接口或 I/O Controller。 I/O接口或 Controller。
七、通用IO口基本结构与输出应用
一、通用 I/O 口的基本结构与特性 ATmega16 芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4 组8 位,共32
路通用I/O接口,分别对应于芯片上32根I/O引脚。所有这些I/O 口都是双(有的为3)功能复用 的。其中第一功能均作为数字通用I/O 接口使用,而复用功能则分别用于中断、时钟/计数器、 USRAT、I2C 和SPI 串行通信、模拟比较、捕捉等应用。这些I/O 口同外围电路的有机组合,构 成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成 和实现了千变万化的应用。
#include <iom16v.h>
#include <macros.h> void DelayMs(unsigned int i);
//延时函数
void main(void)
{
int i; DDRA =0XFF; PORTA=0X00; DDRB =0x00;
//端口输出 //输出低电平,LED点亮 //端口上拉,不使用的端口建议上拉,不要使其悬浮
1、基本结构 图6-1 为通用I/O 口的基本结构示意图。从图中可以看出,每组I/O 口配备三个8 位寄 存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。 I/O 口的工作方式和表现特征由这3 个I/O 口寄存器控制。
方向控制寄存器DDRx 用于控制I/O 口的输入输出方向,即控制I/O 口的工作方式为输出方 式还是输入方式。
DelayMs(1000);
//调用延时程序
}
}
}
void DelayMs(unsigned int i)
io接口的基本组成
io接口的基本组成
IO接口的基本组成包括控制逻辑电路、设备选择电路、命令寄存器和命令译码器、设备状态标记、数据缓冲寄存器。
IO接口的功能是负责实现CPU通过系统总线把I/O电路和外围设备联系在一起,按照电路和设备的复杂程度,I/O接口的硬件主要分为两大类,一是I/O接口芯片,这些芯片大都是集成电路,通过CPU输入不同的命令和参数,并控制相关的
I/O电路和简单的外设作相应的操作,常见的接口芯片有定时/计数器、中断控制器、DMA控制器、并行接口等;二是I/O接口控制卡。
第六章_基本输入输出接口技术
20
6.3 CPU与外设之间的数据传送方式
[例] 设状态端口地址为086H,数据端口地址为084H,外 设忙碌D7=1,请用查询方式写出CPU从存储器缓冲区 Buffer送出1KB的数据给外设的程序段。 LEA SI , Buffer ;取Buffer的有效地址送SI MOV CX , 1000 ;循环次数 W1: MOV DX, 086H ;状态端口地址送DX W2: IN AL , DX ;从状态端口读入状态信息 AND AL,80H ; BUSY=0? JNZ W2 ; BUSY=1,返回继续查询 MOV AL,[SI] ; BUSY=0,取数据 MOV DX, 084H ;数据端口地址送DX OUT DX,AL ;数据输出到数据端口 INC SI ;SI指向下一个字节数据 LOOP W1 ;CX-1送CX≠0,循环 HLT ;CX=0,传送结束
FFFFF
内存 空间 I/O 空间
10
§6-2 I/O端口的编址与访问
二、 I/O端口地址的译码方法:
I/O端口地址译码的一般原则是:把CPU用于I/O端口寻址 的地址线分为高位地址线和低位地址线两部分:
将低位地址线直接连到I/O接口芯片的相应地址引脚, 实现片内寻址,即选中片内的端口。 将高位地址线与CPU的控制信号组合,经地址译码电 路产生I/O接口芯片的片选信号。 常见的译码器: 2/4线译码器74LS139 3/8线译码器74LS138
返回断点
6.3 CPU与外设之间的数据传送方式
关于中断的几点说明:
采用中断的数据传送方式时,外设处于主动申请地 位,CPU配合进行数据传送;CPU不必反复去查询 外设的状态,而是可以与外设“并行工作”,因此 提高了CPU的工作效率,并且更具有实时性。
第6章-1 IO-概述
6.1 接口基本概念
为什么需要I/O接口(电路)? 多种外设 微机的外部设备多种多样 工作原理、驱动方式、信息格式、以及
工作速度方面彼此差别很大 它们不能与CPU直接相连 必须经过中间电路再与系统相连 这部分电路被称为I/O接口电路
多种多样的外设
工作原理不同
机械、电子、机电、电磁……
IOR IOW
控制逻辑
I/O端口单独编址
FFFFF
内存
优点:
空间 FFFF
I/O
I/O端口的地址空间独立
空间
控制和地址译码电路相对简单 0
专门的I/O指令使程序清晰易读
缺点:
I/O指令没有存储器指令丰富
80x86采用I/O端口独立编址
I/O接口寻址
统一编址:
存贮器映象I/O寻址方式
3) 接口电路芯片的分类
接口电路核心部分往往是一块或数块大 规模集成电路芯片(接口芯片):
通用接口芯片
支持通用的数据输入输出和控制的接口芯片
面向外设的专用接口芯片
针对某种外设设计、与该种外设接口
面向微机系统的专用接口芯片
与CPU和系统配套使用,以增强其总体功能
4) 接口电路的可编程性
(4)DMA传送方式
希望克服程序控制传送的不足: 外设→CPU→存储器 外设←CPU←存储器
直接存储器存取DMA: 外设→存储器 外设←存储器
CPU释放总线,由DMA控制器管理
DMA传送的工作过程
⑴ CPU对DMA控制器进行初始化设置 ⑵ 外设、DMAC和CPU三者通过应答信号
建立联系:CPU传将总送线流交程给DMAC控制
输入、输出端口可以是同一个I/O地址
微机系统与接口教学资料io接口技术基础概述课件
微机系统与接口教学资料 第6章 io
接口技术基础(概述)
22
接口电路的基本结构
AB
接 主 DB 机
CB
译码 电路
控制 逻辑
数据输入寄存器 (or 三态门)
数据输出寄存器 (锁存器)
状态寄存器 (or 三态门)
采用I/O独立编址方式(但地址线与存储器共用) 地址线上的地址信号用 I O / M 来区分:
IO/ M =1 时为I/O地址 I/O操作只使用20根地址线中的16根: A15 ~ A0 可寻址的I/O端口数为64K(65536)个 I/O地址范围为0~FFFFH IBM PC只使用了1024个I/O地址(0~3FFH)
微机系统与接口教学资料 第6章 io
接口技术基础(概述)
20
I/O端口地址的译码
I O W 、I O R 、 A15 ~ A0 OUT指令将使总线的 I O W 信号有效
IN指令将使总线的I O R 信号有效
当接口只有一个端口时,16位地址线一般应全部 参与译码,译码输出直接选择该端口;当接口具有 多个端口时,则16位地址线的高位参与译码(决 定接口的基地址),而低位则用于确定要访问哪一 个端口。
例如: 某外设接口有4个端口,地址为2F0H~
2F3H,则其基地址为2F0H,由A9~A2译码得到,
而A1、A0用来确定4微个机系端接统口与口技接术中口基教础的学(资某概料述一第)6个章 io。
21
I/O数据的传送方式
并行 一个数据单位(通常为字节)的各位同时传送 速度快、距离短、成本高 例:PC机的并行接口(通常用于连接打印机)
第六章 IO 接口和总线
(4)设置时序控制电路来同步CPU和外设的工作;
接口电路接受CPU送来的命令或控制信号、定时信号,实施对外设的 控制和管理,外设的工作状态和应答信号也通过接口及时返回给CPU,
以联络信号来同步CPU和外设的工作。
(5)提供地址译码电路 CPU要与多个外设通讯,一个外设又往往要与CPU交换几种信息,因而 一个外设接口中通常包含若干个端口,而在同一时刻,CPU只能和某 一个端口交换信息。外设端口不能长期与CPU相连,只有被CPU选中的 设备才能与CPU交换数据。这就需要外设地址译码电路,使CPU在同一 时刻只能选中某一个端口。
实现的。锁存器在打入脉冲CP上升沿将输入端D的数据锁存在它的输出
Q端。编写点亮二极管的程序。 (端口地址为0000H)
+5v 300 D0
D0
Q0
1
~
IOW
A8 A9 A10 A11 A12 A13 A14 A15
~
D7 A0 A1 A2 A3 A4 A5 A6 A7
D7
Q7
1
+5v 300
1
因此程序可以不必检查外设的状态,而在需要进行输入或输出操作时,直接 执行输入输出指令。
无条件传送方式一般用于控制CPU与低速接口之间的信息交换。 例如开关、温度、压力流量等(A/D)转换器。
由于这些信号变换缓慢,当需要采集这些数据时,外设已经将数据准备就绪 了,因此无需检查端口的状态,就可以立即采集数据。
CP
MOV MOV OUT
3、 74LS373
当G由高电平变低电平时,OE保持低电平,出现在输出端O的是以前锁 存的数据,D端变化不影响输出。 若OE为高电平,无论G端为何种电平,输出都为高阻态。 如果要先输入数据,以后适当时刻输出,可对G和OE分别控制。 如果只用记忆功能,不需三态缓冲,可直接将OE接地,仅控制G。
简述io接口的基本结构
简述io接口的基本结构抽象I/O(Input/Output,简称I/O)是指把程序间数据的格式和传输的介质分离的方法。
I/O接口是程序不同模块之间的接口,它定义了模块之间数据交互的报文格式。
它由程序员定义,是程序框架中对外公开接口的面向服务的抽象,把复杂的实现细节隐藏起来,只向外提供消息接口。
I/O接口的基本结构主要由消息报文格式,消息传输协议,消息交互模型,多路接入技术,安全技术等五部分组成。
首先,消息报文格式是程序间消息格式的定义。
它通过定义消息的结构,给出消息的识别规则,实现程序间消息的可读性和交互性。
其次,消息传输协议是I/O接口间消息传递机制的定义。
它定义了消息传递的过程,实现消息的传输和处理,才能实现消息在软件系统中的传播。
此外,消息交互模型是I/O接口的流程控制规则的定义。
它定义了多个程序之间通信的行为,实现数据流的统一,以便实现更加精准的消息处理。
多路接入技术可以有效的把多个程序之间的消息隔离开来,同时确保消息的可靠性。
最后,安全技术是I/O接口消息传输安全性的保证。
它引入密码技术和加密技术,使发送和接收消息的两个进程能保证消息的安全性。
基于以上五部分,I/O接口可以提供更高层次的服务。
I/O接口可以在软件系统中应用,它可以有效的实现来源程序和目的程序之间的复杂的消息交互。
由于其系统性和灵活性,它被广泛应用于电子商务、物联网、大数据和人工智能等领域。
总而言之,I/O接口的基本结构是由消息报文格式,消息传输协议,消息交互模型,多路接入技术,安全技术等五部分组成。
它可以实现模块之间高效、可靠、可扩展的消息交互,可以满足软件系统的复杂需求,并在软件系统中发挥重要的作用。
IO口基本结构及应用一数码管显课件
❖AT89C52有32根输入/输出线,组成4个8位并 行 输 入 / 输 出 接 口 , 分 别 称 为 P0 口 、 P1 口 、 P2口和P3口。这4个接口可以并行输入或输 出8位数据;也可按位使用,即每一根输入/输 出线都能独立地用作输入或输出。
❖每个端口都由锁存器、输出驱动器、输入缓 冲器组成。
fgb
e
c
d
dp c om c om
L N3161AS
6
1
共阴
共阳
6
1
L N3161BS c om c omLeabharlann afgbe
c
d
dp
a b c d e f g dp
2
2
3
3
7
7
a
b
c
d
e
f
g
dp
com com
a
b
c
d
e
f
g
dp
IO口基本结构及应用一—数码管显
10
四联数码管结构
这里每一个数码管的段 码A—F是连接在一起 的,每个数码管的公共 端是独立的。
I/O端口的结构——P0口
❖P0口有两种功能——地址/数据分时复用总线 和通用I/O接口
IO口基本结构及应用一—数码管显
I/O端口的结构——P2口
❖P2口有两种功能——通用输入输出接口和地 址总线
IO口基本结构及应用一—数码管显
I/O口的基本应用
在89系列单片机的应用中,通常要进行信息显示, 而显示器件大多是采用LED数码管或LCD。对LED和 LCD器件来说,它们的接口方法是不同的。因为 LED—般所需的电流较大。而且,对于数码管显示器 而言,在显示时要求给出和显示数字对应的7段或8段 显示码;对于LCD器件来说,现在已经配置了专门的 驱动电器,在进行信息显示时,往往把信息写入驱动 电路的存储器中。由于存储器和LCD显示屏是一种映 射关系,故只要写入其存储器的信息适当,则可以在 LCD中显示出对应的正确信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于AVR 的单片嵌入式系统原理与实践应用第6 章通用I/O接口基本结构与输出应用从本章开始,将从AVR 单片机的基本功能单元入手,讲解其各个外围功能部件的基本组成和特性,以及它们的应用。
ATmega16 芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4 组8 位,共32 路通用I/O 接口,分别对应于芯片上32 根I/O 引脚。
所有这些I/O 口都是双(有的为3)功能复用的。
其中第一功能均作为数字通用I/O 接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C 和SPI 串行通信、模拟比较、捕捉等应用。
这些I/O 口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。
由于刚开始学习I/O 的应用,读者还没有掌握中断和定时计数器的使用,所以在本章的实例中,调用了CVAVR 提供的软件延时函数来实现时间延时等待的功能。
需要指出的是,使用软件延时的方式会造成MCU 效率的下降,而且也不能实现精确的延时,所以在一般情况下应尽量不使用软件延时的方式。
在后面的章节里,会逐步介绍如何使用T/C 和中断实现延时的正确方法。
6.1 通用I/O口的基本结构与特性6.1.1 I/O口的基本结构图6-1 为AVR 单片机通用I/O 口的基本结构示意图。
从图中可以看出,每组I/O 口配备三个8 位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。
I/O 口的工作方式和表现特征由这3 个I/O 口寄存器控制。
第 6 章通用I/O 接口基本结构与输出应用方向控制寄存器DDRx 用于控制I/O 口的输入输出方向,即控制I/O 口的工作方式为输出方式还是输入方式。
当DDRx=1 时,I/O 口处于输出工作方式。
此时数据寄存器PORTx 中的数据通过一个推挽电路输出到外部引脚(图6-2)。
AVR 的输出采用推挽电路提高了I/O 口的输出能力,当PORTx=1 时,I/O 引脚呈现高电平,同时可提供输出20mA 的电流;而当PORTx=0 时,I/O 引脚呈现低电平,同时可吸纳20mA 电流。
因此,AVR 的I/O 在输出方式下提供了比较大的驱动能力,可以直接驱动LED 等小功率外围器件。
当DDRx=0 时,I/O 处于输入工作方式。
此时引脚寄存器PINx 中的数据就是外部引脚的实际电平,通过读I/O 指令可将物理引脚的真实数据读入MCU。
此外,当I/O 口定义为输入时(DDRx=0),通过PORTx 的控制,可使用或不使用内部的上拉电阻(图6-3)。
图图6-3 通用I/O 口输入工作方式示意图(带内部上拉)表6.1 是AVR 通用I/O 端口的引脚配置情况。
基于 AVR 的单片嵌入式系统原理与实践应用表 6.1 I/O 口引脚配置表表中的 PUD 为寄存器 SFIOR 中的一位,它的作用相当 AVR 全部 I/O 口内部上拉电阻的总 开关。
当 PUD=1 时,AVR 所有 I/O 内部上拉电阻都不起作用(全局内部上拉无效);而 PUD=0时,各个 I/O 口内部上拉电阻取决于 DDRXn 的设置。
AVR 通用 I/O 端口的主要特点为: 双向可独立位控的 I/O 口ATmega16 的 PA 、PB 、PC 、PD 四个端口都是 8 位双向 I/O 口,每一位引脚都可以单独的 进行定义,相互不受影响。
如用户可以在定义 PA 口第 0、2、3、4、5、6 位用于输入的同时 定义第 1、7 位用于输出,互不影响。
Push-Pull 大电流驱动 (最大 40mA)每个 I/O 口输出方式均采用推挽式缓冲器输出,提供大电流的驱动,可以输出(吸入) 20mA 的电流,因而能直接驱动 LED 显示器。
可控制的引脚内部上拉电阻每一位引脚内部都有独立的,可通过编程设置的,设定为上拉有效或无效的内部上拉电 阻。
当 I/O 口被用于输入状态,且内部上拉电阻被激活(有效)时,如果外部引脚被拉低, 则构成电流源输出电流(uA 量级)。
DDRx 可控的方向寄存器。
AVR 的 I/O 端口结构同其它类型单片机的明显区别是,AVR 采用 3 个寄存器来控制 I/O 端口。
一般单片机的 I/O 仅有数据寄存器和控制寄存器,而 AVR 还多了一个方向控制器,用 于控制 I/O 的输入输出方向。
由于输入寄存器 PINx 实际不是一个寄存器,而是一个可选通 的三态缓冲器,外部引脚通过该三态缓冲器与 MCU 的内部总线连接,因此,读 PINx 时是读 取外部引脚上的真实和实际逻辑值,实现了外部信号的同步输入。
这种结构的 I/O 端口,具 备了真正的读-修改-写(Read-Modify-Write )特性。
图 6-4 通用 I/O 口逻辑功能示意图第 6 章通用 I/O 接口基本结构与输出应用图 6-4 为 AVR 一个(位)通用 I/O 口的逻辑功能图。
右上面的两个 D 触发器为方向控制 寄存器和数据寄存器。
1) 使用 AVR 的 I/O 口,首先要正确设置其工作方式,确定其工作在输出方式还是输入方式。
2) 当 I/O 工作在输入方式,要读取外部引脚上的电平时,应读取 PINxn 的值,而不是PORTxn 的值。
3) 当 I/O 工作在输入方式,要根据实际情况使用或不使用内部的上拉电阻。
4) 一旦将 I/O 口的工作方式由输出设置成输入方式后,必须等待一个时钟周期后才能正确的读到外部引脚 PINxn 的值。
上面的第 4 点是由于在 PINxn 和 AVR 内部数据总线之间有一个同步锁存器(图 6-4 中的 SYNCHRONIZER )电路,使用该电路避免了当系统时钟变化的短时间内外部引脚电平也同时变 化而造成的信号不稳定的现象,但它有产生大约一个时钟周期(0.5~1.5)的时延。
6.1.2 I/O 端口寄存器ATmega16 的 4 个 8 位的端口都有各自对应的 3 个 I/O 端口寄存器,它们占用了 I/O 空 间的 12 个地址(见表 6.2)。
表 6.2 ATmega16 I/O 寄存器地址表PIND $10 0x0030D 口输入引脚寄存器下面是 PA 口寄存器—PORTA 、DDRA 、PINA 各个位的具体定义,以及其是否可以通过指 令读写操作和 RESET 复位后的初始值。
其它 3 个口的寄存器的情况与 PA 口相同,只是地址 PORTA复位值0 0基于AVR 的单片嵌入式系统原理与实践应复位值N/A N/A N/A N/A N/A N/A N/A N/A1)正确使用AVR 的I/O 口要注意:先正确设置DDRx 方向寄存器,再进行I/O 口的读写操作。
2)AVR 的I/O 口复位后的初始状态全部为输入工作方式,内部上拉电阻无效。
所以,外部引脚呈现三态高阻输入状态。
3)因此,用户程序需要首先对要使用的I/O 口进行初始化设置,根据实际需要设定使用I/O 口的工作方式(输出还是输入),当设定为输入方式时,还要考虑是否使用内部的上拉电阻。
4)在硬件电路设计时,如能利用AVR 内部I/O 口的上拉电阻,可以节省外部的上拉电阻。
6.1.3 通用数字I/O口的设置与编程在将AVR 的I/O 口作为通用数字口使用时,要先根据系统的硬件设计情况,设定各个I/O 口的工作方式:输入或输出工作方式,既先正确设置DDRx 方向寄存器,再进行I/O 口的读写操作。
如将I/O 口定义为数字输入口时,还应注意是否需要将该口内部的上拉电阻设置为有效,在设计电路时,如能利用AVR 内部I/O 口的上拉电阻,可以节省外部的上拉电阻。
AVR 汇编指令系统中,直接用于对I/O 寄存器的操作指令有以下3 类,全部为单周期指令:1)IN/OUTIN/OUT 指令实现了32 个通用寄存器与I/O 寄存器之间的数据交换,格式为:IN Rd,AOUT A,Rr 2)SBI/CBI ;从I/O 寄存器 A 读数剧到通用寄存器Rd ;通用寄存器Rr 数据送I/O 寄存器 ASBI/CBI 指令实现了对I/O 寄存器(地址空间为I/O 空间的0x00-0x31)中指定位的置1 或清0,格式为:SBI A,bCBI A,b 3)SBIC/SBIS ;将I/O 寄存器 A 的第b 位置1 ;将I/O 寄存器 A 的第b 位清0SBIC/SBIS 指令为转移类指令,它根据I/O 寄存器(地址空间为I/O 空间的0x00-0x31)的指定位的数值实现跳行转移(跳过后面紧接的一条指令,执行后序的第二条指令),格式为:SBIC A,b ;I/O 寄存器 A 的第 b 位为0 时,跳行执行第 6 章通用I/O 接口基本结构与输出应用ATmega16 的4 个8 位的端口共有12 个I/O 端口寄存器,它们在AVR 的I/O 空间的地址均在前32 个之中,因此上面 3 类对I/O 寄存器操作的指令都可以使用。
在第 5 章的例程Demo_5_1.asm 中,使用了OUT 指令设置PC 口的工作方式为输出,输出全1:.def temp1=r20 。
ser temp1out ddrc,temp1out portc,temp1 ;定义寄存器R20用临时变量名temp1代表;置temp1(R20)为0XFF;定义PC口为输出;PC口输出全―1‖,LED不亮在CVAVR 中,我们可以直接使用 C 的语句对I/O 口寄存器进行操作,如:// 定义PortC口的工作方式PORTC = 0x01; DDRC = 0x01; PORTC.0 = ~PORTC.0; // PC口的第0位输出―1‖,LED不亮// 定义PC口的第0位为输出方式// PC口第0位输出取反其中PORTC.0 = 0 (或PORTC.0 = 1)是CVAVR 中对C 的扩展语句,它实现了对寄存器的位操作。
这种语句在标准C 中是没有的,该扩展更加适合编写单片机的系统程序,因为在单片机的系统程序中,是经常需要直接对位进行操作的。
更加标准的 C 程序可以采用以下的写法:#define BIT0 0#define BIT1 1#define BIT2 2#define BIT3 3#define BIT4 4#define BIT5 5#define BIT6 6#define BIT7 7………PORTC = 1<<(BIT0) | 1<<(BIT3); // PC口的第0位和第3位输出―1‖,其它为―0‖这里,1<<(BIT0)表示逻辑1左移0位,结果为0b00000001;而1<<(BIT3) 表示逻辑1左移3位,结果为0b00001000。