资源描述
,定时,/,计数器,8253,并行接口,8255A,串行接口,8250/8251,A,本章内容,第,7,章 常用数字接口电路,7.1,接口电路概述,外设接口:,输入接口,输出接口,并行接口,串行接口,数字接口,模拟接口,7.,2 8253定时计数控制器,微机对外部事件进行定时控制或对外部事件发生的次数进行记录有两种方法,:,软件编程控制的方,式,采用软件硬件相结合的方式,可编程定时,/,计数电路,8253,具有多种工作方式,定时值和定时范围可用程序确定。,PC,机中的定时器主要用于系统日时钟计时,.,*8253,的引脚,8253,的引脚图,8253,的内部地址,A1,A0,选择对象,0,0,计数器,0,0,1,计数器,1,1,0,计数器,2,1,1,控制寄存器,一、,8253的内部结构及引脚,8253,具有,3,个独立的,16,位计数通道,用,24,脚,DIP,封装,其主要功能如下:,*1,片上有,3,个独立的,16,位计数器通道,最大计数范围为,065535,;,*,每个计数器都可以按照二进制或十进制计数;,*,每个计数器的计数速度可高达,2MH,Z,;,*,每个通道有,6,种工作方式,可通过程序设置来改变;,*,所有的输入和输出都与,TTL,兼容。,8253,内部可分为,6,个模块,如图所示。,8253,的内部结构,数据,总线,缓冲器,计数器,0,计数器,1,计数器,2,读,/,写,逻辑,控 制,字 寄,存 器,内 部 总 线,D,0,D,7,CLK0,GATE0,OUT0,CLK1,GATE1,OUT1,CLK2,GATE2,OUT2,WR,RD,A,0,A,1,CS,GND,V,CC,从系统总线接收输入信号,经过译码产生对,8253,各部分的控制。,*,计数通道,8253,有,3,个相互独立的同样的计数电路。计数器的结构如图所示。,*,数据总线缓冲器,数据总线缓冲器通过,8,条数据线,D,7,D,0,接收,CPU,向控制寄存器写入的控制字和向计数器写入的计数初值。,*,读,/,写控制逻辑,计数器内部结构,控制单元,初值寄存器,减,1,计数器,输出锁存器,内,部,总,线,CLK,GATE,OUT,控制单元,初值寄存器,减,1,计数器,输出锁存器,内,部,总,线,CLK,*8253,的方式控制字,方式控制字的格式如下:,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,计数器 读,/,写格式 工作方式 数制,0,二进制,1,二,十进制(,BCD,),000,方式,0,001,方式,1,10,方式,2,11,方式,3,100,方式,4,101,方式,5,00,计数器锁存命令,10,只读,/,写高,8,位,01,只读,/,写低,8,位,11,首先写低,8,位,然后写高,8,位,00,选择计数器,0,01,选择计数器,1,10,选择计数器,2,11,非法选择,计数启动方式,1,)软件启动,用指令写入计数值后过一个,CLK,后开始计数,当计数结束时输出一个信号。实际输出时间为,N+1,个,CLK,2,)硬件启动,由门控信号,GATE,由低电平变为高后,再经,CLK,信号的上升采样,之后在该,CLK,的下降沿开始计数。,二、,8253的工作方式,8253,有,6,种工作方式,通过对,8253,写入方式控制字来编程。,1.,方式,0,计数结束中断,该方式下,门控信号决定计数的停止或继续,装入初值决定计数过程重新开始。下图给出,a),方式,0,正常计数,b)方式0门控信号的影响,c),方式,0,写入新的初值对计数过程的影响三种情况的波形。,a.,方式,0,正常计数,CW=10,LSB=3,WR,CLK,GATE,OUT,3,2,2,2,1,0,FF,CW=10,LSB=3,WR,CLK,GATE,OUT,3,2,2,2,1,0,FF,b.,方式,0时GATE 信号的作用,c.,方式,0,时计数过程中改变计数值,2.,方式,1,可重触发的单稳态触发器,该方式是在门控的作用下开始计数,计数过程波形图如图所示。,a.,方式,1,正常计数,b.,方式,1时GATE 信号的作用,LSB=3,WR,CLK,3,2,1,3,2,1,CW=12,0,GATE,OUT,c.,方式,1,时计数过程中改变计数值,LSB=2,WR,CLK,GATE,OUT,4,2,1,0,FF,3,FE,CW=12,LSB=4,LSB=2,WR,CLK,GATE,OUT,4,2,1,0,FF,3,FE,CW=12,LSB=4,3.,方式,2,分频器,方式,2,用门控信号达到同步计数的目的,波形图如图所示。,a.,方式,2,正常计数,b.,方式,2,时,GATE,信号的作用,c.,方式,2,时计数过程中改变计数值,4.,方式,3,方波发生器,方式,3,的工作过程同方式,2,,只是输出的脉宽不同,波形如图所示。,a.,方式,3,计数值为,偶数,时的波形,b.,方式,3,计数值,为奇数时的波形,c.,方式,3 GATE信号的作用,d.,方式,3,计数过程中改变计数值,5.,方式,4,软件触发选通方式,用方式,4,工作时,,GATE,门控信号只是用来允许或不允许定时操作的,定时的执行过程由装入的初值决定,波形图如图所示。,a.,方式,4,正常计数,b.,方式,4 GATE 信号的作用,c.,方式,4,计数过程中改变计数值,6.,方式,5,硬件触发选通方式,方式,5,为硬件触发选通方式,完全由,GATE,端引入的触发信号控制定时和计数,波形图如图所示。,a.,方式,5,正常计数,OUT,LSB=3,WR,CLK,GATE,CW=1,A,3 2 1 0 FF 3,b.,方式,5时GATE 信号的作用,c.,方式,5,时计数过程中改变计数值,8253,初始化顺序,三、,8253,的初始化,由于,8253,的每个计数器都有独立的地址,控制字中又有,SC1,、,SC0,两位指定计数器,这就使得,8253,的编程初始化十分简便。,对计数器的编程可按任意顺序进行,并只对用到的计数器编程。当一个计数器长度不够时,可以将两个或三个计数器串联使用,即一个计数器的输出,OUT,信号作为一个计数器的,CLK,时钟输入。还可将多个,8253,串联起来使用。,通常在使用中要编程对计数器初始化。,先写入控制字,接着写入计数值。两个字节的计数值先写入低字节,后写入高字节。,其过程如图所示。,例:,某系统使用一片,8253,,要求完成如下功能:,1,、计数器,0,对外部事件计数,计满,100,次向,CPU,发中断请求。,2,、计数器,1,产生频为,1,KH,Z,的方波信号,设输入计数频率,CLK1,为,2.5,MH,Z,3,、计数器,2,作为标准时钟,每秒向,CPU,发一次中断请求,输入计数频率由,OUT1,提供。,(设,8253,的端口地址为,80,H83H,),分析:根据题意选择各计数器的工作方式,,控制字格式及计数值。按顺序写出初始化程序。,四、,定时器/计数器的应用举例,例:设,8253,端口地址为:通道,0,为,340H,,通道,1,为,341H,,通道,2,为,342H,,控制字寄存器为,343H,。电路图如图所示,要求,8253,的通道,2,和通道,1,组成级联的计数器,,CLK,2,接分频器,CD4040,的输出,(,将输入,8MHZ,标准时钟分频,分频系数由跳线决定,),,,CLK,1,由跳线接,8253,的,OUT,2,,通过设置通道,1,,通道,2,的初值,由,CPU,读取,OUT,1,的输出,产生秒定时,并由显示子程序完成时钟显示。试编写汇编程序,.,8255A,连接电路,(Y,0,=340H343H,Y,4,=350H353H),8255PA,5,8255PA,4,8255PA,6,GATE,2,GATE,0,GATE,1,D,0,D,7,D,0,D,7,CS,RD,WR,A,0,A,1,Y,0,I,OR,I,OW,A,0,A,1,OUT,0,OUT,1,OUT,2,CLK,1,CLK,0,CLK,2,2Y,1,2Y,2,2A,1,2A,2,1G,2G,Y,4,I,OR,D,0,D,2,8253,74LS244,O,11,O,9,O,7,O,5,O,3,4040,CLK,8MHZ,K,P,+5V,按程序要求编写流程如下:,开始,在,CRT,上显示提示信息,写,8255A,控制字,(81H),写,8253,通道,2,方式字,(B6H)即方式4,写该通道计数初值,写,8253,通道,1,方式字,(70H),即方式,0,,写该通道计数初值,调用显示子程序,S,1,S,4,按下?,8253,通道,1,计数减为,0,?,二位,60,进制计数单元加,1,退出,N,Y,N,流程图,程序设计如下:,DLYC,2,EQU 2000TCL,1,EQU 04H,;通道,1,计数初值,TCL,1,EQU 00H,;,TCL,2,EQU 80H,;通道,2,计数初值,TCH,2,EQU 00HDATA SEGMENTDISC DB 0BBH,0A0H,97H,0B5H,0ACH,3DH,3FH,0A1H,0BFH,0BDH;显示段码表,DISO DB Press any of the keys to quit!24HDDBB DB 4 DUP(0)COUNT DB 00HDATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART:MOV AL,3,;清屏幕,MOV AH,0 INT 10H,MOV AX,DATAMOV DS,AXMOV AH,2 ;设光标位置,MOV BH,0MOV DX,0614HINT 10HMOV DX,OFFSET DISO ;,显示“,Press”MOV AH,9INT 21H,MOV DX,347H ;8255,初始化,MOV AL,81H ;,A,口为输出,,B,口为输出,,DUT DX,AL,;PC,47,为输出,,PC,03,为输入,MOV DX,346H,;关四个7段码显示器,MOV AL,OFFHOUT DX,AL,MOV DX,343H ;8253,初始化,MOV AL,0B6H ;,通道,2OUT DX,ALMOV DX,342HMOV AL,TCL,2,;计数器2初值为0080HOUT DX,ALMOV AL,TCH,2,OUT DX,AL,AAAA:MOV DX,343H ;,通道,1MOV AL,70HOUT DX,ALMOV DX,341H ;,计数器,1,初值为,0004HMOV AL,TCL,1,OUT DX,ALMOV AL,TCH,1,OUT DX,ALMOV DX,344HMOV AL,OFFHOUT DX,AL,AAA:CALL DISP;调显示子程序MOV DX,350;是否退出IN AL,DXAN AL,0F0HCMP AL,0F0HJNE KPRIN AL,DX;通道1到0?AND AL,04H;即OUT=1?JZ AAAMOV CX,0004H;两位60进制计数,MOV SI.offset DDBBMOV AL,SIINC AL;,秒加,1CMP AL,0AH;,计到十?,JNE TMOMOV BYTE PTR SI,0INC SIMOV AL,SI,INC AL;十秒加1,CMP AL,06H;,计到,6?JNE TMOMOV Byte PTR SI,0INC SIMOV AL,SIINC AL,;分加1,CMP AL,0AH,;计到10?JNE TMOMOV BYTE PTR SI,0INC SIMOV AL,SIINC AL;十分加1,CMP AL,06H;,计到,6?JNE TMOMOV AL,0TMO:MOV SI,ALJMP AAAA,KPR:MOV AL,0;退出MOV DX,350HOUT DX,ALMOV DX,346HMOV AL,OFFHOUT DX,ALMOV AX,4C00HINT 21 HMainENDPDISP PROC NEAR;显示子程序 ,(,略,)DISP ENDP CODE ENDS END START,7.,3 并行接口和可编程并行接口芯片8255,A,并行接口传输数据通常以,8,位、,16,位或,32,位为传输单位,一次传送一个字长的数据。,并行接口电路,:,*,不可编程的并行接口电路,(,如,74LS244/254,三态缓冲器,74LS273/373,锁存器,),*,可编程接口电路,(,如,Intel8255A,),可编程接口电路通常应具有以下功能:,1.,两个或两个以上的具有锁存器或缓冲器的数据端口;,2.,每个数据端口都具有与,CPU,用应答方式交换信号所必须的控制和状态信息,也有与外设交换信息所必须的控制和状态信息;,3.,通常每个数据端口有能用中断方式与,CPU,交换信息所必须的电路;,4.,片选和控制电路;,5.,可用程序选择数据端口、选择端口的数据传送方向,选择与,CPU,交换信息的方法。,一、,8255A的内部结构和引脚信号,1.8255A,内部结构,8255A,可编程外围设备接口,(programmable peripheral interface,简写为,PPI),其内部结构如图所示。,8255,A内部结构框图,A组控制,数据总线缓冲器,读,/,写,控制逻辑,B组控制,RESET,A,0,A,1,A组,A口,8位,A组,A口,A组,C口高位,(4位),B组,C口低位,(4位),8位,B组,B口,PA,7,PA,0,PC,7,PC,4,PC,3,PC,0,PB,7,PB,0,D,7,D,0,8255A,包括四大部分:,数据总线缓冲器、读写控制逻辑、,A,组和,B,组控制电路、端口,A,、,B,、,C,。,(1),数据端口,A,、,B,、,C,端口,A,包含一个,8,位数据输,出,锁存器,/,缓冲器和一个,8,位数据输入锁存器,输入输出数据均受到锁存。,端口,B,和,C:,都包含一个,8,位数据输入缓冲器和一个,8,位的数据输出锁存器,/,缓冲器,输出数据能锁存,输入数据不锁存。,端口,C:,可分成两个,4,位端口,分别定义为输入或输出端口,还可定义为控制、状态端口,配合端口,A,和端口,B,工作。,(2)A组和,B组,A,组包括,A,口:,PA,0,PA,7,C,口的高,4,位:,PC,4,PC,7,B,组包括,B,口:,PB,0,PB,7,C,口的低,4,位:,PC,0,PC,3,A,组,,B,组的控制寄存器,接收来自数据总线的控制字,并根据控制字确定各端口的工作状态和工作方式。,(3),数据总线缓冲器,三态双向,8,位缓冲器,是,8255A,与,CPU,之间的数据接口。传送输入数据、输出数据、控制命令字。,(4),读,/,写控制逻辑,接收来自,CPU,地址总线信号和控制信号,并发出命令到两个控制组,(A,组和,B,组,),。,CS,:,片选信号,接,CPU,高位地址的译码输出;,RD,:,读信号,,RD,有效,,CPU,读,8255A,的数据或状态;,WR,:,写信号,,WR,有效,,CPU,向,8255A,写入的控制或数据信息。,2.8255A,的引脚,8255A,采用,40,线双列直插封装,引脚图如图所示。,8255A,引脚定义,4,3,2,1,40,3718,34,.,.,.,.,.,.,27,D,7,D,0,A,0,A,1,RESET,V,CC,GND,9865,3536,8255APPI,数据总线,控制线,电源线,通道,A,通道,B,通道,C,CPU,接口,外设接口,.,.,.,PA,7,PA,0,.,.,.,PB,7,PB,0,.,.,.,PC,7,PC,0,25141516 171312 11 10,*,PA,7,PA,0,:,A,端口数据信号引脚,*,PB,7,PB,0,:,B,端口数据信号引脚,*,PC,7,PC,0,:,C,端口数据信号引脚,*,D,7,D,0,:,8255A,的,8,位数据线,*,A,1,A,0,:端口选择信号,当,A,1,A,0,=00,时 选择端口,A,当,A,1,A,0,=01,时 选择端口,B,当,A,1,A,0,=10,时 选择端口,C,当,A,1,A,0,=11,时 选择控制端口,二、,8255A的控制字,8255A,共有,两个,控制字,:,即,工作方式控制字和对,C,口置位,/,复位控制字。,1.,工作方式控制字,控制字和各位的含义如图所示。,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,B组端口C(下半部)1=输入,0=输出端口B1=输入,0=输出方式选择0方式0,1=方式1,A组端口C(上半部)1=输入,0=输出端口A1=输入,0=输出方式选择00方式0,01=方式1,1,=,方式,2,方式设置标志,1=,有效,工作方式控制字,2.,端口,C,的置位,/,复位控制字,控制字的格式如图所示。,置位,/,复位控制字,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,位的置位,/,复位,1=,置位,,0=,复位,位 选 择,D3 D2 D1 通道,C位,按位置位,/,复位控制标志,0=,有效,0 0 0 位0,0 0 1 位1,0 1 0 位2,0 1 1 位3,1 0 0 位4,1 0 1 位5,1 1 0 位6,1 1 1 位7,不使用设置为,000,关于控制字要说明几点:,(1),设置方式控制字时,,A,口、,B,口作为,整体设置,,而,C,口要分成上、下两部分,分别设置,。三个端口的工作方式由,一个控制字规定,。,(2)C,口按位置位,/,复位控制字不是送到,C,口地址,,而是送到,控制寄存器,地址;且一个控制字只能使,C,口,一位置位或复位,。,(3),方式控制字和按位置位,/,复位控制字均写入同一个,控制寄存器,地址,二者通过最高位,D,7,来区别。,D7=1,为方式控制字,,D7=0,为按位置位,/,复位控制字。,例,:设,8255A,的地址为,04A0H04A3H,,按下述要求对,8255A,进行初始化。要求,A,口、,B,口均设置成方式,1,,均为输入,,PC,6,和,PC,1,为输出。,MOV DX,,,04A3H,;控制口地址,MOV AL,,,B6H,;工作方式控制字,OUT DX,,,AL,;控制字送到控制口,例,:设,8255A,的地址为,04A0H04A3H,,要求通过,8255A,芯片,C,口的,PC,2,位产生一个方波脉冲。,MOV DX,,,04A3H,;控制口地址,AA,:,MOV AL,,,05H,;对,PC,2,置位的控制字,OUT DX,AL CALL DELAY,;延时程序,MOV AL,,,04H,;对,PC,2,复位的控制字,OUT DX,,,AL JMP,AA,三、,8255A,的工作方式,1.,方式,0,基本输入,/,输出方式,方式,0,是一种基本输入输出工作方式,它的,24,条,I/O,线全部都用作传送数据,不设置应答信号线,常用于无条件传送,输出有锁存,输入只有缓冲能力而无锁存功能。,方式,0,的方式控制字:,1,0,0,D,4,D,3,0,D,1,D,0,*,任何一个端口都可由,CPU,用简单的,输入,或,输出指令,来进行,读写,*,8255A,可作为,查询方式,的接口电路,这时,A,口和,B,口分别作为,数据端口,*,C,口的高,4,位和低,4,位能分别作为,输入,或,输出,用来传送控制外设的,控制信息,和采集外设的,状态信息,。,2.,方式,1,选通式输入,/,输出方式,(1),方式,1,选通输入,方式,1,操作使端口,A,或端口,B,作为锁存输入设备工作。端口,C,也可按方式,1,操作使用,但不是对数据,而是对控制信号,或当端口,A,或端口,B,为选通输入端口时的握手信号。,下图示出,8255A,方式,1,选通输入时的内部结构和时序图。,方式,1(,端口,B),IBF,B,INTR,B,PC,0,PC,1,PB,70,INTE,B,RD,端口,B,输入,端口,B,方式,1,B组方式控制字,1,1 1 ,PC,2,方式,1,选通操作内部结构和时序图,t,ST,t,STB,t,SIT,t,RIB,t,RIT,t,PS,t,PH,STB,IBF,RD,来自外设的,输入数据,INTR,t,ST,t,STB,t,SIT,t,RIB,t,RIT,t,PS,t,PH,STB,来自外设的,输入数据,IBF,:输入缓冲器满是一个输出信号,表明输入缓冲器已装入信息。,STB,:选通输入将数据装入端口锁存器,该信息保持到由,IN,指令输入给微处理器。,INTR,:中断请求是一个输出信号,它请求一次中断。,INTR,引脚在,STB,输入回到逻辑,1,时变为逻辑,1,,在微处理器从端口输入数据时被清,0,。,INTE,:中断允许信号既不是输入也不是输出,它是通过端口,PC,4,(,端口,A),或,PC,2,(,端口,B),的位来编程的内部位。,PC7,和,PC6,:端口,C,的引脚,7,和,6,是通用,I/O,引脚。,(2),方式,1,选通输出,当端口,A,或端口,B,为方式,1,输出时,各指定,PC,的,3,条线作为,8255A,与外设及,CPU,之间应答信号。下图为方式,1,选通输出操作的内部结构和时序图。,t,AOB,t,WOB,t,WIT,t,AK,t,AIT,t,WB,输出,WR,OBF,ACK,INTR,t,AOB,t,WOB,t,WIT,t,AK,t,AIT,t,WB,输出,WR,OBF,ACK,INTR,8255A,方式,1,选通输出内部结构和时序图,INTR,A,PC,3,PC,6,PC,7,PA,70,方式,1,输出端口,A,PC,4,5,I/O,INTE,A,2,WR,方式,1,输出端口,B,INTR,B,PC,0,PC,2,PC,1,INTE,B,PB,70,WR,OBF,:输出缓冲器满是一个输出信号,一旦数据输出给端口,A,或,B,的锁存器,它就变为低电平,一旦外部设备返回,ACK,脉冲,被置为逻辑,1,。,ACK,:,ACK,是来自外部设备的一个响应信号,表明它已接收到来自,8255A,端口数据,并使,OBF,引脚回到逻辑,1,电平。,INTE,:它是允许或禁止,INTR,引脚的一个内部位。,INTEA,位被编程为,PC,6,,,INTEB,位被编程为,PC,2,。,PC5,和,PC4,:通用,I/O,引脚,它们具有置位,/,复位功能。,INTR,:,8255A,送,CPU,的中断请求信号。,INTR=1,的条件是:,OBF,、,ACK,和,INTE,都为高电平。,3),方式,2,双向选通输入,/,输出方式,方式,2,只允许,A,组采用,此时端口,A,变为双向,允许数据在同一组,8,条线上发送和接收。,下图示出方式,2,操作内部结构和时序图。,t,OB,t,WOB,外设数据线,WR,OBF,ACK,INTR,数据从,CPU,到,8255,A,t,PS,t,KD,t,AD,t,PH,t,ST,t,STB,t,RIB,STB,IBF,RD,t,OB,t,WOB,外设数据线,WR,OBF,ACK,INTR,数据从,CPU,到,8255,A,t,PS,t,KD,t,AD,t,PH,t,ST,t,STB,数据从外设,到,8255,A,t,RIB,STB,IBF,RD,数据从,8255,A,到外设,数据从,8255,A,到,CPU,8255A,方式,2,操作内部结构和时序图,PA,0,PA,7,方式,2,组态,INTE1,(,PC,6,),PC,3,PC,6,PC,7,INTR,A,PC,0,PC,2,PC,4,PC,5,INTE2,(,PC,4,),IBF,A,I/O,WR,RD,ACK,A,OBF,A,STB,A,PA,0,PA,7,方式,2,组态,INTE1,(,PC,6,),PC,3,PC,6,PC,7,INTR,A,PC,0,PC,2,PC,4,PC,5,INTE2,(,PC,4,),IBF,A,I/O,WR,RD,ACK,A,OBF,A,STB,A,INTR,:中断请求是一个输出信号,用于在输入和输出情况下中断微处理器。,OBF,:输出缓冲器满是一个输出信号,表明输出缓冲器包含给双向总线的数据。,ACK,:响应输入信号允许三态缓冲器,使数据可以出现在端口,A,。如果,ACK,为逻辑,1,,则端口,A,的输出缓冲器处于高阻抗状态。,IBF,:输入缓冲器满是一个输出信号,表明输入缓冲器已包含外部双向总线的数据。,STB,:选通输入将来自双向端口,A,总线上的外部数据装入端口,A,的输入锁存器。,INTE,:中断允许是允许,INTR,引脚的内部位,(INTE,1,和,INTE,2,),。,PC,2,、,PC,1,和,PC,0,:通用,I/O,引脚,可由置位,/,复位命令控制。,例,:通过双向端口,A,发送,AH,寄存器中的内容。,;通过,A,口双向总线传送,AH,的过程,BITTEQU 80H PortCEQU62H PortAEQU60H TransprocnearIN AL,PortC,;获得,OBFTEST AL,BITT,;测试,OBFJZ TAB,;如果,OBF=1MOV AL,AH,;取得数据,OUT Port A,AL,;发送数据,TAB:RET ENDP,4),端口,C,的状态字,(1),未被,A,口和,B,口征用的引脚:将从定义为输入的端口读到引脚的输入信息;将从定义为输出的端口读到输出锁存器的信息。,(2),被,A,口和,B,口征用做为联络线的引脚:将从,C,口读到反映,8255A,状态的状态字。,在读,C,口时,读到的数据有两种情况:,方式,1,输入:,I/O,I/O,IBF,A,INTE,A,INTR,A,INTE,B,INTR,B,IBF,B,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,A,组,B,组,方式,2,输出:,OBF,A,INTE,A,I/O,I/O,INTR,A,INTE,B,INTR,B,OBF,B,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,A,组,B,组,方式,2,:,OBF,A,INTE,1,IBF,A,INTR,A,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,A,组,B,组,INTE,2,端口,C,读出内容,例,:,设,8255A,的端口地址为,344H347H,。由,16,个按键组成,4,4,矩阵式键盘,编写程序读取按键,(,定义键值为,0F),将键值写入输出口,在数码管上显示,以观察输入的键位。,电路图如图所示。,8255A,与键盘和,LED,连接电路,8255A,PB,0,PB,1,PB,2,PB,3,PB,4,PB,5,PB,6,PB,7,PC,7,PC,6,PC,5,PC,4,PC,3,PC,2,PC,1,PC,0,LED,3,LED,2,LED,1,LED,0,+5V,D,0,D,7,D,0,D,7,RD,WR,A,0,A,1,RST,CS,IOR,IOW,A,0,A,1,Reset,Y,1,程序流程如下:,开始,在,CRT,上显示提示信息,写,8255A,控制字,80H,字型码送,B,口,延时且关指示灯,写,8255A,控制字,88H,有键按下,行扫描键盘,列扫描键盘,延时消抖等待释放,S,1,S,4,按下否,退 出,Y,N,N,Y,流程图,相应程序如下:,DATA SEGMENTdisc DB 0BBH,0A0H,097H,0B5H,0ACH,3DHDB 3FH,0A1H,0BFH,0BDH,0AFH,3EH,0B6HDB 1FH,0FH ;0f 显示段码表,DISO DB,Press any of the keys to quit!.24H;提示信息,DQQ DB 0DATA Ends,CODE SEGMENTMAIN PROC FARASSUME CS:CODE DS:DATA START:MOV AL,3,;清屏幕,MOV AH,0INT 10H,MOV AX,DATA,;显示提示信息,MOV DS,AXMOV AH,2,;光标定位,MOV BH,0MOV DX,0614HINT 10HMOV DX,OFFSET DISO,;显示:“,Press”,QWE:MOV DX,,,347H,;,8255A,控制寄存器初始化,MOV AL,,,80H,;,B,口、,C,口设为输出,OUT DX,,,AL,MOV DX,345H ;345H,为,8255A,的,B,口地址,MOV BL,,,DQQMOV BH,,,0MOV DI,,,BXMOV AL,,,DI,;取,0F,显示字形码,OUT DX,,,AL,;将显示字形码送,B,口,MOV DX,,,346H,;,8255A C,口地址,MOV AL,,,0E0HOUT DX,,,AL,;,MOV BX,,,DLYC1LPO,:,MOV CX,,,DLYC2,;延时,LP1,:,LOOP LP1DEC BXJNZ LPO,KS,:,MOV DX,,,350H,;指示灯显示,MOV AL,,,DQQ,;按下键的二进制值,OUT DX,,,ALMOV DX,,,347H,;,8255A,初始化,写控制字,88HMOV AL,,,88H;PC0PC3,为输出,,PC4PC7,为输入,OUT DX,,,AL;B,口输出,方式,0,,,A,口输出。,KSLP,:,MOV DX,,,346H,;读键盘,IN AL,,,DXAND AL,,,0F0HCMP AL,,,0F0HJNE KP,;有键按下,转处理判别,MOV DX,,,350H,;若键未按,查,S1S4,键是否退出,IN AL,,,DXAND AL,,,0F0HCMP AL,,,0F0HJNE KPR,;,S1S4,任一健按下,则转,KPR,退出,JMP KSLP,KP,:,MOV CX,,,0F000H,;扫描键盘,KP0,:,LOOP KP0,;消抖延时,MOV DX,,,346HIN AL,,,DXAND AL,,,0F0HCMP AL,,,0F0HJE KSLP,;消抖后无键按下,则转回,视作干扰,MOV CX,,,0004H,;扫描,4,行,MOV DX,,,346HMOV BX,,,0F700H,;,BH,扫描输出行码,先扫第,0,行,(PC3=0),;,BL,键值,KP1:MOV AL,BH;行扫描,OUT DX,ALIN AL,DXAND AL,0F0HCMP AL,0F0HJNE KP2,;是这一行的键按下,转出判断列ADD BL,04H;键值加4ROR BH,1 ;准备扫描下一行LOOP KP1JMP QWE ;4行扫完未找到,转显示,KP2:MOV CX,,,0004H,;扫描,4,列,KP3:ROL AL,,,1,;列扫描,TEST AL,,,01JZ KP4,;,AL=0,,即是此列,转出,INC BL,;键值加,1LOOP KP3,KP4:MOV DQQ,BL;键盘送显示缓存KS5:MOV DX,346H;等待键释放IN AL,DXAND AL,0F0HCMP AL,0F0HJNE KS5;仍按下,继续等待,MOV CX,,,0F000H,KP6:LOOP KP6,;消抖延时,MOV DX,,,346HIN AL,,,DXAND AL,,,0F0HCMP AL,,,0F0HJNE KS5JMP QWE,;键处理结束,KPR,:,MOV AL,,,0,;退出,MOV DX,,,0350H,;关所有的,LED,灯,OUT DX,,,ALMOV AX,,,4C00HINT 21HMain ENDPCODE ENDSEND START,7.4,串行接口和可编程串行接口芯片,8251A,一、通信,计算机与外部设备之间、计算机之间的信息交换。,通信的基本方式,并行通信,串行通信,异步传送,同步传送,在串行通信时,数据和联络信号使用同一条信号线来传送,收发双方应注意以下几点:,*,双方约定以何种速率进行数据的发送和接收,(,波特率,),*,约定采用何种数据格式,(,帧格式,),,如果包含控制信息,其定义是什么,二、串行通信基本概念,*,接收方如何得知一批数据的开始和结束,(,帧同步,),*,接收方如何从位流中正确地采集到位数据,(,位同步,),*,接收方如何判断收到数据的正确性,(,数据校验,),*,收发出错时如何处理,(,出错处理,),1.,异步通信,异步传送方式中,数据,以字符为单位进行传送,,每个字符传送时均需起始位和停止位。其通信协议是起止式异步通信协议。,异步通信采用的信息格式,1,0,0/1,0/1,0/1,0/1,0/1,0/1,0/1,0/1,1,0,0/1,0/1,0/1,0/1,0/1,奇偶校验,停止位,起始位,7,位数据,低位,高位,数据流向,奇偶校验,停止位,起始位,7,位数据,下降边指出下 一个字符的开始,第n个字符,第,(n,1)个字符,第,(n,+1)个字符,数据传输的字符格式如下:,字符发送之前,:,先发送一个起始位,低电平,宽度为,1,位,.,字符发送结束时,:,发一个停止位,高电平,宽度为,1,位,,1.5,位或,2,位,.,数据位,:,占,58,位,可在数据位内设,1,位奇偶校验位,,字符之间,:,可有空闲位,它们都是高电平,.,传送时,:,数据的低位在前,高位在后。,例,:若采用连续发送方式,数据位长度为,7,位,选择奇校验,停止位为,1,位,传送一个字符,E,的,ASCII,码。,字符,E,的,ASCII,码为,45H,,波形如下:,字符,E传送波形,b6 b5 b4 b3 b2 b1 b0,“,E”的ASCII码:,1 0 0 0 1 0 1,0 1 0 1 0 0 0 1 0 1,起始位,奇校检,停止位,2.,同步通信,同步通信,:,即位同步方式,利用编码机制把时钟信息和数据放在一起发送给接收端。,数据以数据块方式传送,仅在数据块开始处用同步字符来指示。,其同步传送的数据格式如下:,同步传送的数据格式,同步字符,数据,1,数据,2,数据,N,检验字符,CRC,1,检验字符,CRC,2,同步字符,1,帧,下,1,帧,数据场,同步字符,同步字符,数据,1,数据,N,检验字符,CRC,1,检验字符,CRC,2,同步字符,1,帧,数据,1,数据,N,检验字符,CRC,1,检验字符,CRC,2,(c)外同步,(a)单同步,(b)双同步,3.,传输制式,在串行通信中,根据数据传送的方向分为,:,单工传送、半双工传送和全双工传送。,单工传送,:数据只在一个方向上传送。,半双工传送,:在同一时刻只能在一个方向上传送,。,全双工传送,:在两个方向可同时传送,。,串行通信电路示意图,发送,接收,A站,B站,发送器,A站,B站,接收器,发送器,接收器,发送器,A站,B站,接收器,接收器,发送器,4.,波特率,每秒钟传送的二进制位数称为波特率。,例,:在某个异步串行通信系统中,数据传送率为,960,字符,/,秒,每个字符包括一个起始位,,8,个数据位和一个停止位,则波特率为,10,960=9600(,波特,),三、串行通信总线标准,一是计算机与外设之间要共同遵守的某种约定,这种约定称为物理接口标准。,(,包括电缆的机械特性、电气特性、信号功能及传送过程的定义,),二是按接口标准设置计算机与外设之间进行串行通信的接口电路。,在进行串行通信的线路连接时,通常要解决两个问题:,RS232C,标准是美国电子工业协会,EIA(Electronic Industries Association)与,Bell等公司一起开发的1969年公布的通信协议。,1.RS,232C,接口标准,字母,RS,表示,Recommanded,Standard(,推荐标准,),232,是识别代号,,C,是标准的版本号。,下图显示出,RS-232C,的标准管脚图。,RS-232C,引脚分配图,14,1,15,2,16,3,17,4,18,5,19,6,20,7,21,8,22,9,23,10,24,11,25,12,13,次信道发送数据,发送时钟,次信道接收数据,接收时钟,未用,次信道请求发送,数据终端就绪,信号质量检测,振铃指示,数据信号速率选择,发送时钟,未用,保护地,发送数据,接收数据,请求发送,清除发送,数据装置就绪,逻辑地,载波检测,留作测试用,未用,次信道载波检测,次信道消除发送,各信号线说明如下:,TXD,:发送数据线,输出。,RXD,:接收数据线,输入。,RTS,:请求发送信号,输出,,RTS=1,,表示终端要发送数据。,CTS,:清除发送信号,输入。当外设已准备好接收数据时,使,CTS=1,,通知终端可以开始发送数据。,DTR,:数据终端准备就绪信号,输出,高电平有效。,DTR=1,,表示终端准备好接收外设的数据。,DSR,:数据装置准备就绪信号,输入,高电平 有效,它表示外设准备好发送数据。,DCD,:接收信号检出,输出,高电平有效。,RI,:振铃指示,输入,高电平有效。,RI=1,,表明,Modem,收到交换台送来的振铃信号,用它来通知终端。,RS422A,标准是一种以平衡方式传输的标准。所谓平衡,是指双端发送和双端接收。发送端和接收端分别采用平衡发送器和差动接收器。,2.RS,422A,标准,如图所示:,MC3487,MC3486,平衡发送器,差动接收器,A,B,A,B,RS-422A,标准传输线连接,当,AA,线电平比,BB,线电平低,2V,时,表示逻辑“,1”,;,当,AA,线电平比,BB,线电平高,+2V,时,表示逻辑“,0”,。,由于,RS-422A,标准采用了双线传输,大大增强了抗共模干扰的能力,因此最大数据传输率可达,10MB/,秒,(,传送距离为,15m,),。若传输速率降到,90KB/,秒,则最大距离可达,1200m,。此标准只允许有一个发送器,但可有多个接收器。,3.RS,485,标准,*,RS-485,的共线电路结构在一对平衡传输的两端都配置终端电阻,*,发送器、接收器、组合收发器可以挂在平衡传输线的任何位置,实现在数据传输中多个驱动器和接收器共用同一传输线的多点应用。,*,在,100,kb/,秒的传输速率时,可传送,1.2km,,最大传输速率为,10MB/,秒。,RS485,是一种平衡传输方式的串行接口标准。,*,RS485,允许有多个发送器和多个接收器。,三、串行接口芯片,8251A,Intel 8251A是一种通用的同步/异步接收/发送器芯片。其功能为:,*,进行串一并,并一串转换,*,设置通讯的协议,包括字符格式及波特率,*,检测通讯错误,设置出错标志,1.8251A,内部结构,8251A,内部结构图,读,/,写,控制,逻辑,发送器,(,P,S,),发送,(控制),调制,解调,控制,接收器,(,S,P,),接收,(控制),RESET,CLK,C,/D,RD,WR,CS,DTR,DSR,RTS,CTS,状态,缓冲器,发送数据,/,命令,缓冲器,接收数据,缓冲器,外部数据总线,T,X,D,T,X,RDY,T,X,E,T,X,C,R,X,RDY,SYNDET,R,X,C,R,X,D,读,/,写,控制,逻辑,发送器,(,P,S,),发送,(控制),调制,解调,控制,接收器,(,S,P,),接收,(控制),RESET,CLK,C,/D,RD,WR,CS,DTR,DSR,RTS,CTS,状态,缓冲器,发送数据,/,命令,缓冲器,接收数据,缓冲器,外部数据总线,T,X,D,T,X,RDY,T,X,E,T,X,C,R,X,RDY,SYNDET,R,X,C,R,X,D,*,I/O,缓冲器,:暂存接收、发送数据、,CPU,发来的命令及,8251A,的工作状态。,*,读,/,写控制逻辑,:接收,CPU,控制总线的控制信号,控制数据的传送方向。,*,接收器,:从接收数据线引脚,R,XD,接收串行数据,按指定方式把它变为并行数据。,*,发送器,:接收,CPU,的并行数据,加上成帧信号,变换成串行数据,从发送数据端引脚,T,XD,发送出去。,*,调制解调控制器,:提供控制信号,实现与,Modem,的连接、,8251A,的工作有异步方式和同步方式。,8251,A,D,1,D,0,V,CC,R,X,C,DTR,RTS,DSR,RESET,CLK,T,X,D,T,X,EMPTY,CTS,SYNDET/BD,T,X,RDY,D,2,D,3,R,X,D,GND,D,4,D,5,D,6,D,7,T,X,D,WR,CS,C/D,RD,R,X,RDY,8251,A,D,1,D,0,V,CC,R,X,C,DTR,RTS,DSR,RESET,CLK,T,X,D,T,X,EMPTY,CTS,SYNDET/BD,T,X,RDY,D,2,D,3,R,X,D,GND,D,4,D,5,D,6,D,7,T,X,D,WR,CS,C/D,RD,R,X,RDY,2.,8251A的引脚,8251A,共有,28,个引脚,采用双列直插式封装,如图所示。,8251A,的引脚图,各引脚的功能如下:,D,0,D,7,:,8,条数据线,Reset,:芯片复位信号,TxD,:数据发送端,输出串行数据并送往外部设备,TXRDY,:发送器准备好信号,TXEmpty,:发送器空闲信号,RD,、,WR,:读、写控制信号,CS,:片选信号,TXC,:发送时钟信号,外部输入。,RXD,:,数据接收端,接收由外设输入的串行数据。,RXRDY,:接收器准备好信号。,SYNDET/BRKDET,:双功能检测信号,.,对于同步方式,,SYNDET,是同步检测信号,对于异步方式,,BRKDET,为间断检出信号。,RXC,:接收时钟信号,输入。,DTR,:数据终端准备好信号,输出,表示接收方准备好接收数据,通知发送方。,C/D,:控制,/,数据信号,,C/D=1,,传送的是命令、控制、状态等控制字;,C/D=0,,传送的是数据。,DSR,:数据装置准备好信号,输入,它是对,DTR,的回答信号,表示发送方准备好发送。,RTS,:发送方请求发送信号,输出。,CTS,:清除发送信号,输入,它是对,RTS,的回答信号,表示接收方作好接收数据的准备。,3.8251,A的控制字,8251A,有三种控制字:,工作方式控制字、操作命令控制字、状态控制字。,(1),工作方式控制字,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,停止位,奇偶校验,字符长度,波特率系数,(,同步,),*0=,内同步,*1=,外同步,0*=,双同步,1*=,单同步,(,异步,),00=,不用,01=1,位,10=1.5,位,11=2,位,*0=,无校验,01=,奇校验,11=,偶校验,00=5,位,01=6,位,10=7,倍,11=8,位,(,异步,),00=,不用,01=,1,10=,16,11=,64,(,同步,),00=,同步,-,-,-,(2),操作命令控制字,R,X,E,SBRK,ER,RTS,T,X,EN,DTR,IR,EH,R,X,E,SBRK,ER,RTS,T,X,EN,DTR,IR,EH,允许发送,“,1,”,允许,“,0,”,不允许,数据终端就绪:,“,1,”,使,DTR,输出为低,允许接收,“,1,”,允许,“,0,”,不允许,送,间隔字符,“,1,”,使,TXD,为低,“,0,”,正常工作,出错标志复位:,“,1,”,使,PE,、,OE,、,TE,标志复位,请求发送:,“,1,”,使,RTS,输出变低,内部复位:,“,1,”,使芯片回到方式指令状态,进入搜索态:,“,1,”,使开始搜索同步字符,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,(3),状态控制字,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,DSR,数据装置准备好,SYNDET,同步,检出,FE,格式错,PE,溢出错,奇偶错,OE,T,X,E,发送,器空,R,X,RDY,接收准备好,T,X,RDY,发送准备好,(4)8251A的初始化,在传送数据前要对,8251A,进行初始化,,以确定发送方与接收方的通信格式以及通信的时序,。,由于三个控制字没有特征位,且工作方式控制字和操作命令控制字放入同一个端口,因而要求,按一定顺序写入控制字,。,正确,写,控制字的顺序如图所示,。,N,Y,复位,输出通信方式,异步,输出第一个,单同步,输出第二个,输出操作命令,有复位?,串行传送,输出操作命令字,数据传送,Y,Y,N,N,N,8251A,初始化流程,例,:,8251A,采用同步传送方式,有,2,个同步字符,内同步,偶校验,有,7,位数据位且同步字符为,16H,,试编写初始化程序。,假设,8251A,数据口地址为,04A0H,,控制口地址为,04A2H,。,MOV DX,,,04A2H,;控制口地址,MOV AL,,,38H,;工作方式控制字,OUT DX,,,ALMOV AL,,,16H,;同步字符,OUT DX,ALOUT DX,,,AL,;输出两个,同,步字符,MOV AL,,,97H,;操作命令控制字,OUT DX,AL,(5),串行接口,8251A,编程实例,例,:用两片,8251A,接口芯片实现两个,8086CPU,之间的串行通信。,假定,1,#,8251A,地址为,04A0H,,,04A2H,;,2,#,8251A,地址为,04A4H,,,04A6H,。,1,#,CPU,发送,256,个数据给,2,#,CPU,,通信协议采用异步传送方式,,8,位数据无校验,,2,位停止位,波特率为,64,。,;,1#CPU,发送程序,DATA SEGMENTFA DB,,,,,DATA ENDSSTACK SEGMENT PARA STACK STACKBUFF DB 50 DUPC(?)STACK ENDSCODE SEGMENTASSUME CS,:,Code,DS:DATA,SS:STACKSTART:MOV AX,DATA ;,取数据段寄存器地址,MOV DS,,,AXMOV AX,,,STACK,;取堆栈段寄存器地址,MOV SS,,,AXMOV DX,,,04A2HMOV BL,,,03H,;复位,8251A,,输入,3,个,0,ST1,:,MOV AL,,,00HOUT DX,,,ALNOPDEC BLJNZ ST1MOV AL,,,40H,;发复位命令,OUT DX,,,ALMOV AL,,,0CFH,;工作方式控制字,OUT DX,,,ALMOV AL,,,31H,;操作命令字,OUT DX,,,ALLEA SI,,,FA,;装入有效地址,MOV CX,,,00FFH,;传送,256,个数据寄存器,MOV DX,,,04A2H,WAIT1,:,IN AL,,,DX,;读取状态字,AND AL,,,05H,;检测,TXEMPTY,和,TXRDY,位,JZ WAIT1,;发送器空,等待,MOV DX,,,04A0H,;发送,256,个数据,MOV AL,,,SIOUT DX,,,ALINC SIDEC CXJNZ WAIT1CODE ENDSEND START,;,2#CPU,接收程序,DATA SEGMENTSHOU DB 64H DUPC(?)DATA ENDSSTACK SEGMENT PARA STACK STACKBUFF DB 50 DUPC(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA;,取数据段寄存器地址,MOV DS,,,AXMOV AX,,,STACK,;取堆栈段寄存器地址,MOV SS,,,AXMOV DX,,,04A6HMOV BL,,,03H,AA3,:,MOV AL,,,00H,;复位,8251A,,先输入,3,个,0OUT DX,,,ALNOPDEC BLJNZ AA3MOV AL,,,40H,;发复位命令,OUT DX,,,ALMOV AL,,,0CFH,;工作方式命令字,OUT DX,,,ALMOV AL,,,16H,;,ER,,,RXE,,,DTROUT DX,,,A
展开阅读全文