




已阅读5页,还剩121页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理、汇编与接口技术,8.2,8.3,可编程并行接口8255,可编程计数器/定时器8253,串行通信与异步通信控制器8250的应用,第八章 常用可编程接口芯片,8.1,并行通信是以多根数据线在CPU与外设之间传输数据,传输速度快,计算机系统中的数据总线就是采用的并行方式。 适合于短距离数据传输(几m或几十m)和传输速度要求高的场合,8.1 可编程并行接口8255A,8.1 可编程并行接口8255,8255是为8080,8085和8088微型机系统设计的并行I/O接口芯片。,8255的内部组成如下图所示,8.1.1 8255的组成与接口信号,端口A(Port A)、端口B(Port B)和端口C(Port C)都是8位的端口,都可以选择作为输入或输出。 可以将端口C的高4位和低4位分开使用,分别作为输入和输出。 端口A和端口B作为选通输入或输出的数据端口时,端口C的指定位与端口A和端口B配合使用,用作控制信号或状态信号。,8.1.1 8255的组成与接口信号,根据CPU的方式命令字控制8255的工作方式。 根据CPU的命令对端口C的每一位实现按位复位或置位。 A组控制电路控制端口A和端口C的上半部(PC7PC4)。 B组控制电路控制端口B和端口C的下半部(PC3PC0)。,8.1.1 8255的组成与接口信号,控制把CPU的控制命令或输出数据送至相应的端口, 控制把外设的状态信息或输入数据通过相应的端口送至CPU。,8.1.1 8255的组成与接口信号,(1)A1、A0 端口选择:用来选择A、B、C 3个端口和控制字寄存器。通常,它们与PC微机的地址线A1和A0相连。 (2)CS选片信号:低电平有效,由它启动CPU与8255之间的通信。通常,它与PC微机地址线的译码电路的输出线相连,并由该译码电路的输出线来确定8255的端口地址。,8.1.1 8255的组成与接口信号,A1,A0和CS,RD,WR及组合所实现的各种功能如下:,8.1.1 8255的组成与接口信号,8255有3种工作方式,由方式选择控制字来选用: (1)方式0 (Mode 0)-基本输入输出。 (2)方式1 (Mode 1)-选通输入输出。 (3)方式2 (Mode 2)-双向传送。,8.1.2 8255的工作方式与控制字,8.1.2 8255的工作方式与控制字,8.1.2 8255的工作方式与控制字,如:端口C的bit3(PC3)的置位控制字为00000111B(07H),复位控制字为00000110B(06H)。 注意: C端口的按位置位/复位控制字须跟在方式选择控制字之后写入控制字寄存器。即使仅使用该功能,也应先选送一方式控制字。,8.1.2 8255的工作方式与控制字,例8.1 将8255 C端口的8根I/O线接8只发光二极管的正极(八个负极均接地),用按位置位/复位控制字编写使这8只发光二极管依次亮、灭的程序。设8255的端口地址为380H383H。 本程序要使用8255的2个控制字-方式选择字和按位置位/复位字。这2个控制字都写入8255的控制字寄存器,由它们的D7位为1或0来区别写入的字是方式选择字还是置位/复位字。8255的控制字寄存器的端口地址为383H。方式选择字只写入一次,其后写入的都是置位/复位字。,8.1.2 8255的工作方式与控制字,8255与PC微机的连接及8255 C端口与8只发光二极管 的连接如图。,程序框图,MOV DX,383H ;383H为控制字寄存器的端口地址 MOV AL,80H ;方式选择字 OUT DX,AL MOV AL,1 ;PC0的置位控制字 AGAIN: OUT DX,AL ;点亮一只发光二极管 LOOP $ ;延时 LOOP $ AND AL,0FEH ;置位字改为复位字 OUT DX,AL ;熄灭点亮的发光二极管 ADD AL,3 ;PCiPCi+1,复位字改为下一位的置位字 AND AL,0FH ;保持D7为0,PUSH AX MOV AH,11 ;检查键盘有无输入 INT 21H ;无0送AL,有-1送AL INC AL POP AX JNZ AGAIN,这是一种基本的I/O方式。在这种工作方式下,3个端口都可由程序选定作输入或输出。它们的输出是锁存的,输入是不锁存的。 在这种工作方式下,可以由CPU用简单的输入或输出指令来进行读或写。因而当方式0用于无条件传送方式的接口电路时是十分简单的,这时不需要状态端口,3个端口都可作为数据端口。,8.1.3 3种工作方式的功能,若将例8.1改为C端口方式0输出,则控制程序为: MOV DX,383H MOV AL,80H ;10000000 OUT DX,AL MOV DX,382H ;C端口的端口地址送DX MOV AL,1 ;C端口的输出值,AGAIN: OUT DX,AL LOOP $ ;延时 LOOP $ PUSH AX MOV AH,11 ;11号功能调用:检查键盘有无输入 INT 21H ;无0送AL,有-1送AL INC AL ;有键入,AL=-1,AL增1,AL=0 POP AX JZ BACK ROL AL,1 ;改变C端口的输出值 JMP AGAIN BACK: ret,2.方式1 选通输入输出方式,方式1是一种选通输入输出方式(也称为应答方式或异步方式)。A口和B口都可以工作在这种方式。在这种方式下,A口和B口作为两个独立的8位IO数据通道(可连接外设)。C口要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可作为方式0的输入输出。方式1也是单向传送。,方式1输入的状态控制信号及其时序关系如图。,(1) STB(strobe) 选通信号,低电平有效。由外设发出的输入信号,把输入装置送来的数据送入输入缓冲器; (2)IBF(input buffer full) 输入缓冲器满信号,高电平有效。这是8255输出给外设的联络信号。外设将数据送至输入缓冲器后,该信号有效;,(3)INTR(interrupt request) 中断请求信号,高电平有效。这是8255的一个输出信号,可用作向CPU申请中断的请求信号,以要求CPU服务。当IBF为高和INTE(中断允许)为高时,由STB的上升沿(后沿)使其置为高电平。由RD信号的下降沿(CPU读取数据前)清除为低电平。 (4)INTE(interrupt enable) 中断允许信号,端口A中断允许INTEA可由用户通过对PC4的按位置位/复位来控制。而INTEB 由PC2 的置位/复位控制。INTE置位允许中断。INTE复位禁止中断。,方式1输入:A端口,数据选通信号 表示外设已经准备好数据,输入缓冲器满信号 表示A口已经接收数据,中断请求信号 请求CPU接收数据,PC4,PC5,PC3,PA7PA0,INTEA,IBFA,INTRA,STBA,中断允许触发器,RD,方式1输出的状态控制信号及其时序关系如图。,(1) OBF输出缓冲器满信号,低电平有效。这是8255输出给外设的一个联络信号。CPU把数据写入指定端口的输出锁存器后,该信号有效,表示外设可以把数据取走。它由ACK的前沿(下降沿)即外设取走数据后,使其恢复为高。 (2)ACK(acknowledge) 低电平有效。这是外设发出的响应信号,该信号的前沿取走数据并使OBF无效后沿使INTR有效。,(3)INTR 中断请求信号,高电平有效。当输出装置已经接受了CPU输出的数据后,它用来向CPU提出中断请求,要求CPU继续输出数据。OBF为“1”(高电平)和INTE为“1”(高电平)时,由ACK的后沿(上升沿),使其置位(高电平),WR信号的前沿(下降沿)使其复位(低电平)。 (4)INTEA 由PC6的置位/复位控制。而INTEB由PC2置位/复位控制。INTE置位允许中断。,方式1输出:A端口,外设响应信号 表示外设已经接收到数据,输出缓冲器满信号 表示CPU已经输出了数据,中断请求信号 请求CPU再次输出数据,PC6,PC7,PC3,PA7PA0,INTEA,OBFA,INTRA,ACKA,中断允许触发器,WR,只限于A组使用 外设通过PA7-PA0,既能发送,又能接收数据(双向总线I/O)。 它用双向总线端口A和控制端口C中的5位进行操作,此时,端口B可用于方式0或方式1。端口C的其他3位作I/O用或作端口B控制状态信号线用。,方式2状态控制信号:,INTE1是输出的中断允许信号,由PC6的置位/复位控制 INTE2是输入的中断允许信号,由PC4的置位/复位控制 其他信号的作用及意义与方式1相同。,8.2,8.3,可编程并行接口8255A,可编程计数器/定时器8253,串行通信与异步通信控制器8250的应用,第八章 常用可编程接口芯片,8.1,8.2可编程计数器/定时器8253,8253是Intel公司为它的微处理器设计的一个外围电路,它可以通过软件方式设定不同的工作方式,产生各种形式的时间延迟信号,以满足各类系统提出的不同时间要求。 8253具有3个独立的、功能完全相同的16位计数器,每个计数器可以单独作为计数或定时使用,都可以按照二进制(1到65536)或BCD码(1到10000)计数(减1计数)。每一个计数器都有6种工作方式,这6种工作方式都可以由其控制字设定。 采取减1计数:先赋初值,接收到一个脉冲,计数值减1。,8253的内部结构:,8.1 8253的组成与接口信号,CLK时钟输入信号 在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数执行单元的计数值减1。,GATE门控输入信号 控制计数器工作(允许/禁止计数,启动/停止计数),可分成电平控制和上升沿控制两种类型。,OUT计数器输出信号 当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号。,用作系统总线和8253的接口,根据CPU的输入或输出指令实现数据传送。 (1) CPU向8253所写的控制字 (2) CPU向某计数器所写的计数初值 (3) CPU读取某个计数器的现行值时,控制字寄存器寄存数据缓冲器传送来的控制字。 控制字寄存器有3个,都是8位的寄存器,分别对应于3个计数器。 最高2位确定送入哪个计数器的控制字寄存器寄存。,计数器0、计数器1和计数器2是3个独立的计数器,它们的内部结构相同。,8.1 8253的组成与接口信号,计数初值存于计数初值寄存器。 减1计数器在CLK脉冲(GATE允许)作用下进行递减计数,直至计数值为0,输出OUT信号 输出锁存器通常跟随计数执行单元变化,但当写入锁存命令时,计数输出锁存器锁定当前的计数值。,8253的计数器有6种工作方式: (1)方式0-计数结束中断 (2)方式1-硬件触发单拍脉冲 (3)方式2-频率发生器 (4)方式3-方波发生器 (5)方式4-软件触发选通 (6)方式5-硬件触发选通,8.2 计数器的工作方式及其与输入输出的关系,6种工作方式的输出信号如下图所示。,8.2 计数器的工作方式及其与输入输出的关系,只有方式0在写入控制字后输出为低,其他5种方式,都是在写入控制字后输出为高。,方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲。但方式2是连续工作,方式4由软件(设置计数值)触发启动,而方式5由门控脉冲触发启动。,方式5与方式1的工作方式基本相同,但输出波形不同,方式1的输出为宽度是N个CLK脉冲的低电平脉冲(计数过程中输出为低),而方式5的输出为宽度是1个CLK脉冲的负脉冲(计数过程中输出为高)。,方式3和方式2的输出都是周期性的,它们的主要区别是,方式2在计数过程中输出始终为高,直至计数器减到1时,输出一个CLK负脉冲后又恢复为高;方式3在计数过程中输出有一半时间为高,另一半时间为低,方式0. 计数结束中断方式,GATE,OUT,CLK,0,3,1,2,4,4,方式0,WR, 设 定 工 作 方 式, 设 定 计 数 初 值, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,(高电平),方式1. 硬件触发单拍脉冲, 设 定 工 作 方 式, 设 定 计 数 初 值, 硬 件 启 动, 计 数 值 送 入 计 数 器, 计 数 过 程, 计 数 结 束,硬件触发计数(上升沿),方式2. 频率发生器,软件启动:软件触发计数 硬件启动:GATE信号上升沿,方式3. 方波发生器,软件启动:软件触发计数 硬件启动:GATE信号上升沿,方式4. 软件触发选通,选通脉冲,软件触发计数 GATE信号为低电平时停止计数;GATE信号由低电平变为高电平时,重新装入计数初值,从初值开始计数!,方式5. 硬件触发选通,硬件触发计数(上升沿),任一种方式,只有写入计数值后才能开始计数,方式0、2、3和4都是在写入计数值后,计数过程就开始了,而方式1和5需要外部触发启动,才开始计数。 6种方式中,只有方式2和3是连续计数,其他4种方式都是一次计数,要继续工作需要重新启动,方式0、4由写入计数值(软件)启动,方式1、5要由外部信号(硬件)启动。,8.2 计数器的工作方式及其与输入输出的关系, 在方式0和方式4中,GATE是电平起作用。计数过程受GATE信号的控制,GATE为高电平计数,低电平停止计数。 在方式1和方式5中,GATE是上升沿起作用。在计数过程中,只要GATE出现由低到高的跳变,计数的初值就被装入减1 计数器,并从初值起继续计数。 在方式2和方式3中,GATE信号的上升沿和电平均起作用。高电平计数,低电平停止计数。上升沿则重新装入计数初值,继续计数。,8.2 计数器的工作方式及其与输入输出的关系,8253可以在计数过程中写入计数值,但它的作用在不同方式时有所不同。方式0和方式4是立即有效(即新的计数值写入减1计数器),方式1和方式5是外部触发后有效,方式2和方式3是本次计数结束后有效。,8.2 计数器的工作方式及其与输入输出的关系,方式控制字,00 计数器0 01 计数器1 10 计数器2 11 非法,00 计数器锁存命令 01 只读写低字节 10 只读写高字节 11 先读写低字节 后读写高字节,000 方式0 001 方式1 x10 方式2 x11 方式3 100 方式4 101 方式5,0 二进制 1 十进制 (BCD码),8.3 8253的控制字和初始化编程,(1)计数器选择(D7、D6)。 由于三个计数器的工作是完全独立的,所以每个计数器都有一个控制字。而三个控制字都由同一地址(控制字寄存器地址)写入,因而由控制字的D7、D6两位来指定该控制字是哪个计数器的控制字。 在控制字中的计数器选择与计数器的地址是两回事,不能混淆。,8.3 8253的控制字和初始化编程,(2)数据读/写格式(D5、D4)。 读/写数据时,是读/写8位数据还是16位数据; 若是8位数据,可以令D5D4=01,只读/写低8位,则高8位自动置0;若是16位数据,而低8位为0,则可令D5D4=10,只读/写高8位,低8位就自动为0; 若令D5D4=11时,就先读/写低8位,后读/写高8位。在读取16位计数值时, 可令D5D4=00,则把写控制字时的计数值锁存,以后再读取。,8.3 8253的控制字和初始化编程,(3)工作方式(D3、D2、D1)。 8253的每个计数器的6种不同的工作方式,由这3位决定。 (4)数制选择(D0)。 8253的每个计数器有两种计数制:二进制和十进制,由这位决定。在二进制计数时,写入的初值的范围为0000HFFFFH,其中0000H是最大值,代表65536。在十进制计数时,写入的初值的范围为0000H9999H,其中0000H是最大值,代表10000。 BCD位=1,N=1200H; BCD位=0,N=1200H; 写1200H,分两次写,先写低字节(00H),再写高字节(12H),8.3 8253的控制字和初始化编程,例,MOV DX,303H MOV AL,00010100B ; 通道0读写低8位、方式2,二进制计数 OUT AL,DX MOV DX,300H MOV AL,100 ;通道0的计数初值100 OUT DX,AL MOV DX,303H MOV AL,01100111B ;通道1读写高8位,方式3,BCD计数 MOV DX,301H MOV AL,10H OUT DX,AL,端口地址300H303H。计数器0采用二进制计数,初值为100,工作方式2;计数器1采用BCD计数,初值为1000,工作方式3,8253的初始化,写入初始值,MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL,MOV DX,Base+3 MOV AL,01010100B OUT DX,AL,如通道1,方式2,二进制计数,计数初值=FFH,设置控制字,确定计数器某通道的工作方式、计数方式等,对使用的每个通道都要写控制字,初值255,先写低字节再写高字节,初值为0,即为计数65536次(写两次0),BCD计数初值23H,表示计数23次,例如:用计数器0,工作在方式1,按十进制计数,计数值为5080。若该片8253的端口地址为388H38BH,则初始化程序段为:,MOV DX,38BH ;控制字寄存器口地址 MOV AL,00110011B ;计数器0先读写低8位再高8位方式1BCD数 OUT DX,AL MOV DX,388H ;计数器0口地址 MOV AL,80H OUT DX,AL ;写低8位 MOV AL,50H OUT DX,AL ;写高8位,8.3 8253的控制字和初始化编程,8253任一计数器的计数值,CPU可用指令读取。CPU读到的是执行读取指令瞬间计数器的现行值。但8253的计数器是16位的,所以要分两次读至CPU,因此,若不设法锁存的话,则在读数过程中,计数值可能已变化了。要锁存有两种办法: (1)利用GATE信号使计数过程暂停。 (2)向8253输送一个控制字,令8253的计数值在出寄存器锁存。,8.3 8253的控制字和初始化编程,例如:读取计数器1的16位计数值,存入CX中,其程序段为:,MOV DX,38BH MOV AL,01000000B ;计数器1的锁存命令 OUT DX,AL MOV DX,389H IN AL,DX ;先读低8位 MOV CL,AL IN AL,DX ;再读高8位 MOV CH,AL,8.3 8253的控制字和初始化编程,方式2和方式3初值计算,如CLK为0.5MHZ的方波,需要输出1KHZ的方波,计数初值N=(0.5*106)/(1*103)=500 由于8253是16位计数器,其计数初值最大为0(计数65536个脉冲),如输入脉冲频率与输出脉冲频率之比超过65536,则必须利用8253的多个通道实现。 输入时钟CLK的频率为2MHz,希望产生2Hz的方波,2MHz与2Hz的比值为1000000,超过了一个计数器的计数能力,可以利用8253的两个通道实现:输入的2MHz脉冲接入CLK0,OUT0再连接到CLK1,作为通道1的输入,计数器0和计数器1的初值都是1000,则OUT1输出的就是2Hz的方波。,1. 8253的控制字格式 (1) 计数器选择 (2) 读/写指示 (3)工作方式选择 (4)计数初值 2. 8253的编程命令 (1)写入命令(控制字、计数初值) (2) 读出命令 1) 读之前先停止计数 2) 读之前先送计数锁存命令,8253的控制字和初始化编程,例假定8253端口地址为40H43H,计数器2工作在方式0,按二进制计数,计数初值为4。 例 假设8253端口地址为40H43H,计数器2工作在方式2,按BCD码计数,计数初值为2000。,8253的初始化编程,例如:读取计数器1的16位计数值,存入CX中,其程序段为:,MOV DX,38BH MOV AL,01000000B ;计数器1的锁存命令 OUT DX,AL MOV DX,389H IN AL,DX ;先读低8位 MOV CL,AL IN AL,DX ;再读高8位 MOV CH,AL,例 IBM/PC微机的某扩展板上使用一片8253,其端口地址为400H403H,要求从计数器0的输出端OUT0得到250HZ的方波信号,从计数器1的输出端OUT1得到10HZ的连续单拍负脉冲信号。已知系统提供的计数脉冲频率为125KHZ,试编写程序。,8.4 8253的应用,例 某IBM PC/XT应用系统中,当某一外部事件发生时,1S后向主机申请中断,若用8253A实现延迟,试设计硬件连接图并对8253A进行初始化编程。设8253A的端口地址为400H403H。,例8.4 8253在IBM PC XT中的应用。,8.4 8253的应用,IBM PC XT微型计算机中8253的部分线路,由译码电路可知计数器和控制字寄存器的端口地址为40H5FH,BIOS取为计数器040H,计数器141H,计数器242H,控制字寄存器43H。 3个计数器的输入时钟频率均为1.19MHz。 计数器0,工作于方式3 n0=0,即65536,输出频率为1.19318MHz6553618.206Hz的方波。用来作为中断控制器8259的第0号中断信号线(IRQ0)的输入。 其控制字为36H(00110110B)。,8.4 8253的应用,对计数器0初始化的程序段如下:,mov al, 36h ;计数器0为方式3,采用二进制计数, ;先低后高写入计数值 out 43h, al ;写入方式控制字 mov al, 0 ;计数值为全0 out 40h, al ;写入低字节计数值 out 40h, al ;写入高字节计数值,计数器输出间隔为15S的负脉冲。该脉冲的上升沿触发D触发器。使它对DMA控制器 8237的第0号DMA请求信号线DRQ0发出DMA请求信号,8237则依据这个请求信号对动态RAM进行刷新。计数器1的计数值为: 1.19106/(1/15)10-6=18,计数器1:定时刷新,需要重复不断(周期性)提出DRAM刷新请求 门控总为高,选择方式2,mov al, 54h ;计数器1为方式2,采用二进制计数,只写低8位计数值 out 43h, al ;写入方式控制字 mov al, 18 ;计数初值为18 out 41h, al ;写入计数值,计数器2输出不同频率的方波,经电流驱动器75477放大,推动扬声器发出不同频率的声响。计数器2的计数值为可变值。随蜂鸣器声响频率的高低而变,程序设计中让它的取值范围由1到65535,即16位二进制数,故其控制字为B6H(10110110B)。,计数器2:扬声器控制,计数器2的输出控制扬声器的发声音调。 计数器2只能工作在方式3,才能输出一定频率的方波;经滤波后得到近似的正弦波,进而推动扬声器发声。 计数值确定发生频率。 扬声器还受控于并行接口(8255芯片)。 必须使PB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音。 确定发声时间的长短。,entry parameters: DH= Number of long tones to beep DL= Number of short tones to beep err-beep proc PUSHF ;保存所有的标志位 CLI ;关中断 PUSH DS MOV AX,DATA ;DS指向数据段 MOV DS,AX OR DH,DH ;是否要鸣长音 JZ G3 ;不鸣长音,去鸣短音,下面是IBM PC XT机BIOS中的开机诊断子程序。该子程序让蜂鸣器鸣一声长音(3秒)和一声短音(0.5秒),以指出系统板或RAM模块或者CRT显示器有错。,G1: MOV BL,6 ;蜂鸣常数,一次鸣响延续时0.5BL CALL BEEP ;调用鸣响子程序 G2: LOOP G2 ;鸣响间隔,等待500mS DEC DH JNZ G1 ;长音没鸣响完,继续 CMP MFG-TST,1 ;为制造测试模式? JNZ G3 ;为制造测试模式,继续鸣响短音 MOV AL,0DH ;停止LED闪 OUT PORT-B,AL ;PORT-B=61H,即8255B端口 JMP G1,G3: MOV BL,1 ;短音鸣响时间为0.51=0.5S CALL BEEP G4: LOOP G4 DEC DL JNZ G3 ;短音没鸣响完,继续 G5: LOOP G5 ;短音鸣响完,延迟1S返回 G6: LOOP G6 POP DS POPF RET err-beep endp,鸣响子程序: 扬声器控制频率设置 beep proc MOV AL,0B6H ;计数器2的控制字 OUT 43H,AL MOV AX,533H ;1000Hz分频值,分高低字节两次送入 OUT 42H,AL MOV AL,AH OUT 42H,AL,IN AL,61H ;读取8255B端口的状态 MOV AH,AL OR AL,3 ;D1D0PB1PB011B,其他位不变 OUT 61H,AL ;打开蜂鸣器,扬声器控制扬声器开, MOV AL,AH ;恢复8255B端口的原来值,关蜂鸣器 OUT 61H,AL RET beep endp,扬声器控制扬声器关,例8.5 对外部事件计数10次。 计数电路如下图所示,由图可知,使用的是计数器0。,控制程序如下: stack segment stack stack dw 32 dup(0) stack ends data segment DA1 DB WAIT LOAD,0AH,0DH,$ DA2 DB PLEASE INPUT,0AH,0DH,$ DA3 DB PROGRAM TERMINATED NORMALLY,0AH,0DH,$ data ends code segment begin proc far assume ss:stack,cs:code,ds:data push ds,sub ax,ax push ax mov ax,data mov ds,ax MOV DX,383H ;8253计数器的方式0,BCD计数 MOV AL,11H OUT DX,AL MOV DX,380H MOV AL,10H OUT DX,AL MOV DX,OFFSET DA1 MOV AH,9 INT 21H MOV DX,380H,LOAD: IN AL,DX CMP AL,10H ;等待单稳输入脉冲,装入计数初值 JNE LOAD MOV DX,OFFSET DA2 MOV AH,9 INT 21H MOV DX,380H CONTIN: IN AL,DX CMP AL,0 ;等待单稳输入10个脉冲 JNZ CONTIN MOV DX,OFFSET DA3 MOV AH,9 INT 21H ret begin endp code ends end begin,将OUT0接至80x86微机的IRQ9,使用中断编程的程序如下: stack segment stack stack dw 32 dup(0) stack ends data segment DA1 DB WAIT LOAD,0AH,0DH,$ DA2 DB PLEASE INPUT,0AH,0DH,$ DA3 DB PROGRAM TERMINATED NORMALLY,0AH,0DH,$ data ends,code segment begin proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax MOV ES,AX mov ax,data mov ds,ax MOV DX,383H ;8253计数器的方式0,BCD计数 MOV AL,11H OUT DX,AL,MOV DX,380H MOV AL,10H OUT DX,AL MOV DX,OFFSET DA1 MOV AH,9 INT 21H MOV DX,380H LOAD: IN AL,DX CMP AL,10H ;等待单稳输入脉冲,装入计数初值 JNE LOAD MOV AX,SEG IS8253 ;填写中断向量表 MOV ES:01C6H,AX,MOV AX,OFFSET IS8253 MOV ES:01C4H,AX IN AL,0A1H ;改变屏蔽字,允许IRQ9中断 AND AL,0FDH OUT 0A1H,AL MOV DX,OFFSET DA2 MOV AH,9 INT 21H JMP $ ;等待单稳输入10个脉冲 MOV DX,OFFSET DA3 MOV AH,9 INT 21H ret,IS8253: MOV AL,61H ;指定中断结束命令 OUT 0A0H,AL MOV AL,62H OUT 20H,AL IN AL,0A1H ;关屏蔽,禁止IRQ9中断 OR AL,2 OUT 0A1H,AL POP AX ;修改返址 INC AX INC AX PUSH AX IRET begin endp code ends end begin,8.2,8.3,可编程并行接口8255A,可编程计数器/定时器8253,串行通信与异步通信控制器8250的应用,第八章 常用可编程接口芯片,8.1,串行接口,定义,利用一条传输线将数据一位位地顺序传送,线路简单,成本低,适用于远距离通信,传输速度慢,并行通信:各位同时传送,快, 成本高,不适用于远距离,起止式异步通信协议,起始位每个字符开始传送的标志,起始位采用逻辑0电平,数据位数据位紧跟着起始位传送。由58个二进制位组成,低位先传送,校验位用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位,停止位表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位,空闲位传送字符之间的逻辑1电平,表示没有进行传送,串行接口电路的作用是将微型计算机输出的并行数据转换成串行(位串)数据发送出去,以及接收外部的串行数据,并将其转换成并行数据送入微型计算机。 PC机采用的串行接口电路是可编程异步通信控制器8250(或NS16450)。,8.3 串行通信与异步通信控制器8250的应用,微机内部都是并行通信,可编程异步通信控制器8250仅完成TTL电平的并串或串并转换。为了增大传输距离,可在串行接口电路与外部设备之间增加信号转换电路。目前常用的转换电路有RS-232收发器、RS-485收发器和MODEM。 PC机的串行口就是使用可编程异步通信控制器8250和RS-232电平转换电路将微型计算机并行的逻辑0和逻辑1电平信号转换为串行的+15V和-15V脉冲波形,通过25针(或9针)D型插座与外部进行串行通信的,8.3.1 80X86微型计算机的串行口,1.电平转换电路RS-232收发器 (1)RS-232发送器1488和RS-232接收器1489 RS-232发送器1488的逻辑功能: RS-232接收器1489的逻辑功能:,8.3.1 80X86微型计算机的串行口,(2)MAX202和MAX203,MAX典型工作电路 如右图:,8.3.1 80X86微型计算机的串行口,2.PC机串行口的串行通信信号,8.3.1 80X86微型计算机的串行口,可编程串行异步通信控制器8250是PC机串行通信控制器接口电路的核心。8250将外部设备或MODEM通过RS-232接口的串行数据接收进来,并转换成并行的8位数据送往PC机,或者将PC机的并行数据转换成串行数据送往外部设备或MODEM。,8.3.2 异步通信控制器8250,1.8250的组成与接口信号 8250主要由6部分组成: 数据总线缓冲器与选择和控制逻辑; 接收控制电路; 发送控制电路; 传送速度控制电路; 调制解调器控制电路; 中断控制电路。,8.3.2 异步通信控制器8250,数据总线缓冲器接收中央处理器发给8250的命令和数据,8250接收的数据和通信状态信息也通过数据总线缓冲器送到中央处理器。,选择和控制逻辑接收来自系统地址总线的译码信号,选择芯片内部寄存器,以及对8250各寄存器的读写操作进行控制。,接收控制电路来自传输线控制寄存器的命令,控制将接收的串行数据移入接收移位寄存器,满8位后送入缓冲寄存器。,发送控制电路来自传输线控制寄存器的命令,控制将发送保持寄存器中的数据送入发送移位寄存器,在发送同步控制电路控制下,将发送移位寄存器中的数据逐位移出,并送上通信线SOUT。,传输速度控制电路编程设定送到除数锁存器中的数值应是通信速率与8250输入时钟的比率,这个比率经波特率发生器产生输入时钟的分频信号,由BAUDOUT输出,调制解调控制电路8250仅完成TTL电平的并串或串并转换,为了增大传输距离,可在串行接口电路与外设之间增加信号转换电路。目前常用的转换电路有RS-232、RS-485和MODEM。,中断控制电路 8250支持四种类型的中断,由中断允许寄存器规定允许的中断类型。中央处理器可以通过8250中断识别寄存器来判断当前的中断类型。,2.8250的内部寄存器,(1) 数据发送保持寄存器和数据接收缓冲寄存器 数据发送保持寄存器用于暂存将要发送到通信线的1个字节数据,该字节经发送移位寄存器串行发出。 数据接收缓冲寄存器保存从接收移位寄存器移入的字节数据,该字节数据正由通信线进入串行接口。,(2)传输线控制寄存器,(3)传输线状态寄存器 提供串行数据传送和接收时的状态,供中央处理器判断。,(4) 除数锁存器 当传输线控制寄存器最高位为1时,中央处理器通过IO口访问除数锁存器的低8位和高8位。 除数锁存器的除数值为: 除数1843200 /(16波特率),(5)中断允许寄存器,8250芯片本身可以处理4种类型的中断,按优先次序排列为: 接收线路出错 接收数据就绪 发送保持寄存器已空 MODEM中断 中断允许寄存器的低4位分别对应上述4种中断,当对应位为1时,则允许对应中断信号输入。,(6)中断识别寄存器,(7) MODEM控制寄存器与MODEM状态寄存器,MODEM控制寄存器如图:,MODEM状态寄存器如图:,PC微型计算机串行口COM1的电路原理图,8.3.3 8250与微型计算机及RS-232接口信号的连接,与COM1的端口地址相对应的寄存器为:,8.3.3 8250与微型计算机及RS-232接口信号的连接,8250的ADS、DISTR、DOSTR信号都接地,DISTR接至系统控制信号IOR、DOSTR接至系统的控制信号IOW 8250的中断请求信号INTRPT接至中断控制器8259A的IRQ4。,8.3.3 8250与微型计算机及RS-232接口信号的连接,8250初始化,例如,若要求以9600波特率进行异步通信,每字符7个数据位,2个停止位,奇校验,允许所有中断,则初始化编程部分的程序段为:,MOV AL,80H ;使传输线控制寄存器最高位置,即DLAB=1 MOV DX,3FBH OUT DX,AL MOV AL,0CH ;置除数锁存器 MOV DX,3F8H ;低8位 OUT DX,AL MOV AL,0 MOV DX,3F9H ;高8位 OUT DX,AL,MOV AL,0EH ;设置数据格式 MOV DX,3FBH OUT DX,AL MOV AL,0FH ;允许所有中断 MOV DX,3F9H OUT DX,AL MOV AL,0BH ;OUT2、DTR、RTS信号有效 MOV DX,3FCH OUT DX,AL,两台PC机之间的通信连接,8.3.5 80X86微型计算机之间的通信,.发送程序 程序接收键盘输入的100个字符,并通过8250发送到通信线上。 stack segment stack stac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 19542-2025饲料中磺胺类药物的测定液相色谱-串联质谱法
- 2025年汽车销售顾问岗位素质测评试题及答案解析
- 2025年汽车维修技师职业技能水平考试试题及答案解析
- 2025年产品设计经理招聘面试指南与答案集
- 2025年宠物针灸师初级面试模拟题
- 2025年建筑装饰设计师职业能力考核试题及答案解析
- 2025年环境资源管理师资格认证考试试题及答案解析
- 2025年互联网运营经理职业能力水平考核试题及答案解析
- 2025年安全员C2证考试高频考点题含高频答案解析
- 2025年工厂安全教育测试题及答案
- 《Section B 1a-1e》获奖教案初中英语九年级全一册-九年级英语教案
- 中医儿科学 手足口病
- 建筑施工三检制度
- 湖北群艺积分制管理操作流程
- GB/T 4883-2008数据的统计处理和解释正态样本离群值的判断和处理
- GB/T 4213-2008气动调节阀
- GB/T 30230-2013运动水壶的安全要求
- GB/T 24267-2009建筑用阻燃密封胶
- GB/T 14842-2007铌及铌合金棒材
- 2021年安徽省初中学业水平考试语文试卷及答案
- 目标管理与执行力培训课件
评论
0/150
提交评论