1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第七章,可编程接口芯片,可编程接口概术,可编程并行输入输出接口芯片,8255,A,可编程定时计数器接口芯片,8253,可编程接口概术,一个简单的具有输入功能和输出功能的可编程接口,电路如下图,它包括一个输入接口,其组成主要是八位的三态门;一个输出接口,其组成主要是八位的锁存器;另外还有八位的多路转换开关及控制这个开关的寄存器,FF。,控制信息,方式控制字,命令寄存器,数据端口,控制端口,用户对寄存器,FF,写入的内容称为命令字或,方式控制字,,而寄存器,FF,称为,命令寄存器,,相应的端口称为,命令端口或控制端
2、口,,对可编程芯片,初始化,过程实际上就是对芯片的控制端口写入各种命令字的操作过程。,目前常用的可编程芯片有如下几种:,8255,A,并行,I/O,接口,8253,计数器,/,定时器,8251,串行,I/O,8259A,中断控制器,7.1,可编程并行输入输出接口芯片,8255,A,一、功能,8255,A,是一种通用的可编程并行,I,O,接口芯片,广泛用于几乎所有系列的微型机系统中,如,8086,、,MCS51,、,Z80CPU,系统等。,8255,A,具有,3,个带锁存或缓冲的数据端口,可与外设并行进行数据交换。用户可用程序来选择多种操作方式,通用性强。使用灵活,可为,CPU,与外设之间提供并
3、行输入输出通道。,二、,8255,A,的内部结构,A,口,B,口,C,口,二、,8255,A,的内部结构,并行输入输出端口,A,组和,B,组控制,数据总线缓冲器,读写控制电路,三、,8255,A,的管脚分配,1,、与外设连接的管脚,我们已经知道,8255,A,有三个数据端口,每个端口是,8,位的,由此可推算与外设相连接的管脚共有,24,位。其中,A,口有,PA,7,PA,0,八个,I/O,引脚,,B,口有,PB,7,PB,0,八个,I/O,引脚,,C,口有,PC,7,PC,0,八个,I/O,引脚。特别地对于,PC,7,PC,0,,,其中可有若干根复用线可用于“联络”信号或状态信号,其具体定义与
4、端口的工作方式有关。,PA0PA7,PB0PB7,PC0PC7,2,、与,CPU,连接的管脚,包括数据线,D,7,D,0,,,读写控制线和,复位线,RESET,,以及和,CPU,地址线相连接的片选信号、端口地址控制线,A,0,和,A,1,。,D0D7,A0,A1,/CS,/WR,/RD,RESET,3,、电源线和地线,8255,A,的电源引脚为,V,CC,和,GND,。,V,CC,为电源线,一般取,5,V,。,GND,为电源地线。,四、,8255与8086,CPU,的接口,连接方法,同,RAM,相似,取,M/IO=0,举例,设计,8位,I/O,接口,使,8255,地址为,0300,H,举例,设
5、计,16位,I/O,接口,使,8255,地址为,0300,H,五、,8255,A,的工作方式及编程,1、,8255,A,的工作方式,8255,A,有三种工作方式,它们是:,方式,0,基本输入输出方式;,方式,1,选通输入输出方式;,方式,2,一双向传送方式。,2、,8255,A,编程,所谓,8255,A,编程,就是用户在使用,8255,前,用户可用软件来定义端口的工作方式,选择所需要的功能。,8255,A,复位时,,A、B、C,三端口工作在方式,0,的输入状态。,1,方式控制字,这是一个八位的控制字,代表的信息非常丰富。上面提到,8255,A,内部的,3,个端口分为,A,、,B,两组,因此方式
6、控制字也就相应地分成两个部分,分别控制,A,组和,B,组,其格式如下,:,1,D,6,D,5,D,4,D,3,D,2,D,1,D,0,方式选择控,制字标识位,A,组方式选择,00,方式,0,01,方式,1,1,x,方式,2,端口,A,1,输入,0,输出,PC,3,PC,0,:1,输入,(方式,0,时),0,输出,端口,B:1,输入,0,输出,B,组方式选择:,0,方式,0,1,方式,1,PC,7,PC,4,:1,输入,(方式,0,时),0,输出,2,C,口置,“,1,”,清,“,0,”,控制字,置“,1,”,又称为置位操作,而清“,0,”,称为复位操作。,0,D,6,D,5,D,4,D,3,D
7、,2,D,1,D,0,x,x,x,无关,1:置1,0:置0,0,0,0,0,1,1,1,1,端口,C,按位置,1/置0,控制字标识位,位选择,PC,0,PC,1,PC,2,PC,3,PC,4,PC,5,PC,6,PC,7,0,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,3,读入状态字,当,8255,A,由程序设定在方式,1,或方式,2,工作时,,C,口就根据不同的情况,产生或接收“联络”信号。如果这时我们对,C,口进行读操作,则读出的内容就包含两部分内容,一部分是那些作为,I/O,线上的内容,另一部分是与“联络”状态有关的内容。,方式,1,的输入状态字,六、,8255,A,的,
8、三种工作方式,1、,8255,A,工作在方式,0,方式,0,也叫,基本输入输出方式,。,在这种方式下,端口,A,和端口,B,可以通过,方式选择控制字,规定为输入口或者输出口,;,端口,C,分为高,4位(,PC7PC4),和低,4位(,PC3PC0),两个,4,位端口,这两个,4,位端口也可由方式选择控制字分别规定为输入口或输出口。,这四个并行口共可构成,16,种不同的使用组态。,利用,8255,A,的方式,0,进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向,LED,显示器的输出,从二进制开关装置的输入等。,8255,工作过程,1、8255,编程(初
9、始化),2,、程序对端口的访问,例:,8255,A,的,A,口和,B,口工作在方式,0,,A,口为输入端口,接有四个开关。,B,口为输出端,接有一个七段发光二极管,连接电路如图所示。试编一程序要求七段发光二班管显示开关所拨通的数字。,电路,LED,数码管,段码表,地址,A,口:8020,H,B,口:8022,H,C,口:8024,H,控制口,:8026,H.,方式控制字,10011001,B=99H,a_port,equ,8000h,b_port,equ,8002h,ctrl_port,equ,8006h,mov,al,99h;,设置,8255,方式字,mov dx,ctrl_port,out
10、,dx,al,mov,dx,a_port,in al,dx,;,取,键盘信息,and al,0fh;,屏蔽高,4,位,mov,bx,offset tab1;,取段码表首地址,xlat,;,查表得段码,mov,dx,b_port,;,输出显示,out,dx,al,A,口的选通信号,当其有效时,外设把数据打入,A,口的输入缓冲器,A,口的输入缓冲器“满”信号,当其有效时表示,A,口的输入缓冲器已暂存一个有效数据,。,A,口的中断请求信号。当其有效时,,8255,A,的,A,口向,CPU,申请中断,要求,CPU,从,A,口取数,中断允许信号,。,2、,8255,A,工作在方式,1,输入,(以,A,口
11、为例),C,口特点,1、,C,35,作为,A,口的联络线,,,C,4,/STB;,C,4,IBF;,C,5,INTR,2、C,67,可,工作在基本的,I/O,3、C,02,由,B,组决定,8255,A,工作在方式,1,(输入),时序图,1,2,3,4,1、/,STB,有效,外设数据,A,口锁存器,2、,IBF,有效,告诉外设数据未被,CPU,取走,3、,INTA,有效,申请中断(告诉,CPU A,口有新数据),4、,CPU,从,A,口取数,清除,IBF,和,INTA,,使之无效,8255,A,工作在方式,1,(输入),当,A,口已接受外设数据后,有两种方式通知,CPU,取数:其一用条件查询方式
12、,通过查询缓冲器是否“满”,即,IBFA,是否为高电平来取数。其二用中断方式。,在条件传送中,一般要有所谓的“握手”信号来协调数据的传送。“握手”信号至少要有两位信号线,其中一位是由接口电路发给外设,功能是向外设提供接口电路的信息。另一位是由外设发给接口,功能是向接口提供外设的信息。显然在,8255,A,的选通输入方式中,STBA,和,IBFA,是一对“握手”信号。,例:,8255,A,的,A,口和,B,口分别工作在方式,1,和方式,0,,A,口为输入端口,接有,8,个开,关。,B,口为输出端,接有,8,个发光二极管,连接电路如图所示。现要求用方式,1,把改变后的键信息输入到,CPU,并通过,
13、B,口显示。,例题电路图,这个系统的工作过程如下:,1,、用户通过改变,K,0,K,7,,,产生新的键信息;,2,、按下开关,K,,产生选通信号,数据进入,A,口的缓冲器,此步骤实际上告诉,CPU,8255,的,A,口来了一个新数据;,例题电路图,3、,IBFA,有效使,LED,点亮。,这里含有两个信息,,一个是,8255,A,通知,CPU,其,A,口来了一个新数据,另一个是告 诉用户,CPU,尚未取走这个这个数据,用户不得再送其 他数据;,4、,CPU,取走这个数据,,LED,熄灭;,5,、转步骤,1,。,这个系统的工作过程如下:,1,、用户通过改变,K,0,K,7,,,产生新的键信息;,2
14、,、按下开关,K,,产生选通信号,数据进入,A,口的缓冲器,此步骤实际上告诉,CPU,8255,的,A,口来了一个新数据;,3、,IBFA,有效使,LED,点亮。,这里含有两个信息,,一个是,8255,A,通知,CPU,其,A,口来了一个新数据,另一个是告 诉用户,CPU,尚未取走这个这个数据,用户不得再送其 他数据;,4、,CPU,取走这个数据,,LED,熄灭;,5,、转步骤,1,。,设8255的,I/O,地址分布为,88,H8EH,,相应的程序段如下:,mov,al,10111001b;,设置,A,口为方式,1,的输入,,loop1:in al,8ch;,取,C,口的状态线,test al
15、,00100000b;,测试,IBFA,信息,jz,loop1;,等待用户设定新的键值,in al,80h;,取数。,LED,灯灭(相对于步骤,4,),out 82h,al;,更新,B,口的显示,jmp,loop1;,重复,3、,8255,A,工作在方式,1,输出,(以,A,口为例),外设回答信号。由外设发出。当其有效时,表示外设已接收数据。,A,口的输出缓冲器“满”信号,当其有效时表示,A,口的输出缓冲器已暂存一个有效数据。,A,口的中断请求信号。当其有效时,,8255,A,的,A,口向,CPU,申请中断,要求,CPU,送数给,A,口,中断允许信号。,C,口特点,1、,C,3,C,6,C,7
16、,作为,A,口的联络线,,C,3,/INTR;,C,7,/ACK;,C,5,/OBF,2、C,45,可工作在基本的,I/O,3、C,02,由,B,组决定,8255,A,工作在方式,1,(输出)时序图,1,2,3,4,1、,CPU,对,A,口写数据,,/,OBF,有效,表示,A,口锁存器中有新数据;,2,、外设取走新数据,向,8255发/,ACK,信号,告诉,8255,A,口数据取走;,3、,A,口的/,OBF,无效,表示,A,口数据锁存器为空,4、,INTA,有效,发中断信号给,CPU,,请求新数据,1,当,A,口已接受外设数据后,有两种方式通知,CPU,取数:其一用条件查询方式,通过查询缓冲
17、器是否“满”,即,IBFA,是否为高电平来取数。其二用中断方式。,在这种方式下,,OBFA,和,ACKA,是一对“握手”信号。,OBFA,是8255,A,产生,当其有效时,告诉外设,A,口已有一个新数据。,ACKA,是外设产生,当其有效时,通知,A,口外设已把数据取走。,例:,8255,A,的,A,口工作在方式,1,的输出,接有,8,个发光二极管,现要求把内存中的,10,个数,通过,A,口发送给发光二极管以二进制的形式供用户抄录。,例题电路图,这个系统的工作过程如下:,CPU,把内存中的一个数据写入,A,口;,LED,灯亮,告诉用户,LED,显示的是新数据;,用户抄录数据;,用户按下开关,K,
18、,发,ACK,信号,告诉,CPU,数据已取走;,转第一步。,这个系统的工作过程如下:,1,、,CPU,把内存中的一个数据写入,A,口;,2,、,LED,灯亮,告诉用户,LED,显示的是新数据;,3,、,用户抄录数据;,4,、,用户按下开关,K,,发,ACK,信号,告诉,CPU,数 据已取走;,5,、,转第一步。,mov,cx,10;,送10,个数,mov,bx,offset xx;,数组指针送,bx,loop1:,mov,al,bx,;,取数,out 88h,al;,送数到,A,口,loop2:in al,8ch;,取,C,口状态线,anl,al,80h;,测试,IBOA,jnz,loop2,
19、;,用户尚未抄录数据,检测,;,等待,;此时;,LED,灯亮(对应步骤,2,),call delay,;,用户已抄录数据,,LED,灯灭(对;应步 骤,4,),inc,bx,;,准备送下一个数,loop loop1;,循环,10,次,4、,8255,A,工作在方式,2,双向,外设回答信号。由外设发出。当其有效时,表示外设已接收数据。,A,口的输出缓冲器“满”信号,当其有效时表示,A,口的输出缓冲器已暂存一个有效数据。,A,口的中断请求信号。当其有效时,,8255,A,的,A,口向,CPU,申请中断,要求,CPU,访问,A,口,中断允许信号。,中断允许信号。,A,口的输入缓冲器“满”信号,当其有
20、效时表示,A,口的输入缓冲器已暂存一个有效数据,A,口的选通信号,当其有效时,外设把数据打入,A,口的输入缓冲器,如果设定某个,8255,A,的,A,口和,B,口分别工作在方式,2,和方式,1,下,则这个,8255,A,的,C,口的,I/O,功能将不在存在。当然如果,B,口是工作在方式,0,下,则,C,口还有,3,根线可作,I/O,线用。,七、,8255,应用举例,1,、与打印机接口,例:在某一,8086,系统中接有一个打印机,,8255,A,作为输出接口。工作在方式,0,,试编一程序将缓冲区,BUFF,内的,400,H,个字节的,ACK,码送打印机打印。,总线式接口的缺点,8255,接口的优
21、点,打印机具体工作过程如下:,1,、数据线,D,7,D,0,出现有效数据;,2,、,STB,有效,通知打印机,接口给打印机一个数据,数据从数据线进入打印机;,3,、,BUSY,有效,告诉接口,打印机正在打印数据。打印完毕,,BUSY,变为无效,表示打印结束。,1,2,3,;,打印主程序,mov,al,10001010B;,方式控制字,out ctrl_port,al,mov,al,00000001B;,置位,/,复位控制字,out ctrl_port,al,mov,bx,offset buff;,打印,400个,ASCII,码,mov,cx,400,again:,mov,dl,bx,call
22、print_data,inc,bx,loop again,print_data proc ;,打印子程序,入口在,dl,中,print1:in al,c_port;,无条件读,C,口数据,test al,00010000b;,测试,busy,线,jnz,print1;busy,有效,循环测试,mov,al,dl,out a_port,al;,打印数据进入,A,口,mov,al,00000000b;,发选通信号,out ctrl_port,al,mov,al,00000001b,out ctrl_port,al,ret;,返回主程序,print_,datA endp,2,、,人机交互接口,动态显
23、示,例:常用的显示称为动态显示,它采用扫描显示技术,可以使硬件开销降低很多。对于一个,8,位数据显示,它就需要两个输出端口就可以了。其电路如图所示。在两个输出端口中,一个称为段信号通道,它用来输出要显示数据的段码;另一个称为位信号通道,用来决定当前要显示数据的位置。,动态显示电路图,显示系统的具体工作步骤如下:,a、,设要显示的初始位码,i0;b、,送第,i,位的段信号;,c、,送第,i,位的位信号;,d、,延时;,e、,i1if、,如果,i,小于,8,,转,bg、,8,位数据显示结束。,程序如下:,a_port,equ,80h;,定义,8255,A,的四个端口,b_port,equ,82h,
24、c_port,equ,84h,ctrl_port,equ,86h,datasegment;,定义数据段,tab1db 3FH,06H,5BH,4FH,;,定义段码表,dispbuff,db 2,0,0,8,1,2,0,4;,定义显示缓冲区,dataends,;,显示子程序,数据在,dispbuff,中,displayproc.;,保护现场,mov,bx,offset tab1,mov,si,offset,dispbuff,;,步骤,a,mov,cx,8,mov,ah,80h,disp1:,mov,al,si,;,步骤,b,xlat,out a_port,al,mov,al,ah;,步骤,c,o
25、ut b_port,alcall delay5ms;,步骤,d,,延时,5,ms,shr,ah,1;,步骤,e,inc,si,loop disp1,;,恢复现场,ret,display,endp,3,、,人机交互接口,键盘扫描,例:方案一。矩阵式键盘电路,其特点是由按键组成一个矩阵,矩阵的行线和列线分别作为两个传输方向相反的,I/O,接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线,。,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,程序流程如下:,a、,设定行为输出,列为输入;,b、,行输出为,0,,输入列信号;,c、,检查列信号是否全为,1,,,若是,无键按下
26、,转,b;,如果不全为,1,,表明有键按下,执行下步;,d、,延时,10,ms,,消除抖动。,0,0,0,0,1,1,1,1,MOV AL,10011010 ;A,OUT CTRL_PORT,AL,MOV AL,0 ;B,OUT C_PORT,AL,KEY1:,IN AL,C_PORT,AND AL,0F0H ;C,CMP AL,0F0H,JZ,KEY1,CALL DELAY10MS ;D,程序流程如下:,e、,取,i0(,用寄存器,dh),f、,置,i,行为,0,,其他行为,1,(用寄存器,ah);,g、,输入列信号;,h、,逐列检测,找出为,0,的列信号(用寄存器,dl);,未找到:,ii
27、1;,转,f;,若找到:执行下步;,i、,计算键号,key_num,0,1,1,1,1,1,1,1,程序流程如下:,e、,取,i0(,用寄存器,dh),f、,置,i,行为,0,,其他行为,1,(用寄存器,ah);,g、,输入列信号;,h、,逐列检测,找出为,0,的列信号(用寄存器,dl);,未找到:,ii1;,转,f;,若找到:执行下步;,i、,计算键号,key_num,1,0,1,1,1,1,0,1,程序流程如下:,e、,取,i0(,用寄存器,dh),f、,置,i,行为,0,,其他行为,1,(用寄存器,ah);,g、,输入列信号;,h、,逐列检测,找出为,0,的列信号(用寄存器,dl);,未
28、找到:,ii1;,转,f;,若找到:执行下步;,i、,计算键号,key_num,MOV DH,0;E,MOV AH,0FEH,KEY3:,ROL AH,1,MOV AL,AH;F,OUT C_PORT,AL,IN AL,C_PORT;G,MOV CL,4;H,逐列检测,SHR AL,CL,MOV CX,4,KEY2:,SHR AL,1,JNC,KEY4,LOOP,KEY2,INC DH;,行+1,CMP DH,4,JNZ,KEY3,JMP ERR,KEY4:,ADD DH,DH;I,ADD DH,DH,ADD DL,DH;,行*4列,例:方案二,翻转法。,图所示为矩阵式键盘电路,其特点是由按键
29、组成一个矩阵,矩阵的行线和列线,在不同时刻,分别作为两个传输方向相反的,I/O,接口信号线,比如行线作为输入接口信号线,列线作为输出接口信号线,或反之,。,键盘扫描电路图,在翻转法中,行列线交换输入、输出,两步就可获取键位置信息。可见这种方法要比扫描法效率高。,翻转法程序流程如下:,a、,设定行为输出,列为输入;,b、,行输出为,0,,输入列信号;,c、,检查列信号是否全为,1,,,若是,无键按下,转,b;,如果不全为,1,,表明有键按下,执行下步;,d、,延时,10,ms,,消除抖动。,e、,逐列检测,找出为,0,的列信号,j;,f、,设定列为输出,行为输入;,g、,列输出为,0,,输入行信
30、号;,h、,逐行检测,找出为,0,的行信号,i;,i、,计算键号,key_num,7.2,可编程定时计数器接口芯片,8253,定时和脉冲信号的处理与接口是完全有别于并行信号的,其特点是信号形式简单但需要连续检测。,并行接口,计数器,脉冲控制,计数器溢出,7.2,可编程定时计数器接口芯片,8253,一、功能,下面介绍的,INTEL8253,可编程定时计数器就是可以实现所要求这方面功能。,8253,内部有,3,个独立的,16,位定时计数器通道。计数器可按照二进制或十进制计数,计数和定时范围可在,165535,之间改变,每个通道有,6,种工作方式,计数频率可高达,2,MHz,以上。,二、,8253,
31、的内部结构,计数通道,数据总线缓冲器,读写控制电路,通道控制寄存器,1,、四个端口,计数器,0,计数器,1,计数器,2,控制,端口,2,、每个计数端口有三根线与外界联系,CLK:,计数器脉冲输入,GATE:,门控信号,OUT:,计数器输出,计数器,CLK,GATE,OUT,三、,8253,的管脚分配与,8086,接口,通道管脚,数据线,通道选择,控制线,1,、管脚定义,2,、接口,四、,8253,的编程,8253,只有一个控制字,,8253,的一个方式控制字只决定一个计数通道的工作模式。,8253,的控制字格式如图所示。共分为,4,部分,通道选择、计数器读,/,写方式、工作方式和计数码的选择。
32、,、计数器选择(,SC,1,、,SC,0,),SC,1,SC,0,对应的通道,0 0,通道,0,0 1,通道,1,1 0,通道,2,1 1,不用,、计数器读,/,写方式(,RL,l,、,RL,0,),RL,1,RL,0,通道读写操作,0 0,计数器锁存,0 1,只读写低,八位字节,1 0,只读写高,八位字节,1 1,读写,16,位,STB,计数器,L,计数器,H,、工作方式选择(,M,2,、,M,1,、,M,0,),M,2,M,1,M,0,工作方式选择,0 0 0,工作方式,0,0 0 1,工作方式,1,X 1 0,工作方式,2,X 1 1,工作方式,3,1 0 0,工作方式,4,1 0 1,
33、工作方式,5,、计数码选择(,BCD,),BCD,计数制式选择,0,二进制计数制,1,BCD,计数制,五、,8253,的工作方式,1,、方式,0,计数结束产生中断方式,工作方式,0,有如下特点:,a、,门控信号,GATE,必须为,1,,计数器才能计数;,b、,计数时通道输出端,OUT,一直为,0,;,c、,通道计数器计数到,0,后,,OUT,由0到1,,同时计数器停止工作。,a,b,c,时间常数,(秒)3840,H(,秒),相应的程序段如下:,mov,al,10011010B;,置8255,A,方式控制字,out 8255,控制口,,al,mov,al,00h;8255A,置位,/,复位控制字
34、,使,PC00,out 8255,控制口,,al,mov,al,30h;,置8253,通道,0,方式控制字,out 8253,控制口,,al,mov,al,40H;,置8253,通道,0,时间常数,out,通道,0,端口,,al,mov,al,38H,out,通道,0,端口,,al,中断程序中有关程序段如下:,mov,al,00000001B;8255,置位,/,复位控制字,使,PC01,out 8255,控制口,,al,2,、方式,1,可编程序的单独负脉冲,方式,1,工作过程如下:,b、,触发后,通道计数器开始计数,输出端,OUT,由高变低;,c、,计数器计数到,0,,,OUT,再由低变高。
35、,a,b,c,a、,门控信号,GATE,是触发信号,上升沿有效。即开始计数是由,GATE,的上升沿触发的;,d、,计数器过程中,如果又被触发,则计数器重新工作,d,3,、方式,2,速率发生器,方式,2,的特点如下:,a、,GATE,门为,1,,计数器才能工作,对,CLK,端上的脉冲进行计数;,b、,当计数器“减”计数到,1,时,输出端由高变低,再经过一个,CLK,周期,即计数器计数到,0,时,输出端,OUT,又跳变为高。所以方式,2,输出周期性负脉冲信号,其宽度固定为一个,CLK,周期;,c、,当计数器的值减为,0,时,自动重新装入计数初值,实现循环计数。,a,b,c,4,、方式,3,方波发生
36、器,方式,2,虽然可以作分频电路,但其输出是窄脉冲,如果是方波,就只有选方式,3,8253,的通道,0,,实时中断。,用于产生固定频率的时钟节拍,故设定工作在方式,3,,初值为,0,,所以从,OUT0,管脚的输出方波频率为,1.19,MHz/2,16,=18.2Hz,,通道,0,的控制字为,36,H;,8253,的通道,l,,动态,RAM,刷新。,用于固定频率的刷新信号,故设定工作在方式,2,,计数值为,12,H18,,速率输出频率为,1.19,M/1866.1kHz,,即定时时间为,15.13,s,,通道,1,的控制字为,54,H;,8253,的通道,2,,用于产生频率信号。,故取工作在方式
37、,3,,计数值为,6,A4H1190,,方波输出频率为,1.19,MHz/11901kHz。,此信号频率决定扬声器的音调,通道,2,的控制宇为,0,B6H,。,8253,的通道,0,,实时中断。,用于产生固定频率的时钟节拍,故设定工作在方式,3,,初值为,0,,所以从,OUT0,管脚的输出方波频率为,1.19,MHz/2,16,=18.2Hz,,通道,0,的控制字为,36,H;,8253,的通道,l,,动态,RAM,刷新。,用于固定频率的刷新信号,故设定工作在方式,2,,计数值为,12,H18,,速率输出频率为,1.19,M/1866.1kHz,,即定时时间为,15.13,s,,通道,1,的控
38、制字为,54,H;,8253,的通道,2,,用于产生频率信号。,故取工作在方式,3,,计数值为,6,A4H1190,,方波输出频率为,1.19,MHz/11901kHz。,此信号频率决定扬声器的音调,通道,2,的控制宇为,0,B6H,。,方式,4,软件触发方式,软件触发方式实际上就是,CPU,通过指令触发一个选通信号给外部设备,选通信号在触发后设定时间点上发出。,方式,4,在工作过程中有以下特点:,1,、门控信号,GATE,为高电平,计数器开始减,1,计数,,OUT,维持高电平;,a,b,2,、当计数器减到,0,,输出端,OUT,变低,再经过一个,CLK,输入时钟周期,,OUT,输出又变高。,
39、6,、方式,5,硬件触发方式,这种工作方式同方式,4,很相似,当控制字写入控制寄存器后,输出端,OUT,变高。同方式,4,不同的一点是当计数值写入通道计数器后,通道并未被触发,也就是计数器并不立即开始计数。只有当,GATE,信号的上升沿触发通道后,通道计数器才开始计数。,方式,5,硬件触发方式,8253,的工作方式小结,8253,的六种工作方式可归为两类,一个是充当频率发生器,另一类主要是作计数器来使用。下面我们就从这个角度来讨论总结,OUT,和,GATE,门的作用。,与频率发生器有关的工作方式,8253,有两种方式与频率发生器有关,即方式,2,和发生,3,。,对,OUT,端,方式,2,提供给
40、用户的是负脉冲,方式,3,提供给用户的是方波。,在这个两种方式下,,GATE,信号要始终保持为高。,与计数器有关的工作方式,对于计数器类,有方式,0,、,1,和方式,4,、,5,。启动计数器的方式有两种。,一种是,CPU,把时间常数写入相应通道后,计数器就开始工作,我们可以称之为软件启动方式,在这种启动方式下,,GATE,要始终保持为高电平,所以方式,0,和方式,4,可以称为,软件启动方式,。,另一种是,硬件启动计数器,,即,CPU,把时间常数写入计数器后,即使,GATE,为高电平,计数器并不工作。只有,GATE,发生跳变,其上升沿启动计数器工作,,所以方式,1,和方式,5,就可以称为硬件启动
41、方式,计数器溢出时,,OUT,有两种输出形式,要么是电平,要么是负脉冲。前者有方式,0,方式,1,,后者有方式,4,和方式,5,。,六、,8253,应用举例,例,1,:,现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为,1,MHz。,要求利用,8253,做一个秒信号发生器,其输出接一发光二极管,以,0.5,秒点亮,,0.5,秒熄灭的方式闪烁指示。设,8253,的通道地址为,80,H86H(,偶地址),解:,1,、时间常数计算,这个例子要求,用8253,作一个分频电路,而且其输出应该是方波,否则发光二极管不可能等间隔闪烁指示。频率为,1,MHz,信号的周期为,1,微妙,而,1,Hz,信号的周
42、期为,1,秒,所以分频系数,N,可按下式进行计算:,由于,8253,一个通道最大的计数值是,65536,,所以对于,N1000000,这样的大数,一个通道是不可能完成上述分频要求的。由于,即取两个计数器,采用级联方式。,2,、电路,3,、工作方式选择,由于通道,1,要输出方波信号推动发光二极管,所以通道,1,应选工作方式,3,。对于通道,0,,只要能起分频作用就行,对输出波形不做要求,所以方式,2,和方式,3,都可以选用。,这样对于通道,0,,我们取,工作方式,2,,BCD,计数;,对于通道,1,,我们取,工作方式,3,,二进制计数,(当然也可选,BCD,计数),4,、程序,mov,al,00
43、110101b;,通道,0,控制字,out 86h,al,mov,al,00;,通道,0,初始计数值,out 80h,al,mov,al,10h,out 80h,al,mov,al,01110110b;,通道,1,控制字,out 86h,al,mov,al,0e8h;,通道,1,初始计数值,,03,E8H=1000BCD,out 82h,al,mov,al,03h,out 82h,al,例,2,:延时程序,,设,8253,的通道地址为,80,H86H,,8255,的地址为,88,H,8,E,H,(,偶地址),解:,1,、电路,这个例子要求用,8253,8255,作一个延时系统。,GATE0,C
44、LK0,OUT0,+5V,1KHz,PC0,8253,8255,2,、时间常数计算,如果,8253的,CLK,输入,1,KHz,信号,延时时间为,1,S,,则时间常数为,N1/0.001=1000D=03E8H,3、,工作方式选择,4,、程序,MOV AL,10011011B;A、B、C,为输入,OUT 8255_CTRL,AL,DELAY1SPROC,MOV AL,00110001B;,通道,0,工作在方式,0,,,;,16,位读写,,BCD,计数,OUT 8253_CTRL,AL,MOV AL,0,OUT COUNTER0,AL,MOV AL,10H,OUT COUNTER0,AL,AGA
45、IN:IN AL,8255_C,TEST AL,01,JZ AGAIN,RET,DELAY1SENDP,例,3,:音乐演奏系统,,设,8253,的通道地址为,80,H86H,,8255,的地址为,88,H,8,E,H,(,偶地址),解:,1,、电路,这个例子要求用,8253,8255,作一个定时音调发生器。,GATE0,CLK0,OUT0,+5V,1KHz,PC0,8253,8255,GATE1,CLK1,OUT1,+5V,1MHz,驱动,1:262Hz,2:294Hz,3:330Hz,4:349Hz,0EE8H,0D49H,0BD9H,0B31H,5:392Hz,6:440Hz,7:494H
46、z,09F9,08E0H,01EEH,2,、时间常数计算,如果,8253的,CLK,输入,1,KHz,信号,延时时间为,1,S,,则时间常数为,N,f,clk,/,f,out,3、,工作方式选择,4,、程序,建立频率和时间表格,例4,:,计件系统。计件系统的功能就是记录,脉冲的个数。,一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,,PC,机可以显示当前计数器的内容,当完成,10000,个工件记录后,系统发出,1,KHz,信号推动喇叭发音通知用户。,解:,1,、电路。,需要两个通道,一个作为计数,选用通道,0,。另一个产生,
47、1,KHz,信号,选用通道,1,。,工作原理如下,传感器电路把物理事件转换为脉冲信号输入到通道,0,计数,当记录,10000,个事件后,通道,0,计数器溢出,,GATE,端输出高电平,这时通道,1,开始工作,产生,1,KHz,信号推动喇叭发音,。,2,、工作方式选择,对于通道,1,,由于要产生,1,KHz,信号,故选用工作方,式,3,。,对于通道,0,,要求初始计数值写入计数通道后,计数器就可以工作,则通道,0,的启动方式应是软件启动。另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式,0,和方式,4,,对于图所示方案,通道,1,的,GATE,信号由通道,0,的,OUT,信号产生,这个,OUT,信号应该是电平型的,所以通道,0,应选用方式,0,。,3,、时间常数,N,0,10000=2710H,4、,程序,