620 likes | 822 Views
第九章 微机接口 芯片及应用. 课时数: 10 - 11. 第 九 章 主 要 内 容. 一、 可编程通用接口芯片的应用方法 二、 可编程并行接口芯片 8255A (P408) 三、 可编程串行接口芯片 8250/16550 (P430) 四、 可编程定时 / 计数接口芯片 8254/8253 (P440) 五、 可编程中断控制器 8259A (P459) 六、 A/D 和 D/A 接口芯片 (P485). 第 九 章 习 题 ( P514 ). 5 、 6 、 10 、 17 、 19 、 34
E N D
第九章 微机接口芯片及应用 课时数:10-11
第 九 章 主 要 内 容 一、可编程通用接口芯片的应用方法 二、可编程并行接口芯片8255A (P408) 三、可编程串行接口芯片8250/16550 (P430) 四、可编程定时/计数接口芯片8254/8253 (P440) 五、可编程中断控制器8259A (P459) 六、A/D和D/A接口芯片 (P485)
第 九 章 习 题 (P514) 5、6 、10 、17、19、34 较难的习题(可只做框图或流程图):7、12、35 思考:1、2、3、4、8、13、14、18、22、31、32 2005.6.8交作业
可编程接口芯片的开发应用 • 了解芯片的基本性能(功能)和内部结构; • 掌握芯片的外部连接特性,以进行硬件设计。一般将引 脚分为面向CPU和面向外设的两部分。注意端口地 址的确定方法(面向CPU一边); • 掌握芯片各控制字的含义和设置方法,能根据系统设计 要求确定各控制字值; • CPU在初始化程序中按要求发送各控制字到相应端口 (寄存器)以确定芯片的工作方式和状态; • CPU在工作过程中可以通过读状态端口检查接口芯片的 工作状态,并可重新设置和发送某些控制字值,以 改变芯片的工作方式;
可编程通用并行接口芯片Intel8255 (P408) 最简单的并行接口可由一些锁存器和(或)总线缓冲器/驱动器组成,只能完成CPU与外设的无条件数据传送; 而8255可完成无条件和查询式、中断控制式数据传送,其具体的工作方式由用户程序确定。 • 8255的内部结构及基本功能(P411) • 8255的外接特性及端口地址(P409) • 8255的三种工作方式(P414)及控制字(P412) • 8255的程控技术(P412) • 初始化时用户只需确定端口地址及控制字,并通过送出控制 字确定8255A各端口的工作方式; • 数据传送过程中,用户通过读/写端口A、B、C实现数据收/发。 注意C口的位操作方式是通过写控制字来实现的。
A 8bit A组控制 PA7~PA0 C上半部4bit PC7~PC4 数据总线缓冲器 D7~D0 C下半部4bit B组控制 PC3~PC0 RD WR CS B 8bit A0 PB7~PB0 A1 RESET CPU接口 内部逻辑 外设接口 8255的内部结构及基本功能(P411) • 三个独立的8位数据端口; • C口的其它用法: • 用作两个独立的4位数据端口; • 用作状态或控制口,按位置位或复位; • 为A、B口提供所需的各种联络信号; • 具有三种工作方式; 读/写 逻辑控制
34 4 • 33 3 • 32 2 • 31 1 • 30 40 • 29 39 • 28 38 • 27 37 • 18 • 19 • 9 20 • 8 21 • 6 22 • 5 23 • 36 24 • 35 25 • 14 • 15 • 16 • 17 • 13 • 26 12 • 11 • 10 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 面 向 C P U A1 A0 CS 操作 8 2 5 5 A 面 向 外 设 A0 A1 /CS /RD /WR RST VCC GND 8255的外部特性及端口地址的确定(P409) 读/写端口A 读/写端口B 读/写端口C 写控制寄存器 1 数据总线三态 为保证8255A和8086的数据交换正确,可将8255与8086CPU的低8位数据线相连,注意这时8255A的4个端口都应该分配偶地址,即8086的A2、A1分别接8255的A1、A0。
8255的工作方式0-基本的输入或输出(P414) 一、输入时序(IN AL,PORT ) (P414) t t AR RA CS , A , A 1 0 t RR RD 数据有效 D 7~0 t t RD DF t t IR HR 外设输入数据 数据有效 二、输出时序(OUT PORT,AL ) 见P415
三、数据传输特点 1.最多可提供三个8位端口或两个8位端口+两个4位端口 2.所有端口均为单向传输(即只能做输入或输出) 3.可实现无条件或自定义联络信号(C口)的查询传送 打印机并行接口(P297) 8255 C P U PA0~7 D0~7 (2~9) PC7 (1) STB DB PC2 BUSY (11) 地 地 (16) P416例9.5
8255的工作方式1-选通的输入或输出(P417) 一、输入接口信号的定义与时序 (P417) D7~D0 D7~D0 PB7~PB0 PA7~PA0 INTEB PC2 INTEA PC4 STBB STBA PC1 PC5 IBFB IBFA 与门 与门 PC0 INTRB PC3 RD INTRA RD B口方式1输入时相应的联络信号 A口方式1输入时相应的联络信号
PA7~PA0 外设送来数据 PB7~PB0 ① STB ② ④ IBF ⑦ ③ 当INTE=1时 INTR ⑤ ⑧ RD ⑥ ⑧ 中断服务程序中CPU从A口或B口读取外设输入的数据
二、输出接口信号的定义与时序 (P419) D7~D0 D7~D0 PA7~PA0 PB7~PB0 PC1 OBFB PC7 OBFA PC2 INTEB ACKB PC6 ACKA INTEA 与门 与门 INTRB PC0 PC3 WR WR INTRA A口方式1输出时相应的联络信号 B口方式1输出时相应的联络信号
PA7~PA0 ② PB7~PB0 送往外设的数据写入相应端口 WR ③ ② OBF ① 当INTE=1时 INTR ACK ④ ⑤ 中断服务程序中CPU向A口或B口写入输出给外设的数据
三、数据传输特点 1.最多可提供两个8位端口(组合方式见图9-13 P421) 2.所有端口均为单向传输(即只能做输入或输出) 3.可实现固定联络信号(C口)的查询传送或中断传送 ,未定义的C口信号线可自行定义使用。 打印机并行接口 8255 C P U PA0~7 D0~7 PC0 STB DB PC6 ACK PC7 OBF PC3 INTR P416例9.7
PC4 PC5 PC6 PC7 8255的工作方式2-双向输入、输出(P423) D7~D0 中断服务程序中CPU可通过查询IBF和OBF信号来确定此次中断是输入还是输出操作 PA7~PA0 INTEA1 PC4 与 门 STBA RD IBFA INTEA2 PC6 与 门 ACKA WR OBFA PC3 INTRA 或门 数据传输特点: 1.A为双向端口,B为单向端口,C口组合方式见P425表9-7 2.可实现固定联络信号(C口)的查询传送或中断传送 ,未定义的C口信号线可自行定义使用。
1 0 输出 1 输入 PC3~PC0 0输出 1 输入 B口 0 方式0 1 方式1 B口工作方式 D7 D6 D5 D4 D3 D2 D1 D0 0 输出 1 输入 PC7~PC4 0 输出 1 输入 A口 00 方式0 01 方式1 1x 方式2 A口工作方式 特征位,D7=1表示是方式控制字 8255 的工作方式控制字(P412)
8255的C口置/复位控制字(P413) 0 复位 1 置位 无意义 选择操作位 设置内容 0 D7 D6 D5 D4 D3 D2 D1 D0 特征位,D7=0 表示是C口按位 置位/复位控制字
1 0 0 1 0 0 0 1 CS A1 A0 A口 输入 B口 方式 0 B口 输出 PC3~PC0 输入 A口 方式 0 PC7~PC4 输出 特征位 地址 0F0H 0F1H 0F2H 0F3H D7 D6 D5 D4 D3 D2 D1 D0 控制字 例1:某8255A占用端口地址范围0F0~0F3H 1) 确定各端口地址。 2) 编程设置8255A : A口方式 0 输入, B口方式 0 输出 PC7~PC4输出,PC3~PC0输入 解: 结论:A口地址0F0H,B口地 址0F1H,C口地址0F2H,控制口地址为 0F3 H; 控制字1001 0001B,即91H MOV AL,91H OUT 0F3H, AL A7A6 A5 A4A3A2A1A0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1
例2:设8255的A口工作于方式1输入,B口工作于方式0输出,若允许A口产生中断,试编程初始化该8255(其端口地址为60H ~ 63H )。 MOV AL, 0B0H ;1011x00X OUT 63H, AL ; 写方式控制字 MOV AL, 09H ;0XXX01001 OUT 63H, AL; 写置/复位控制字,置INTEA=1 工作方式控制字 C口置/复位控制字
例1:利用8255的PC6产生方波,经滤波和功放后,送到扬声器以发出不同频率的声音。(P414)例1:利用8255的PC6产生方波,经滤波和功放后,送到扬声器以发出不同频率的声音。(P414) MOV DX,306H ;8255控制口 MOV AL,00001101B ;置PC6=1 OUT DX,AL CALL DELAY ;高电平维持时间 MOV AL,00001100H ;置PC6=0 OUT DX,AL CALL DELAY ;低电平维持时间 其中DELAY为延时子程序,改变延时时间,即可改变喇叭发声的频率。
例2:现有为某应用系统配置的一个并行打印机接口,采用查询方式通过接口把缓冲区中的100个ASCII字符打印出来。 (P416) 初始化 MOV DX,306H MOV AL,10000001B OUT DX,AL ;发方式控制字 MOV AL,00001111B OUT DX,AL ;使数据选通无效:PC7置高,/STB=1 MOV SI,OFFSET BUF MOV CX,64H MOV DX,304H IN AL,DX AND AL,04H JNZ LL ; PC2(BUSY)=1 表示打印机忙,CPU等待 MOV DX,300H LODSB OUT DX,AL ;发数据至A口 MOV DX,306H MOV AL,00001110B OUT DX,AL CALL DELAY MOV AL,00001111B OUT DX,AL ;使数据选通信号出现有效负脉冲 LOOP LL LL: 查询 发数据 发选通
例3:编程实现中断控制方式下工作的打印机接口。(P422)例3:编程实现中断控制方式下工作的打印机接口。(P422) MAIN:…… ;内务操作 ……;保存旧中断向量,设置新中断向量 MOV AL,0A0H OUT 0C6H,AL ;发方式控制字 MOV AL,01H OUT 0C6H,AL ;使选通无效,PC0=1 MOV AL,0DH OUT 0C6H,AL ;允许8255的A口中断(PC6 =1) STI ;开总中断 MOV CNT,0 ;发送计数器清0 WAT: LOOP WAT ;等待中断 主程序完成初始化 RINT:MOV SI,OFFSET TAB ADD SI,CNT MOV AL,[SI] ;取待打印的字符数据 OUT 0C0H,AL ;输出字符 MOV AL,00H OUT 0C6H,AL CALL DELAY INC AL OUT 0C6H,AL ;产生有效的选通信号负脉冲(PC0) INC CNT ;发送计数器加1 IRET 中断服务子程序完成数据发送
例4:编程实现矩阵扫描键盘和动态数码显示屏的控制。(P426)例4:编程实现矩阵扫描键盘和动态数码显示屏的控制。(P426) OUT IN OUT OUT
例5:编程实现8255控制的A/D/A接口。(P429) 1.初始化8255 A方式1,B方式0 (1~3行) 2.启动AD(PC7) (4~8行) 3.查询IBF(PC5) (9~12行) 4.收AD数据 (13、14行) 5.发数据到DA (15、16行) D/A
可编程通用串行接口芯片Intel8250 (P430) 8250是一种常用的可编程通用异步串行通信接口芯片(UART,Universal Asynchronous Receiver Transmitter) 其主要特点包括:波特率可程控、数据格式可程控、可与Modem通信并报告其状态、可进行中断优先权控制、具有故障报告等内部诊断功能。 • 8250的内部结构(P432) • 8250的外部特性及端口地址(P430) • 8250的初始化及应用编程(P436) • 初始化时需要发送各种控制字以确定波特率、数据格式及中 断允许情况; • 数据传送时需要读取各种状态字以确定当前应做的操作;
8250的内部结构(P432) 电平转换
8250的外部特性及端口地址的确定(P430) 线路控制寄存器的D7位:寻址识别位DLAB 与CPU的连接 与Modem的连接 0
发送LCR控制字设置数据帧格式(P436例9.10) D7 D6 D5 D4 D3 D2 D1 D0 寻址识别 间断设置 校验方式 停止位长 数据帧长 00:5位 01:6位 10:7位 11:8位 xx0:校验位无效 001:奇校验 011:偶校验 101:校验位恒0 111:校验位恒1 0:其它寄存器 1:分频寄存器 0:1位 1:1.5或2位 1-强制间断(无数据时为空号逻辑0 ) 0-正常(无数据时为传号逻辑1)
发送分频控制字设置波特率(P436例9.11) MOV AL,10000000B MOV DX,3FBH OUT DX,AL ;通知8250后面将设置波特率 MOV AL,0CH MOV DX,3F8H OUT DX,AL ;写入分频值低位 MOV AL,00H INC DX OUT DX,AL ;写入分频值高位
发送中断允许控制字设置中断种类(P436例9.12)发送中断允许控制字设置中断种类(P436例9.12)
接收/发送程序(P438例9.14) MOV DX,3FDH IN AL,DX ;读线路状态寄存器(P434图9-25) TEST AL,1EH ,是否出错? JNZ ERR ;是,转错误处理 TEST AL,01H ;是否“接收数据准备好”? JNZ RECE ;是,转接收 TEST AL,20H ;是否“发送数据缓冲器空”? JNZ TRAN ;是,转发送 …… RECE: MOV DX,3F8H IN AL, DX …… ;处理接收的数据 TRAN: MOV DX,3F8H …… ;准备待发送的数据 OUT DX,AL …… ERR: …… PC机中建议使用BIOS中断调用对串口进行操作(P439)
可编程通用定时/计数接口芯片Intel8253 • 8253的内部结构及基本功能 (P442) • 8253的外接特性及端口地址 (P441) • 8253的控制字及工作方式 (P444) • 8253的程控技术 • 初始化:8253没有复位端,开机后必须进行软件初始化。另外,在改变计数器工作方式时也需要对8253进行初始化设置。 • 必须先写入控制字,再设置计数初值。 • 在设置计数初值时,要根据控制字中内容确定是只写高8位, 只写低8位,还是先低后高写入16位。 • 读计数值: • CPU应先送计数器锁存命令,再用输入指令从输出锁存器中 获取计数值。 • 读取计数值时应根据控制字内容确定是只读高8位,只读低8 位,还是先低后高读出16位。
数据缓冲 数据总线 控制寄存器 CLK 面 向 外 设 读/写控制逻辑 RD 面 向 C P U WR GATE RESET READY OUT CS A0 状态寄存器 中断申请 定时/计数功能的实现 • 定时功能和计数功能均可通过计数器来实现:若计数器输入为 标准时钟脉冲,则通过计数可得到时间间隔,实现定时功 能;若计数器的输入为需计数的信号,则计数值就是一定 时间内信号(脉冲)出现的次数,即实现计数功能。 • 定时/计数实现方式:软件、硬件。 定时/计数器 计 数 控 制 计数初值寄存器 计数器 当前计数值输出寄存器
16位减法计数器0 数据总线 缓冲器 计数初值寄存器 CRH CRL D7 ~D0 CLK0 计数执行部件 GATE0 CEH CEL OUT0 输出锁存器 OLH OLL RD 读 写 逻 辑 电 路 CLK1 计 数 器 1 WR GATE1 A0 OUT1 A1 CLK2 计 数 器 2 CS GATE2 OUT2 CPU接口 计数通道 8253的内部结构及基本功能 (P442) 控制 寄存器
D0 8 7 9 6 11 5 10 4 3 2 15 1 14 22 13 23 19 20 18 21 16 24 17 12 CLK0 D1 D2 GATE0 A1 A0 操作 D3 面向CPU OUT0 8 2 5 3 CS D4 面向外设 D5 0 0 0 读/写计数器0 D6 CLK1 D7 0 1 0 读/写计数器1 GATE1 /RD OUT1 1 0 0 读/写计数器2 /WR A0 1 1 0 写控制寄存器 A1 CLK2 /CS GATE2 X X 1 数据总线三态 VCC OUT2 GND 8253的外接特性及端口地址的确定(P441)
8253的控制字及工作方式(P444) D7 D6 D5 D4 D3 D2 D1 D0 D0=0,采用二进制计数; D0=1,采用二-十进制计数; D3D2D1=000,计数器工作在方式0 D3D2D1=001,计数器工作在方式1 D3D2D1=010,计数器工作在方式2 D3D2D1=011,计数器工作在方式3 D3D2D1=1X0,计数器工作在方式4 D3D2D1=1X1,计数器工作在方式5 D7D6=00,选择计数器0的控制寄存器;D7D6=01,选择计数器1的控制寄存器;D7D6=10,选择计数器2的控制寄存器;D7D6=11,非法; D5D4=00,将当前计数值锁存至输出寄存 器中以供CPU读; D5D4=01,只读/写计数器低8位; D5D4=10,只读/写计数器高8位; D5D4=11,先读/写计数器低8位,再读/写 计数器高8位; 二进制计数时最小值为0001H,最大值为10000H(65535) 十进制(BCD码)计数时最小值为0001,最大值为10000。
8253工作在方式0时的波形图(P445) CW 写入后使输出OUT变为低电平 LSB之后的第一个CLK下降沿才将计数初值送入计数器 计数减至0后OUT 恢复为高电平 GATE信号可以使计数暂停 计数过程中重新写入的初值将在之后的第一个CLK下降沿起作用 6种工作方式的对比P450
控制字 0 0 0 1 0 0 0 0 例1:某8253占用端口地址为40H ~ 43H,其中计数器 0工作在方式 0,初值为4,二进制计数,试初始化该8253。 初始化程序: MOV AL,10H OUT 43H,AL ;写计数器 0 的控制字 MOV AL,04H OUT 40H,AL ;写计数器 0 的初值
控制字 0 1 1 1 0 1 1 1 例2:某8253占用端口地址为40H ~ 43H,其中计数器1工作在方式 3,初值为4020H,十进制计数,试初始化该8253。 初始化程序: MOV AL,77H OUT 43H,AL ;写计数器 1 的控制字 MOV AL,20H OUT 41H,AL ;写计数器 1 的低 8 位 MOV AL,40H OUT 41H,AL ;写计数器 1 的高 8 位
控制字 1 0 0 0 x x x x 例:某8253占用端口地址为40H ~ 43H,其中计数器2工作在方式 0,初值为4020H,二进制计数,试读出计数器2的当前计数值。 读计数值程序段: MOV AL,80H OUT 43H,AL ;发控制字锁存计数器2的值 IN AL,42H;读计数器 1 的低 8 位 MOV BL,AL IN AL,42H;读计数器 1 的高 8 位 MOV BH,AL ;BX中为计数器2的当前计数值
8253在微机系统中的应用(P452) 计数器1用于定时刷新DRAM 计数器0用于系统时钟,中断类型号8 0 计数器2用于控制主板扬声器的发声频率;同时用于扬声器控制的还有8255的PB0和PB1
可编程中断控制器8259A(P459) • Intel8259A的基本结构及引脚 • Intel 8259A的基本功能 • Intel 8259A的程控技术 • 一片8259管理8级中断,不增加其它任何电路时可用9片8259 级联(P472)构成64级的主从式中断系统; • 具中断判优逻辑,对任一级中断都可以单独屏蔽或允许; • 中断响应后,能将用户预置的中断类型号自动提供给CPU; • 可通过编程选择其工作方式(即可程控),包括设置优先 级、中断触发方式、中断响应方式、中断嵌套方式、中 断结束方式、总线连接方式等。 • 初始化:按顺序选择输出初始化命令字ICW1~ICW4(P463) • 工作中根据需要可随时发送操作命令字OCW1~OCW3 (P466)
INT INTA 数据 总线 缓冲器 D0-D7 内部总线 IR0 RD …… WR A0 CS IR7 级联缓冲 /比较器 CAS0 CAS1 中断屏蔽寄存器IMR CAS2 SP / EN Intel8259A的基本功能结构(P461) 控制逻辑 服务 状态 寄存器 ISR 优先权 处理器 PR 中断 请求 寄存器 IRR 读写 逻辑
8259的级联工作方式(P472) 从8259 IR0 IR1 IR2 CAS0 IR7 CAS1 CAS2 INTA INT 主8259 CAS0 CAS1 CAS2 IR0 IR1 IR2 IR7 … C P U 外设发出中断请求信号 INTA SP/EN INT 从8259 IR0 IR1 IR2 CAS0 IR7 CAS1 CAS2 VCC SP/EN INTA INT … SP/EN
A/D/A接口芯片 • 带A/D/A接口的数字系统结构(P485) • A/D接口芯片 • D/A接口芯片 • ADC的分类(P485) • ADC的主要性能指标 (P486) • ADC芯片的应用:ADC0809P487、ADC574P490 • DAC的分类(P493) • DAC的主要性能指标 (P493) • DAC芯片的应用:DAC0832(P494)
带A/D/A接口的数字系统(P485) 计 算 机 系 统 控 制 对 象 IO接口 放大器 传感器 多路模拟开关 采样/保持器 A/D 执行部件 IO接口 放大器 D/A
ADC的分类(P485) :并联转换、逐次逼近(分辨率高,快) 直接 按转换原理 (积分式(抗干扰性强,慢)) 电压-时间 电压-频率 电压-脉宽 间接 超高速(转换时间≤330ns) 次超高速(转换时间330ns~3.3µs) 高速(转换时间≤20µs) 按转换速度 中速(转换时间20~300µs) 低速(转换时间≥300µs) 二进制(补码) 8位 串行 按分辨率 (数字位数) 按数字编码方式 按结果输出形式 12位 … 并行 BCD码
ADC的主要性能指标(P486) • 分辨率 • 精度(转换误差) • 速度(转换时间) • 其它 用于表示ADC对微小信号的分辨能力。分辨率值越小或输出二进制代码的位数越多,转换精度越高。 表示AD转换结果相对于理论值的误差,常用LSB(最低有效位)的倍数表示。可表示为数字(量化)误差和模拟(设备)误差、绝对误差(绝对精度)和相对误差(相对精度)等。 完成一次A/D转换所需要的时间,即从它接到转换命令起直到输出端得到稳定的数字量输出所需要的时间。 量程(输入电压范围)、输出电平、编码方式、功率、温度等。