1、第九章 微机接口芯片及应用,课时数:1011,第 九 章 主 要 内 容,一、可编程通用接口芯片的应用方法二、可编程并行接口芯片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、322005.6.8交作业,第 九 章 结 束,可编程接口芯片的开发应用
2、,了解芯片的基本性能(功能)和内部结构; 掌握芯片的外部连接特性,以进行硬件设计。一般将引脚分为面向CPU和面向外设的两部分。注意端口地址的确定方法(面向CPU一边); 掌握芯片各控制字的含义和设置方法,能根据系统设计要求确定各控制字值; CPU在初始化程序中按要求发送各控制字到相应端口(寄存器)以确定芯片的工作方式和状态; CPU在工作过程中可以通过读状态端口检查接口芯片的工作状态,并可重新设置和发送某些控制字值,以改变芯片的工作方式;,初始化时用户只需确定端口地址及控制字,并通过送出控制字确定8255A各端口的工作方式; 数据传送过程中,用户通过读/写端口A、B、C实现数据收/发。注意C口
3、的位操作方式是通过写控制字来实现的。,可编程通用并行接口芯片Intel8255 (P408),最简单的并行接口可由一些锁存器和(或)总线缓冲器/驱动器组成,只能完成CPU与外设的无条件数据传送; 而8255可完成无条件和查询式、中断控制式数据传送,其具体的工作方式由用户程序确定。,8255的内部结构及基本功能(P411),8255的外接特性及端口地址(P409),8255的三种工作方式(P414)及控制字(P412),8255的程控技术(P412),8255的内部结构及基本功能(P411),读/写逻辑控制,三个独立的8位数据端口;C口的其它用法:用作两个独立的4位数据端口;用作状态或控制口,按
4、位置位或复位;为A、B口提供所需的各种联络信号;具有三种工作方式;,为保证8255A和8086的数据交换正确,可将8255与8086CPU的低8位数据线相连,注意这时8255A的4个端口都应该分配偶地址,即8086的A2、A1分别接8255的A1、A0。,8255的外部特性及端口地址的确定(P409),读/写端口A,读/写端口B,读/写端口C,写控制寄存器,数据总线三态,1,8255的工作方式0基本的输入或输出(P414),一、输入时序(IN AL,PORT ) (P414),t,RD,数据有效,t,DF,t,RR,RD,D,70,t,RA,t,AR,CS, A,1, A,0,t,HR,t,I
5、R,外设输入数据,数据有效,二、输出时序(OUT PORT,AL ) 见P415,三、数据传输特点1.最多可提供三个8位端口或两个8位端口两个4位端口2.所有端口均为单向传输(即只能做输入或输出)3.可实现无条件或自定义联络信号(C口)的查询传送,CPU,8255,打印机并行接口(P297),(29),(1),(11),(16),PA07,PC7,PC2,地,D07,STB,BUSY,地,DB,P416例9.5,8255的工作方式1选通的输入或输出(P417),PA7PA0,PC4,PC5,PC3,INTEA,与门,IBFA,STBA,INTRA,RD,D7D0,A口方式1输入时相应的联络信号
6、,B口方式1输入时相应的联络信号,IBFB,STBB,INTRB,PB7PB0,PC2,PC1,PC0,INTEB,与门,RD,D7D0,一、输入接口信号的定义与时序 (P417),PB7PB0,PA7PA0,STB,IBF,INTR,RD,外设送来数据,当INTE=1时,中断服务程序中CPU从A口或B口读取外设输入的数据,A口方式1输出时相应的联络信号,B口方式1输出时相应的联络信号,PA7PA0,PC7,PC6,PC3,INTEA,与门,ACKA,OBFA,INTRA,WR,D7D0,PB7PB0,PC1,PC2,PC0,INTEB,与门,ACKB,OBFB,INTRB,WR,D7D0,二
7、、输出接口信号的定义与时序 (P419),送往外设的数据写入相应端口,WR,OBF,INTR,ACK,当INTE=1时,PB7PB0,PA7PA0,中断服务程序中CPU向A口或B口写入输出给外设的数据,三、数据传输特点1.最多可提供两个8位端口(组合方式见图9-13 P421 )2.所有端口均为单向传输(即只能做输入或输出)3.可实现固定联络信号(C口)的查询传送或中断传送,未定义的C口信号线可自行定义使用。,CPU,8255,打印机并行接口,PA07,PC7,PC6,D07,STB,DB,PC3,ACK,OBF,INTR,PC0,P416例9.7,数据传输特点:1.A为双向端口,B为单向端口
8、,C口组合方式见P425表9-7 2.可实现固定联络信号(C口)的查询传送或中断传送,未定义的C口信号线可自行定义使用。,8255的工作方式2双向输入、输出(P423),PA7PA0,ACKA,OBFA,D7D0,RD,WR,STBA,IBFA,INTEA1PC4,INTEA2PC6,与门,PC3,INTRA,或门,与门,中断服务程序中CPU可通过查询IBF和OBF信号来确定此次中断是输入还是输出操作,8255 的工作方式控制字(P412),8255的C口置/复位控制字(P413),例1:某8255A占用端口地址范围0F00F3H 1) 确定各端口地址。 2) 编程设置8255A : A口方式
9、 0 输入, B口方式 0 输出 PC7PC4输出,PC3PC0输入,结论:A口地址0F0H,B口地 址0F1H,C口地址0F2H,控制口地址为 0F3 H; 控制字1001 0001B,即91H MOV AL,91HOUT 0F3H, AL,解:,A7 A6 A5 A4 A3 A2 A1 A0 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 01 1,例2:设8255的A口工作于方式1输入,B口工作于方式0输出,若允许A口产生中断,试编程初始化该8255(其端口地址为60H 63H )。,MO
10、V AL, 0B0H ;1011x00XOUT 63H, AL ; 写方式控制字MOV AL, 09H ;0XXX01001OUT 63H, AL ; 写置/复位控制字,置INTEA1,C口置/复位控制字,工作方式控制字,例1:利用8255的PC6产生方波,经滤波和功放后,送到扬声器以发出不同频率的声音。(P414),MOV DX,306H;8255控制口MOV AL,00001101B;置PC6=1OUT DX,ALCALL DELAY;高电平维持时间MOV AL,00001100H;置PC6=0OUT DX,ALCALL DELAY;低电平维持时间 其中DELAY为延时子程序,改变延时时间
11、,即可改变喇叭发声的频率。,例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
12、口 MOV DX,306H MOV AL,00001110B OUT DX,AL CALL DELAY MOV AL,00001111B OUT DX,AL ;使数据选通信号出现有效负脉冲 LOOP LL,初始化,查询,发数据,发选通,LL:,例3:编程实现中断控制方式下工作的打印机接口。(P422),MAIN:;内务操作 ;保存旧中断向量,设置新中断向量 MOVAL,0A0H OUT 0C6H,AL ;发方式控制字 MOV AL,01H OUT 0C6H,AL;使选通无效,PC0=1 MOV AL,0DH OUT 0C6H,AL ;允许8255的A口中断(PC6 =1) STI ;开总中断
13、MOVCNT,0;发送计数器清0WAT: LOOP WAT;等待中断,RINT:MOVSI,OFFSET TAB ADDSI,CNT MOVAL,SI ;取待打印的字符数据 OUT0C0H,AL ;输出字符 MOV AL,00H OUT 0C6H,AL CALLDELAY INCAL OUT 0C6H,AL ;产生有效的选通信号负脉冲(PC0) INC CNT ;发送计数器加1 IRET,主程序完成初始化,中断服务子程序完成数据发送,例4:编程实现矩阵扫描键盘和动态数码显示屏的控制。(P426),OUT,IN,OUT,OUT,例5:编程实现8255控制的A/D/A接口。(P429),1.初始化
14、8255A方式1,B方式0(13行)2.启动AD(PC7)(48行)3.查询IBF(PC5)(912行)4.收AD数据(13、14行)5.发数据到DA(15、16行),D/A,可编程通用串行接口芯片Intel8250 (P430),初始化时需要发送各种控制字以确定波特率、数据格式及中断允许情况; 数据传送时需要读取各种状态字以确定当前应做的操作;,8250的内部结构(P432),8250的外部特性及端口地址(P430),8250的初始化及应用编程(P436),8250是一种常用的可编程通用异步串行通信接口芯片(UART,Universal Asynchronous Receiver Trans
15、mitter) 其主要特点包括:波特率可程控、数据格式可程控、可与Modem通信并报告其状态、可进行中断优先权控制、具有故障报告等内部诊断功能。,8250的内部结构(P432),电平转换,8250的外部特性及端口地址的确定(P430),与CPU的连接,与Modem的连接,线路控制寄存器的D7位:寻址识别位DLAB,0,发送LCR控制字设置数据帧格式(P436例9.10),D7,D6,D5,D4,D3,D2,D1,D0,xx0:校验位无效001:奇校验011:偶校验101:校验位恒0111:校验位恒1,校验方式,数据帧长,00:5位01:6位10:7位11:8位,间断设置,寻址识别,停止位长,0
16、:其它寄存器1:分频寄存器,0:1位1:1.5或2位,1-强制间断(无数据时为空号逻辑0 )0-正常(无数据时为传号逻辑1),发送分频控制字设置波特率(P436例9.11),MOVAL,10000000BMOVDX,3FBHOUTDX,AL;通知8250后面将设置波特率MOVAL,0CHMOVDX,3F8HOUTDX,AL;写入分频值低位MOVAL,00HINCDXOUTDX,AL;写入分频值高位,发送中断允许控制字设置中断种类(P436例9.12),接收/发送程序(P438例9.14),MOVDX,3FDHINAL,DX ;读线路状态寄存器(P434图9-25)TESTAL,1EH,是否出错
17、?JNZERR;是,转错误处理TESTAL,01H;是否“接收数据准备好”?JNZRECE;是,转接收TESTAL,20H;是否“发送数据缓冲器空”?JNZTRAN;是,转发送RECE:MOVDX,3F8HINAL, DX;处理接收的数据TRAN:MOVDX,3F8H;准备待发送的数据OUTDX,ALERR:,PC机中建议使用BIOS中断调用对串口进行操作(P439),初始化:8253没有复位端,开机后必须进行软件初始化。另外,在改变计数器工作方式时也需要对8253进行初始化设置。必须先写入控制字,再设置计数初值。在设置计数初值时,要根据控制字中内容确定是只写高8位,只写低8位,还是先低后高写
18、入16位。 读计数值:CPU应先送计数器锁存命令,再用输入指令从输出锁存器中获取计数值。 读取计数值时应根据控制字内容确定是只读高8位,只读低8位,还是先低后高读出16位。,可编程通用定时/计数接口芯片Intel8253,8253的内部结构及基本功能 (P442),8253的外接特性及端口地址 (P441),8253的控制字及工作方式 (P444),8253的程控技术,定时/计数功能的实现,定时功能和计数功能均可通过计数器来实现:若计数器输入为标准时钟脉冲,则通过计数可得到时间间隔,实现定时功能;若计数器的输入为需计数的信号,则计数值就是一定时间内信号(脉冲)出现的次数,即实现计数功能。 定时
19、/计数实现方式:软件、硬件。,定时/计数器,计数初值寄存器,当前计数值输出寄存器,计数器,计数控制,8253的内部结构及基本功能 (P442),控制寄存器,8253的外接特性及端口地址的确定(P441),二进制计数时最小值为0001H,最大值为10000H(65535) 十进制(BCD码)计数时最小值为0001,最大值为10000。,8253的控制字及工作方式(P444),D7 D6 D5 D4 D3 D2 D1 D0,D0=0,采用二进制计数;D0=1,采用二-十进制计数;,D3D2D1=000,计数器工作在方式0D3D2D1=001,计数器工作在方式1 D3D2D1=010,计数器工作在方
20、式2 D3D2D1=011,计数器工作在方式3 D3D2D1=1X0,计数器工作在方式4 D3D2D1=1X1,计数器工作在方式5,D5D4=00,将当前计数值锁存至输出寄存器中以供CPU读;D5D4=01,只读/写计数器低8位;D5D4=10,只读/写计数器高8位;D5D4=11,先读/写计数器低8位,再读/写计数器高8位;,D7D6=00,选择计数器0的控制寄存器;D7D6=01,选择计数器1的控制寄存器;D7D6=10,选择计数器2的控制寄存器;D7D6=11,非法;,8253工作在方式0时的波形图(P445),CW 写入后使输出OUT变为低电平,LSB之后的第一个CLK下降沿才将计数初
21、值送入计数器,计数减至0后OUT 恢复为高电平,GATE信号可以使计数暂停,计数过程中重新写入的初值将在之后的第一个CLK下降沿起作用,6种工作方式的对比P450,例1:某8253占用端口地址为40H 43H,其中计数器 0工作在方式 0,初值为4,二进制计数,试初始化该8253。,初始化程序: MOV AL,10H OUT 43H,AL ;写计数器 0 的控制字 MOV AL,04H OUT 40H,AL ;写计数器 0 的初值,例2:某8253占用端口地址为40H 43H,其中计数器1工作在方式 3,初值为4020H,十进制计数,试初始化该8253。,初始化程序: MOV AL,77H O
22、UT 43H,AL ;写计数器 1 的控制字 MOV AL,20H OUT 41H,AL ;写计数器 1 的低 8 位 MOV AL,40H OUT 41H,AL ;写计数器 1 的高 8 位,例:某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在微
23、机系统中的应用(P452),0,计数器1用于定时刷新DRAM,计数器0用于系统时钟,中断类型号8,计数器2用于控制主板扬声器的发声频率;同时用于扬声器控制的还有8255的PB0和PB1,Intel8259A的基本结构及引脚 Intel 8259A的基本功能Intel 8259A的程控技术,初始化:按顺序选择输出初始化命令字ICW1ICW4(P463) 工作中根据需要可随时发送操作命令字OCW1OCW3 (P466),一片8259管理8级中断,不增加其它任何电路时可用9片8259 级联(P472)构成64级的主从式中断系统; 具中断判优逻辑,对任一级中断都可以单独屏蔽或允许; 中断响应后,能将用
24、户预置的中断类型号自动提供给CPU; 可通过编程选择其工作方式(即可程控),包括设置优先级、中断触发方式、中断响应方式、中断嵌套方式、中断结束方式、总线连接方式等。,可编程中断控制器8259A(P459),Intel8259A的基本功能结构(P461),读写逻辑,控制逻辑,服务状态寄存器ISR,优先权处理器PR,中断请求寄存器IRR,8259的级联工作方式(P472),CPU,主8259CAS0CAS1CAS2IR0IR1IR2IR7,INT,INTA,SP/EN,从8259IR0IR1IR2CAS0 IR7CAS1CAS2,INT,INTA,SP/EN,从8259IR0IR1IR2CAS0
25、IR7CAS1CAS2,INT,INTA,SP/EN,VCC,外设发出中断请求信号,8259初始化命令字的发送流程(P466),带A/D/A接口的数字系统结构(P485) A/D接口芯片 D/A接口芯片,ADC的分类(P485) ADC的主要性能指标 (P486) ADC芯片的应用:ADC0809 P487 、ADC574 P490,A/D/A接口芯片,DAC的分类(P493) DAC的主要性能指标 (P493) DAC芯片的应用:DAC0832 (P494),带A/D/A接口的数字系统(P485),放大器,传感器,采样/保持器,A/D,计 算 机 系 统,控制对象,执行部件,多路模拟开关,I
26、O接口,IO接口,D/A,放大器,ADC的分类(P485),按转换原理,直接,间接,:并联转换、逐次逼近(分辨率高,快),电压-时间电压-频率电压-脉宽,(积分式(抗干扰性强,慢),按分辨率(数字位数),8位,12位,按转换速度,超高速(转换时间330ns),次超高速(转换时间330ns3.3s),高速(转换时间 20s),中速(转换时间20300s),低速(转换时间300s),按结果输出形式,串行,并行,按数字编码方式,二进制(补码),BCD码,分辨率 精度(转换误差) 速度(转换时间) 其它,ADC的主要性能指标(P486),用于表示ADC对微小信号的分辨能力。分辨率值越小或输出二进制代码
27、的位数越多,转换精度越高。,完成一次A/D转换所需要的时间,即从它接到转换命令起直到输出端得到稳定的数字量输出所需要的时间。,表示AD转换结果相对于理论值的误差,常用LSB(最低有效位)的倍数表示。可表示为数字(量化)误差和模拟(设备)误差、绝对误差(绝对精度)和相对误差(相对精度)等。,量程(输入电压范围)、输出电平、编码方式、功率、温度等。,则分辨率为:5V/(24-1) =5V/15 =0.333V,则分辨率为:5V/(28-1) = 5V/255 =0.0196V,通常我们使用数字量最低有效位(LSB)对应的最小可分辨模拟量来表示A/D和D/A的分辨率:,满量程模拟量/(2数字量位数1
28、),设满量程模拟量为5V电压:,若数字量为4bit,有:,若数字量为8bit,有:,有时也直接用数字量的位数来表示分辨率。,A/D转换芯片的应用,一、根据系统对分辨率、精度及速度等各项指标的需求确定ADC的具体型号。二、确定ADC的参考电压。三、确定ADC与微处理器的接口:除数字信号线外通常还有一些必要的控制信号(如启动信号等)和状态联络信号(如忙信号、中断请求信号等)。四、编程实现A/D转换: CPU发控制信号启动ADC; 等待A/D转换完成:CPU可通过查询方式或中断方式获知转换是否完成; 转换完成后,CPU读入转换结果。,START,逐次比较; 8路输入;8位输出(分辨率);7位精度;时
29、钟640kHz时转换时间100s; 通道选择地址及数据均已内部锁存,可直接与微机接口;,ADC 0809的内部结构及基本功能(P488),八位三态输出锁存,通道地址锁存与译码,控制,八路模拟通道选择开关,比较器,逐次逼近寄存器SAR,D/A,IN0,IN1,IN7,AADA,AADB,AADC,ALE,REF+,REF-,EOC,OE,D07,AADA,AADB,AADC,OE,八路,八位,逐次逼近寄存器SAR,START,P488例9.43,9,P489例9.44,8路轮流采样;ALE、START、OE均与地址有关,而与数据无关;EOC作为状态输入,供CPU查询使用;,只有1路采样;STAR
30、T、OE与地址译码有关;EOC为中断请求信号,CPU在中断服务程序中读结果数据;,CS,CS,与ADC0809相比,AD574有以下特性:也采用逐次逼近式转换原理;分辨率可为8bit或12bit(可以12位同时并行输出,也可以字节形式分两次并行输出);误差为1LSB或0.5LSB位,转换时间为25s;模拟信号可为单极性或双极性输入;除启动信号R/C、忙状态信号STS外,还有与分辨率选择、12位输出方式选择及输入信号极性选择有关的控制信号;,AD574的基本特性(P490),P492例9.45说明:1. AD574工作在12位并行输出方式,CPU应分两次从8255的A口和B口读回转换结果;2.
31、系统工作在查询方式,8255的PCX下半部(PC0)为状态口输入,上半部(PC57)为控制口输出;,DAC的分类(P493),按转换原理(解码网络),T型电阻型倒T型电阻型权电阻型权电流型电容型脉宽调制型,按数据输入形式,串行并行,按模拟信号输出形式,电流电压,按分辨率(数字位数),8位,12位,分辨率 精度(转换误差) 速度(转换时间) 其它,DAC的主要性能指标,表示DAC对输入微小量变化的敏感程度。分辨率值越小或输出二进制代码的位数越多,转换精度越高。,用于表示输出模拟量随数字量变化的快慢程度,通常用建立时间(输出电压达到规定精度所需要的时间)来表示。DAC的转换速度主要由转换网络的延迟
32、时间和运算放大器的电压变化率来决定。,表示DA转换结果相对于理论值的误差,常用LSB(最低有效位)的倍数表示。可表示为绝对误差(绝对精度)和相对误差(相对精度) 、线性误差(非线性度)、馈送误差等 。,输出电平、温度系数等。,一、根据系统对精度、速度及输出电平范围等各项指标的需求确定DAC的具体型号。二、确定DAC的参考电压。三、确定DAC与微处理器的接口: 控制信号和状态信号一般较少,连接简单。 因D/A转换需要一定时间,所以在连接数据信号线时应注意DAC本身是否有锁存功能,如没有则应在DAC芯片外部设计锁存功能(如通过8255端口锁存数据)。四、编程实现D/A转换。,D/A转换芯片的应用,
33、DAC 0832的内部结构及基本功能(P495),AGND,D4,D5,D6,D7,D0,D1,D2,D3,VCC,VREF,RFB,DGND,ILE,Iout2,Iout1,1,2,3,4,5,6,7,8,9,10,19,18,17,16,15,14,13,12,11,20,VREF,RFB,Iout1,Iout2,AGND,VCC,uo,DGND,ILE,CS,T型电阻网络D/A,D7,D0,.,.,.,1,1,DAC0832内部电路框图,8位数据输入;(双极)电流输出;输入可设置为直通、一级或两级缓存P497、P498;,;-8255初始化程序-MOVDX,3F6HMOVAL,80H;A口方式0输出,C口方式0输出,B口未用OUTDX,AL;发控制字MOVDX,3F4HMOVAL,10H;DAC0832为直通方式OUTDX,AL;设置C口输出;-利用0832产生锯齿波-MOVDX,3F0HMOVAL,00HLP:OUTDX,AL ;DAC输入值INCALCALLDELAYJMPLP;循环输出,形成锯齿波,