资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第七章 微型机接口技术,一、,概述,二、可编程定时/计数器,Intel 8253,三、可编程并行通信接口芯片,8255A,四、可编程串行通信接口芯片,8251A,7.1 概述,一、接口电路的分类和功能,外设必须通过接口电路与,CPU,相连接,数据总线,控制总线,地址总线,接口电路,外部设备,数据线,控制线,状态线,一、接口电路的分类和功能,接口电路按通用性分为两类:通用接口和专用接口,通用接口:可供多种外部设备使用的标准接口,目的是使微机正常,工作 通用接口通常制造成集成电路芯片,称为接口芯片。,最初的,IBM-PC,使用了6块接口芯片:8284、8288、8255、8259、8237、8253,后来的微机将这些芯片集成为大规模集成电路芯片,称为芯片组。,如82430,TX,芯片组,由两片芯片组成:,北桥:82439,TX,南桥:82371,AB,一、接口电路的分类和功能,专用接口:为某种用途或某类外设而专门设计的接口电路,目的,在于扩充微机系统的功能。,专用接口通常制造成接口卡,插在主板总线插槽上使用。,通用接口和专用接口的界限并不严格。,按照可编程性,接口芯片分成硬布线逻辑接口芯片和可编程接口芯片。,可编程接口芯片的功能可以由指令来控制。,一、接口电路的分类和功能,接口电路的功能:,1)缓冲锁存数据,2)地址译码,I/O,设备的选择,3)信息的输入输出,4)信息类型转换,码制转换,信息个数的转换,电平转换,典型的接口原理框图(,P272),7.2 可编程计时器/计数器8253,1. 定时信号的需求:,在计算机系统中,经常要用到定时信号,比如:,在许多个人计算机中,,动态存储器的刷新定时;系统日历时钟的计时;喇叭的,声源;,都是用定时信号来产生的。,在计算机实时控制与处理系统中,,计算机需要每隔一段时间采样一次,在对采,样的数据处理、控制,,也要用到定时信号。,2. 定时信号的产生,定时信号的产生有三种方式:,软件方法:延时子程序;(每条指令都需时间,缺点:计时不够准确,占用了,CPU),不可编程硬件方法:用电阻和电容构成,(简单,但连接好后不易修改延时时间。,可编程硬件方法:工作方式、定时值和定时范围可以很容易由软件来确定和修改 ),可编程的定时/计数器的主要用途,: (,P272),二、可编程定时/计数器,Intel 8253,原理,主要功能,芯片上有三个独立的16位计数器通道;,每个计数器可以按照二进制或二十进制计数;,每个计数器的计数速率可达 2.6,MH,Z,;,每个通道有 6 种工作方式,可用程序设置和改变;,所有的输入输出都与,TTL,兼容。,(2) 结构,数据总线,缓冲器,读 / 写,逻辑,控制字,寄存器,计数器,0号,计数器,1号,计数器,2号,初始化时,由,CPU,写入控制字以决定,某通道的工作方式。,计数器/定时器通道。,由16位的可预置值的减法计数器构成。,8位双向三态。用于与,CPU,交换信息。,初始化时,,CPU,向其写入命令字等,,计数值;,CPU,读取计数值。,接收来自系统总线,的控制信号,以产,生控制整个芯片工,作的控制信号,管脚信号,D7,D0,数据总线(双向),RD,读输入,WR,写输入,A0,A,1,选择内部寄存器地址,CS,片选,CLK,输入脉冲(计数器即,对此脉冲计数),GATE,门控信号输入(控制,计数器工作的外部信,号,为低时,禁止计,数器工作),OUT,输出引脚(计数到0,时,,OUT,上必有输出,输出信号的波形由,工作方式决定),端口选择,控制字 ,在8253的初始化编程时,由,CPU,向8253的控制字寄存器,写入一个控制字,它规定了8253的工作方式。,二进制的数范围为0000,H-FFFFH,十进制的数范围为0000,H-9999H,最大均为0000,H,,最小均为1,3. 可编程定时/计数器的工作原理,CPU,对计数器设定工作方式,装入初值,在,GATE(,门控信号)的启动下,计数器开始工作,在输入脉冲,CLK,的作用下做减 1 计数(来一个脉冲计数值减 1 ),减至 0时,输出端,OUT,输出一个信号。,4. 可编程定时/计数器的功能,计数 在设定好计数初值后,做减 1 计数,减为 0 时,输出一个信号。,定时 在设定好计数初值后,做减 1 计数,并按定时常数不断输出为时,钟周期整数倍的定时间隔。,2. 工作方式, 8253共有六种工作方式,(1) 方式0 计数结束中断,(2) 方式1 可重复触发的单稳态触发器,(3) 方式2 频率发生器,(4) 方式3 方波频率发生器,(5) 方式4 软件触发选通,(6) 方式5 硬件触发选通,3. 8253编程,(1) 方式0 计数结束中断,当控制字写入控制字寄存器时,即使,OUT,输出端变低,在写入计数初值后,,计数器开始计数(此时,GATE,信号必须为高),计数结束后,OUT,输出端变高。,特点:,1. 计数器只计一遍。当计数到 0 时,并不恢复计数初值,不开始重新,计数,且输出一直保持为高。只有在写入下一个计数值时,,OUT,变低,开始新的计数。,特点:,3. 在计数过程中,可改变计数值。在写入新的计数之后,计数器按新,的值重新开始计数。,特点:,2. 在计数过程中,可由门控信号,GATE,控制暂停。,GATE=0,计数暂停,,GATE,变高后,接着计数。,特点:,4. 8253内部没有中断控制电路,也没有专用的中断请求引线,因此,,若要用于中断,则可用,OUT,信号作为中断请求信号,但需要有外接,的中断优先权排队电路与中断向量产生电路。,在,PC,机中,用 8259,A,作中断优先权排队电路与中断向量产生电路。,(2) 方式1 可重复触发的单稳态触发器,当控制字写入控制字寄存器后,,OUT,输出保持为高,当,CPU,写完计数值后,,计数器并不开始计数,直到,GATE,信号启动之后的下一个输入,CLK,脉冲的下降沿,开始计数),,OUT,输出端变低。在整个计数过程中,,OUT,都维持为低,直到计数,为 0 时,输出变为高,输出一个单脉冲。,特点:,1. 若设置的计数值为,N,,则输出的单脉冲宽度即为,N,个输入脉冲间隔。,2. 当计数到 0 后,可再次由外部触发启动,输出一个同样宽度的,单拍脉冲,而不用再次送计数值。,特点:,3. 在计数过程中,外部可发门控信号进行再触发,在触发脉冲上升沿,后的下一个,CLK,脉冲的下降沿,计数器将重新开始工作。,特点:,4. 在计数过程中,,CPU,可改变计数初值,这时计数过程不受影响,计,数到 0 后输出为高。若再次触发启动,则计数器将按新的计数值计数。,所以改变计数值是下次有效的。,(3) 方式2 频率发生器,当控制字写入控制字寄存器后,,OUT,输出为高。在写入计数值后,计数器将立即自动对输入脉冲,CLK,计数。在计数过程中,,OUT,一直保持为高,直到计数器减到 1 时,,OUT,变低,经过一个,CLK,后,,OUT,恢复为高,计数器重新开始工作。,特点:,1. 不用重新设置计数值,计数器能够连续工作,输出固定频率的脉冲。,特点:,2. 计数过程可由门控信号,GATE,控制。当,GATE,变低时,暂停计数;在,GATE,变高后的下一个,CLK,脉冲使计数器恢复初值,重新开始计数。,特点:,3. 在计数过程中可以改变计数值,这对正在进行的计数过程没有影响,,但在计数到 1 输出变低后,下一个计数周期,计数器将按新的计数,值计数。所以改变计数值是下次有效的。,(4) 方式3 方波频率发生器,同频率发生器,区别在于,方波频率发生器在计数过程中输出一半时间为高,一半时间为低。即其输出是,N(N,为计数值)个,CLK,脉冲的方波。,特点:,1. 若计数值为偶数,在装入计数值后,每个,CLK,脉冲使计数值减2,当计数,到 0 时,一方面输出改变状态,一方面重新装入计数值开始新的计数。,若计数值为奇数,装入计数值后,第一个,CLK,脉冲使计数器减1,以后每,个,CLK,使计数器减2。,所以,若计数值,N,为奇数,则(,N+1)/2,个,CLK,脉冲为高电平,(,N-1)/2,个,CLK,脉冲为低电平。,特点:,2.,GATE,信号能使计数过程重新开始。,GATE=0,,计数停止,当,GATE=1,后,,计数器将重新装入计数初值,重新开始计数。,特点:,3. 若在计数期间写入新的计数值,并不影响现行计数过程。但若此时收到,GATE,信号,则计数器将在下一个,CLK,脉冲时装入新的计数值并开始计数。,(5) 方式4 软件触发的选通信号发生器,在这种方式下,当写入控制字后,输出为高,当写入计数值后立即开始计数。计数到 0 后,输出变低,经过一个,CLK,周期,输出又变高,计数器停止计数。这种计数方式是一次性的,当输入新的计数值后,才能开始新的计数。,特点:,1.,CPU,写入计数值的下一个,CLK,脉冲,将计数值装入计数器,再下一个,CLK,脉冲开始计数,即在装入计数值后的第,N+1,个脉冲后,才输出一个,负脉冲。,特点:,3. 若在计数期间写入新的计数值,则按新的计数值重新开始计数。,特点:,2.,GATE=0,,禁止计数,,GATE=1,,允许计数。因此要做到软件触发,,GATE,必须保持为高。但,GATE,不影响输出。,(6) 方式5 硬件触发选通,在这种方式下,当写入控制字后,输出为高,当写入计数值后,计数器并不立即开始计数,而是由门控信号的上升沿触发启动。计数到 0 后,输出变低,经过一个,CLK,周期,输出又变高,计数器停止计数。等到下一次门控信号的触发才能开始新的计数。,特点:,1.,CPU,写入计数值的下一个,CLK,脉冲,将计数值装入计数器,再下一个,CLK,脉冲开始计数,即在装入计数值后的第,N+1,个脉冲后,才输出一个,负脉冲。,特点:,2. 若在计数过程中使用,GATE,信号,则使计数器重新开始计数。但,GATE,不,影响输出。,特点:,3. 若在计数期间改变计数值,只要没有门控信号的触发,不影响计数过程,,计数到0后,若有门控信号触发,则按新的计数值开始计数;若未计数到,0,即有门控信号触发,则立即按新的计数值重新开始计数。,3. 8253编程,要使用 8253 必须首先对其进行初始化编程。初始化编程的步骤是:,(1) 写入通道控制字,规定通道的工作方式;,(2) 写入计数值,若规定只写低8位,则写入的为计数值的低8位,高8位自动置0;,若规定只写高8位,则写入的为计数值的高8位,低8位自动置0;,若是16位计数值,则分两次写入,先写入低8位,再写入高8位。,4. 8253 编程举例,(1) 初始化编程:使用通道0,工作在方式 1 下,按二十进制计数,计数值为5080。,0 0 1 1 0 0 1 1,通道0 先写低8位 方式1,BCD,计数,再写高8位,通道控制字,计数值的低8位为80,高8位为50。,MOV AL, 33H,OUT 07H, AL,MOV AL, 80,OUT 04H, AL,MOV AL, 50,OUT 04H, AL,;假设8253的地址为 04,H 07H,; 0 0 0 0, 0 1,0 0, 0 0 0 0, 0 1,1 1,CPU,读取计数器的计数值。,因为计数值在不断地变化,故读取计数值时,必须将当前计数值锁存。,通常的做法是:向8253送一个控制字,令通道中的锁存器将计数值锁存,,然后由,CPU,读取。若为,16,位,则要读取两次。,例:读取通道1 中的计数值。端口为,04H,07H,通道控制字,MOV AL, 40H,OUT 07H, AL,;计数器,1,的值锁存。,IN AL, 05H,MOV CL, AL,IN AL, 05H,MOV CH, AL,5. 8253 编程应用举例 (,P278),利用8253进行测速。,0 1 0 0 0 0 0 0,通道1 计数器锁存,三、,IBM PC/XT,中的定时/计数器电路,PC,机中,8253 的三个计数器都得到使用,三个计数器的时钟脉冲都是1.1931816,MH,Z,即时钟信号发生器8284,A,的,PCLK,外围设备用时钟信号。,1.1931816,MH,Z,IRQ,0,到8259,1. 计数器0,计数器0工作在方式3(方波频率发生器)下,在系统运行期间:,GATE,恒接于+5,V,,处于开启状态,当装入一个初值后,即开始计数。,计数初值为 0 (65536),输出的方波频率为 18.2,H,Z 。,输出,OUT,0,接于 8259 的中断请求线,IRQ,0,上,这样便每隔 1/ 18.2 =55,ms,产,生一次 0 级中断,,当 0 级中断发生时,系统便进入,BIOS,日时钟中断子程序,产生日时钟计数;,此外,还作为软盘驱动器的马达开启时间管理,当开启一定的时间后,令其自,动关闭。,方式3,1.1931816,MH,Z,0,65536,18.2,H,Z,2. 计数器1,计数器1工作在方式 2(频率发生器方式)下,在系统运行期间:,GATE,恒接 +5,V,,处于常启状态;,OUT,1,接,DMA,控制器 8237 的 0 通道,DREQ,0,,,计数初值定为 18,输出频率=1.1931816,MH,Z,/ 18 =66.287 KH,Z,的一系列负脉冲,,即: 每隔 1/66.287 = 15.0857,s,向,DMA,控制器提出,DMA,请求,由,DMA,控制,器的 0 通道完成对动态存储器的刷新。,用于定时的向,DMA,控制器提出请求,以对动态存储器刷新。,方式2,1.1931816,MH,Z,3. 计数器 2,计数器3工作在方式3(方波频率发生器方式)下,在系统运行期间:,预置初值为 533,H,,GATE,2,信号受系统并行接口芯片8255,PB,0,的控制;,OUT,2,受系统并行接口芯片8255,PB,1,的控制。,用于提供系统喇叭发声的音调。,8255,PB,口,7 6 5 4 3 2 1 0,8253,计数器2,CLK,GATE,喇叭驱,动电路,喇叭,PCLK,1.1931816MH,Z,4. 8253 的,BIOS,功能调用,INT 1AH ,读当前时钟;设置当前时钟。,INT 1CH ,在时钟中断处理程序(,INT 8),中有一条软中断指令,INT 1CH,INT 1CH,的处理程序只是一条返回指令(,IRET,指令),用户可在此,程序中加入,自己,的程序,当发生时钟中断时则可执行此程序,以实现,时实控制。,5. 8253 的,DOS,功能调用,INT 21H,的,AH=2AH ,设置日期,2,BH ,读日期,2,CH ,设置时间,2,DH ,读时间,四、应用举例,1. 编写时钟中断处理程序日时钟,CLK,0,CLK,1,CLK,2,OUT,0,IRQ,0,INT,INTR,INTA,INTA,S,2,S,1,S,0,D,70,类型码,00,00,59,1,F,00000,00020,00023,1,F59:0000,中,断,向,量,表,中,断,服,务,程,序,8253,8259,8086,8288,内存,时间常数的计算,要求 8253 每隔 10,ms,发一次定时中断。,计数初值=,PCLK /,计数器输出频率,=,PCLK *,计数器输出周期,= 1.1931816*10,6,*( *10*10,-3,),= 11932,方式3,1.1931816,MH,Z,0,11932,地址 寄存器,40,H,计数器1,41,H,计数器2,42,H,计数器3,43,H,控制寄存器,PC,机中8253 地址分配,Stack segment,para,stack stack,db 256 dup(?),Stack ends,Data segment public data,Count100 db 100,;100,计数器,Tenhour,db 0,;,时的十位数,Hour db 0,;,时的个位数,db :,Tenmin,db 0,;,分的十位数,Minute db 0,;,分的个位数,db :,Tensec,db 0,;,秒的十位数,Second db 0,;,秒的个位数,Data ends,Code segment,para,public code,Start proc far,assume,cs:code,da:data,es:data,ss:stack,Begin: push,ds,xor,ax, ax,push ax,mov,ax, data,mov,ds, ax,mov,es, ax,mov,si, 82h,;PSP,中命令行参数,hh:mm:ss,存放地址,mov,di, offset,tenhour,;,数据段中存放时间的首地址,mov,cx, 8,cld,rep,movsb,;,将8个字串从,PSP,中移到数据段中存放时间的单元中,mov,ah, 0,;,键盘功能调用等待按键,int,16h,cli,;,关中断,mov,ax, 0,mov,es, ax,mov,di, 20h,mov,ax, offset timer,stosw,mov,ax,seg,timer,stosw,;,将中断服务程序入口地址存入中断向量表,mov,al, 36h,;,设8253 控制字选计数器0,双字节写,方式2,二进制,out 43h, al,mov,bx, 11932,;,送计数值,mov,al,bl,out 40h, al,mov,al,bh,out 40h, al,mov,al,fch,;,设8259 屏蔽寄存器允许时钟,IR0,和键盘中断,IR1,out 21h, al,sti,;,开中断,Forever:mov,bx, offset,tenhour,;,取,hh:mm:ss,8,个字串进行显示,mov,cx, 8,Dispclk,:,mov,al, ,bx,call,dispchar,inc,bx,loop,dispclk,mov,al, second,;,取秒数,Wait:,cmp,al, second,jz,wait,;,等待变化,jmp,forver,;,变了则重新显示,Timer proc far,push ax,dec,count100,;,计数值减1,,jnz,timerx,;,不到 0,返回,inc second,;,到0,秒加1,cmp,second, 9,;,处理秒,jle,timerx,;,小于等于返回,mov,second, 0,inc,tensec,cmp,tensec, 6,jl,timerx,;,返回,mov,tensec, 0,inc minute,;,处理分,cmp,minute, 9,jle,timerx,mov,minute, 0,inc,tenmin,cmp,tenmin, 6,jl,timerx,mov,tenmin, 0,inc hour,;,处理时,cmp,hour, 4,jl,timerx,mov,hour, 0,inc,tenhour,cmp,tenhour, 2,jl,timerx,mov,tenhour, 0,Timerx,:,mov,al, 20h,;,对8259发,EOI,命令,out 20h, al,pop ax,iret,Timer,endp,Dispchar,proc near,;,显示,push,bx,mov,bx, 0,mov,ah, 14h,;,用显示器功能调用,int,10h,pop,bx,ret,Dispchar,endp,Start,endp,Code ends,end begin,2. 扬声器控制,设计一个程序,使扬声器发出600,Hz,频率的声音,按下任意键声音停止,PC,机的发声系统以计数器2为核心。,CLK2,的输入频率,1.19,MHz,改变计数器初值可以由,OUT2,得到不同频率的方波输出,对于600,Hz,,计数初值1.19,MHz/600Hz=1938,发声系统受8255芯片,B,口的两个输出端线,PB0、PB1,的控制,PB0,为1,使,GATE2,为1,计数器2能正常计数,PB1,为1,打开输出控制门,2. 扬声器控制,CODE SEGMENT,ASSUME CS:CODE,START:,MOV AL 0B6H,;,10110110,OUT 43H, AL,IN AL, 61H,OR AL, 03H,OUT 61H, AL,MOVAX, 1938,OUT42H, AL,MOVAL, AH,OUT 42H, AL,8255,PB,口61,H,7 6 5 4 3 2 1 0,8253,计数器2,CLK,GATE,喇叭驱,动电路,喇叭,PCLK,1.1931816MH,Z,MOVAH, 01H,INT 21H,IN Al, 61H,AND AL, 0FCH,OUT 61H, AL,MOVAH, 4CH,INT 21H,CODE ENDS,END START,3.,PC,机8253的应用-程序运行时间计算,方法1:时钟中断处理程序(,INT 8),通过82,53,的计数器0,工作方式3,预置的数为0000,H,,故,OUT,将输入的1.19318,MHz,以216分频,输出18.2,Hz,的方波提供给8259,int0,每55,ms,产生一次中断,在时钟中断处理程序(,INT 8),中有一条软中断指令,INT 1CH ,INT 1CH,的处理程序只有一条返回指令(,IRET,指令),用户可在此 程序中加入自己的程序(或修改中断向量使其指向用户自己的程序),例如设置计数器, 当发生时钟中断时则可执行此程序,则可以判断程序运行的时间。,使用前提:计数是以55,ms,为单位, 故程序运行的时间应该至少大于55,ms,方法2:若程序运行时间小于55,ms,,可以直接读取8253计算器0的计数值, 步骤是,1.先发计数锁存命令,,2.然后读,OL,的值(程序运行前),3.再次读,OL,的值(程序运行后),4.两次的差值就是程序的运行时间,问题:,如果想设计一个完善的程序运行计时方案(任意时长), 可以考虑何种方法?,7.5 并行接口,并行接口的特点,可编程并行通信接口芯片8255,一、并行接口的特点,并行接口是在多根数据线上,以字节/字为单位与,I/O,设备交换数据,8255A,的内部结构,二、可编程并行通信接口芯片8255,8255芯片引脚定义与功能,共40个引脚,连接系统端的主要引线:,D0,D7,CS RD WR A0,A1,RESET,复位信号,接系统总线的,RESET,连接外设端的引脚:,PA0PA7,PB0PB7,PC0PC7,分别对应,A、B、C,三个,8,位输入,/,输出端口,三个端口可通过,编程,分别指定为输入或输出口。,其中,,C,口即可用作独立的输入,/,输出口,也可用作,A,、,B,口的,控制信号,输出或,状态信号,输入。,A,组,B,组,端口,A,端口,C,的高4位,端口,B,端口,C,的低4位,A1 A0,选择,0 0,端口,A,0 1,端口,B,1 0,端口,C,1 1,控制寄存器,8255,与系统的连接示意图,D0D7,WR,RD,A1,A0,CS,DB,IOW,IOR,A1,A0,译码器,8255,A,口,B,口,C,口,D0D7,外 设,A15,A2,系统总线,三、,8255,工作方式,基本输入/输出方式(方式0),选通工作方式(方式1),双向传送方式(方式2)(仅,A,组),某端口工作于哪一种方式,可通过软件编程来指定。即向,8255,写入方式控制字来决定其工作方式,见下页。,三、,8255,工作方式(参照书上,284,288,),(1),:方式,0,基本输入,/,输出 在此工作方式下,每个口都作为基本的输入输出口,,C,口的高,4,位和低,4,位以及,A,口和,B,口都可独立地设置为输入口和输出口。 在此工作方式下:输出的数据被锁存,而输入的数据不被锁存。,方式,1,选通输入,/,输出方式:,A,、,B,口均为单向选通式输入,/,输出,并均具有锁存功能;可用于异步传输,要求外设提供选通,/,接收应答信号。,输入过程,:,1,.,当输入设备已准备好一个新数据时,首先检测,IBF,线的状态,若为低,(,表示输入锁存器,空,),则输入设备将数据放入,PA7-PA0,。,2.,然后发出选通信号,STB,STB,将,PA7-PA0,上的数据置入数据锁存器,这时,8255A,使,IBF,有效,指示输入锁存器已,满,。,3. STB,变为无效后,8255A,使,INTR,由低变高,通过,8259A,向,CPU,发出中断请求,CPU,响应请求并进入相应的中断服务程序。,4.,在中断服务程序中,CPU,读端口,A,RD,的下降沿使,INTR,无效。,5.,RD,的上升沿使,IBF,变无效,指示输入锁存器的数据已传送给,CPU,处于,“,空,”,状态,准备接收新的数据。,注:,INTR,信号是受控于,INTE,和,IBF,信号的。只有当,INTE=1,时,通道,A,或,B,才能向,CPU,发出中断请求。因此,,INTE=1,是使通道能够产生中断的必要条件。,INTE,是由软件对,C,通道的置位或复位指令来实现对中断的控制,对,PC4,置,1,,则使通道,A,处于中断允许状态;对,PC2,置,1,,则使通道,B,处于中断允许状态。,需要注意的是:在方式,1,时,,PC4,和,PC2,的置位,/,复位操作完全是,8255A,的内部操作。操作时对,PC4,和,PC2,引脚(这时用于通道,A,和通道,B,的数据选通,STB,输入)的逻辑状态完全没有影响。,输出过程,:,1.,以端口,A,为例,当输出设备接收了前一次数据后,8255A,通过,8259A,向,CPU,请求中断。,2.,在中断服务程序中,CPU,将数据写入指定的端口,WR,变为有效,于是数据写入输出锁存器并出现在,PA7-PA0,。,3.,写信号,WR,的上升沿使,OBF,变为有效,指示输出设备,PA7-PA0,上,已有新的数据,同时还使,INTR,变为无效。,4.,在,PA7-PA0,上输出数据。,5.,输出设备接收到数据后,向,8255A,发回,ACK,信号,ACK,的上升沿通常表示输出设备已准备好再接收新的数据。,6.,8255A,在,ACK,出现上升沿之前使,OBF,变为无效,若,INTE=1,则还使,INTR,变为有效,再次请求中断,。,方式,2,双向选通输入,/,输出方式:,A,口可作为输入口,也可以作为输出口,并均具有锁存功能;,C,口作为,A,口的状态或控制位;,B,口此时只可工作在方式,0,。,方式,2,也称选通的双向,I/O,方式,仅适用于端口,A,, 这时,A,口的,PA7-PA0,作为双向的数据总线, 端口,C,有,5,条引脚用作,A,的握手信号线和中断请求线,而,B,口和,C,口余下的,3,位仍可工作于方式,0,或,1,。 它可以认为是方式,1,输出和输入的组合但有以下不同:,(1),当,CPU,将数据写入,A,口时,尽管 变为有效, 但数据并不出现在,PA7-PA0,上, 只有外设发出,A,信号时, 数据才进入,PA7-PA0,。,(2),输出和输入引起的中断请求信号都通过同一引脚输出,,CPU,必须通过查询 和,IBF,状态才能确定是输入引起的中断请求还是输出引起的中断请求。,(3) A,和,A,信号信号不能同时有效, 否则将出现数据传送“冲突”。,8255的控制字,方式选择控制字,基本输入/输出方式(方式0),选通工作方式(方式1),双向传送方式(方式2)(仅,A,口),某端口工作于哪一种方式,可通过软件编程来指定。即向,8255,写入方式控制字来决定其工作方式,端口,C,置位/复位控制字,P. 283,注意:,C,口控制字虽然是对端口,C,操作,但应写入到控制口地址,而不是写入到,C,数据口,8255的控制字,编程举例:设,A、B、C,数据口地址分别位60,H、 61H、,62H、,控制口端口地址 63,H,1:,A,口方式0,输出、,B,口方式0,输入,,C,口高4位输出,,C,口低4位入,MOV AL,10000011B,OUT 63H,AL,2:,PC7,置1,,PC3,置0,MOV DX,63H,MOV AL,0000,1111B;PC7,置1,OUT DX,AL,MOV AL,0000,0110B;PC3,置0,OUT DX,AL,并行打印机接口,P. 289,打印机基本时序,8255作为打印机接口,工作于方式0,程序设计(查询方式,):,设,PA、PB、PC,口地址分别为0,D0H、0D2H、0D4H,控制口地址:0,D6H,MOV AL,81H ;81H1000,0001 A,组工作于方式0,端口,A,输出,端口,C,上半部分输出端口,B,输出端口,C,下半部分输入;设控制字。,OUT 0D6H,AL,MOV AL,0DH,;, PC6,置1,0,DH=0000,1101 /STB=1,OUT 0D6H, AL,LPST:IN AL,0D4H;,读,PC,口,AND AL,04H;,打印机忙否(,PC2 =BUSY=?),JNZ LPST ;PC2=1,,打印机忙,等待,MOV AL, CL,OUT 0D0H, AL; CL,中的字符送,PA,口,MOV AL, 0CH,OUT 0D6H, AL;,置,PC6=0,,00001100=0,CH,INC AL,OUT 0D6H, AL;,置,PC6=1,,即=1,00001101=0,DH,8255的工作方式1选通输入输出方式,中断的方式完成打印,方式控制字:,A,组,工作于方式1,,A,端口输出,,C,端口上半部分输入,下半部分输出,,PC3,产生中断请求信号接至8259,A,的,IR3,,中断类型码为0,BH,,数据选通信号由,PC0,来产生。工作原理:,CPU,通过设置,PC0,来产生数据选通信号,把,A,端口数据送到打印机。打印机接收后发送应答信号,),MAIN:MOV AL,0A0H ;,方式选择控制字1010,0000,OUT 0C6H,AL,MOV AL,01H ;,将,PC0,置1,OUT 0C6H,AL,CLI ;,替换中断向量前关中断,MOV AH,25H ;,替换中断向量的典型方式调用,INT21H,的25号功能,MOV AL,0BH ;IR3,的类型码为0,BH,放入,AL,中,MOV DX,OFFSET ROUTINTR ;,中断入口地址放入,DS:DX,PUSH DS,MOV AX,SEG ROUTINTR,MOV DS,AX,INT 21H,POP DS,MOV AL,0DH ;PA,方式1输出,“置,PC6=1,的操作”,OUT 0C6H,AL ;,使8255允许中断(,INTEA=1),STI ;CPU,开中断,假设:,A,口地址 0,C0H,B,口地址 0,C2H,C,口地址 0,C4H,控制口 0,C6H,中断处理程序,ROUTINTR:,MOV AL,DI ;DI,为打印字符缓冲区地址,OUT 0C0H,AL ;,从,A,端口输出,MOV AL,00H,OUT 0C6H,AL ;,置,PC0=0,INC AL ;,置,PC0=1,IRET,8255A,应用举例,例,.,8255A,工作于方式,0,,利用,8255A,将外设开关的二进制状态从端口,A,输入,经程序转换为对应的,LED,段选码,(,字形码,),后,再从端口,B,输出到,LED,显示器。,具体连线图如图所示。,LED,显示器如图 所示。,设,8255A,的端口地址为: 端口,AD0H,,,端口,BD1H,,,端口,CD2H,,,控制口,D3H,。,则本例的初始化及输入、输出控制程序如下所示。,DATA,SEGMENT,SSEGCODE DB 3FH,,,06H,,,5BH,,,4FH,,,66H,,,6DH,,,7DH,,,07H,DB 7FH,,,67H,,,77H,,,7CH,,,39H,,,5EH,,,79H,,,71H ;,共阴极,DATA,ENDS,CODE,SEGMENT,ASSUME CS: CODE,,,DS: DATA,START,:,MOV AX, DATA,MOV DS, AX,MOV AL,,,90H,;,设置方式选择控制字,,A,口工作于方式,0,输入,,B,口工作于方式,0,输出,OUT 0D3H, AL,;,RDPORTA,:,IN AL,,,0D0H,; 读,A,口,AND AL,,,0FH,; 取,A,口低,4,位,MOV BX,,,OFFSET SSEGCODE,; 取,LED,段选码表首地址,XLAT,;,查表,,AL(BX+AL),OUT 0D1H,,,AL ;,从,B,口输出,LED,段选码,显示相应字形符号,MOV AX,,,XXXXH,;,延时,DELAY,:,DEC AX,;,JNZ DELAY,;,MOV AH,,,1 ;,判断是否有键按下,INT 16H,;,JZ RDPORTA,;,若无,则继续读端口,A,MOV AH,,,4CH,;,否则返回,DOS,INT 21H,COED,ENDS,END START,7.4、串行通信和串行接口,串行通信的概念,所谓串行通讯是指外设和计算机间使用一根数据信号线一位一位地传输数据,每一位数据都占据一个固定的时间长度。,串行通信有传输线少,成本低。适合远距离传送,缺点是速度慢,设并行通信传送,n,位数据所需时间,T,,则串行传送的时间为,nT,.,串行通信的概念,信息传输的检错和纠错,串行数据在传输过程中,由于干扰可能引起信息的出错,如何发现传输中的错误,叫,检错,。,发现错误后,如何消除错误,叫,纠错,最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。,奇校验,:所有传送的数位(含字符的各数位和校验位)中,1的个数为奇数,偶校验,:所有传送的数位(含字符的各数位和校验位)中,1的个数为偶数,信息传输的检错和纠错,奇偶校验能够检测出1位误码,但是不能纠错。,串行通信数据传输方式,全双工方式,通讯双方能同时进行发送和接收操作,电话,串行数据传输方式,半双工方式,只有1根数据线传送数据信号,要求通讯双方的发送和接收由电子开关切换。(对讲机),单工方式,只允许数据按照一个固定的方向传送 (有线电视),传输速率,在串行通讯中,用,波特率,来描述数据的传输速率,波特率,即每秒钟传送的二进制位数,简写为,bps,接收时钟/发送时钟是波特率的倍数,称为,波特率因子,。,例如波特率因子为32,则32个时钟脉冲移位1次。,例:波特率=9600,bps,,波特率因子=16,则,接收时钟和发送时钟频率=960016=153600,Hz,信号的调制和解调,数字信号的频带宽,而普通通信线路频带较窄,如电话线频带范围仅3003400,Hz,所以采用普通通信线路进行远程数据通信时,需要在发送端用调制器(,Modulator),把数字信号转换为模拟信号,模拟信号经通信线路传送到接收方,接收方再以解调器(,Demodulator),,把模拟信号变为数字信号。,大多数情况下,调制器和解调器合在一个装置中,称为,调制解调器,Modem,在通讯中,,Modem,起着传输信号的作用,是一种数据通讯设备,简称,DCE,接收设备和发送设备称为数据终端设备,简称,DTE。,信号的调制和解调,串行通信的类型,串行通讯可以分为两种类型:,同步通讯,、,异步通讯,异步通讯,一个字符一个字符地传输,每个字符一位一位地传输,传输一个字符时,以,起始位,开始,然后传输字符本身的各位,接着传输,校验位,,最后以,停止位,结束该字符的传输。一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为,帧(,Frame),帧与帧之间可有任意个,空闲位,异步通讯,异步通讯可以采用正逻辑或负逻辑,异步通讯的信息格式,起始位逻辑01位,数据位逻辑0或15位、6位、7位、8位,校验位逻辑0或11位或无,停止位逻辑11位、1.5位或2位,空闲位逻辑1任意数量,异步通讯,例:传送8位数据45,H(0100,0101B),,奇校验,1个停止位,则信号线上的波形为,同步通讯 (速度快,对时钟要求严格),靠同步字符完成收发双方同步,多个字符成组传送,在每组信息的开始,加上同步字符,字符组和同步字符以及需要的其他字符构成一个信息帧,同步字符 字符1 字符2 字符,n,校验字符,数据块,串行通信的接口标准,在串行通信中,,DTE,和,DCE,之间的连接要符合接口标准,计算机通信中使用最普遍的是,RS-232C,标准,PC,机上的,COM1、COM2,接口,就是,RS-232C,接口,使用9针和25针连接器,串行通信的接口标准,串行通信的接口标准 (,P299),TDX,发送,RDX,接收,SG,信号地,DSRDCE,准备好,DTRDTE(,即微机接口电路,如8250/8251)准备好,RTSDTE,请求,DCE,发送,CTSDCE,允许,DTE,发送,该信号是对,RTS,信号的回答。,DCD,数据载波检出,当本地,DCE,收到对方的,DCE,设备送来的载波信号时,使,DCD,有效,通知,DTE,准备接收,并且由,DCE,将接收到的载波信号解调为数字信号,经,RXD,线送给,DTE。,RI,振铃信号,当,DCE,收到交换机送来的振铃呼叫信号时,使该信号有效,通知,DTE,已被呼叫。,串行通信的接口标准,RS-232-C,采用负逻辑,且信号电平与,TTL,不兼容,串行接口芯片8250、8251均使用,TTL,电平,应使用电平转换电路与,RS-232C,连接器连接,。,MC1488:TTL,电平,RS232,电平 (用于发送方),MC1489:TTL,电平,RS232,电平 (用于接收方),RS-232C,标准,外形为,25,针或,9,针的,D,型连接器,通信速率:波特率,Baud(,符号数,/s),100,、,300,、,600,、,1200,、,2400,、,4800,9600,、,19.2K,、,33.6K,、,56K,信号电平:,逻辑“,1”,:,-3V,-15V,逻辑“,0”,:,+3V,+15V,TTL,电平与,RS232,电平转换:,TTLRS232: MC1488,RS232TTL: MC1489,RS-232C,主要引脚的功能,信号时序(接收),设备握手,DTR,:,PCM,(保持,表示,PC,已可以工作),DSR,:,PCM,(保持,表示,M,已可以工作),监视载波信号,DCD,:,PCM,载波(表示数据链已建立),接收数据,RD,:,PCM,数据调制信号,结束通信,DCD,消失、,PC,撤除,DTR,、,Modem,撤除,DSR,信号时序(发送),设备握手,DTR,:,PCM,(保持),DSR,:,PCM,(保持),请求发送,RTS,:,PCM,(保持),,M,载波,在对方产生,DCD,CTS,:,PCM,(保持),发送数据,TD,:,PCM,数据调制信号,结束通信,PC,撤除,RTS/DTR,Modem,撤除,CTS/DSR,,停止发送载波,串行通信的接口标准,串行通信的接口标准,采用,Modem(DCE),和电话网通信时的信号连接,串行通信的接口标准,采用专用线通讯时的信号连接,串行通信的接口标准,无,Modem,的标准连接,串行通信的接口标准,无,Modem,的最简连接,串行通信的接口标准,无,Modem,时,最大通讯距离的计算:,RS-232C,标准规定:当误码率小于4%时,要求导线的电容值应小于2500,PF。,普通导线的电容值约为170,PF/M。,则允许距离,L=2500PF/(170PF/M)=15M,三、可编程串行通信接口8251,A,通过编程,可以实现异步通讯协议或面向字符的同步通讯协议,波特率:同步方式下:0-64,Kbps;,异步方式下:0-19.2,Kbps。,同步方式下,每字符为58位,能自动检测同步字符,自动添加奇偶校验。,异步方式下,每字符可为58位,自动增加1位起始位、1,1.5或2位停止位和校验位。,8251,A,的引脚(,p311),8251,A,的内部框图(,P311),8251,A,的内部结构框图,8251的结构,模式寄存器,:决定工作于同步或异步模式以及接收和发送的字符格式,同步字符寄存器,:存放同步模式下的同步字符,8251的引脚信号,C/D#:,该信号一般连至地址线,A0,,用于选择控制端口/数据端口。数据输入输出寄存器合用一个端口,控制寄存器与状态寄存器合用一个端口。,TxE,:,通知,CPU,发送移位寄存器空。此时,在状态寄,存器的,TxE,位置1。,CPU,可以查询,TxE,信号或状态寄存器的,TxE,位,TxRDY,:,告诉,CPU,8251,已准备好发送,,CPU,可以为其提供需要发送的字符,RxRDY,:,通知,CPU,8251,已从外部设备收到一个字符,等待,CPU,读取。,CPU,可以查询该信号,或把该信号作为中断请求信号。,SYNDET:,同步检测信号,只用于同步方式,TXC、RXC:,8251,没有内置的波特率发生器,必须由外部产生建立波特率的时钟信号,,TXC、RXC,通常与8253连接,具体的时钟频率通过编程来设定。,8251的命令字与初始化编程,模式寄存器的格式,8251的命令字与初始化编程,控制寄存器与状态寄存器的格式,8251的命令字与初始化编程,8251与,CPU,的数据交换,查询方式/中断方式,采用查询方式,在数据交换前应读取状态寄存器。,状态寄存器,D0=1,CPU,可以向8251数据端口写入数据,完成串行数据的发送,状态寄存器,D1=1,CPU,可以从8251数据端口读出数据,完成一帧数据的接收,8251的命令字与初始化编程,流程,串行通信应用,MOV DX,209H,MOV AL,40H;,复位命令。,OUT DX,AL,MOV AL,01001110B;,模式字,异步,波特率因子16, 1起始位,1停止位,无奇偶校验,每字符8位。,OUT DX,AL,MOV AL,0011,0111B ;,控制字,允许发送和接收,数据终端准备好,OUT DX,AL,MOV CX,256;,发送256字节,NEXT:,MOV DX 209H,IN AL,DX;,状态字,AND AL,01H;TXRDY?,JZ NEXT,MOV AL,CL,MOV DX,208H,OUT DX,AL;,发送,LOOP NEXT,发送程序,8251编程示例,例1:编写8251异步模式下的接收和发送程序,完成256个字符的发送和接收,设端口地址:208,H,209H,,波特率因子16,1起始位,1停止位,无奇偶校验,每字符8位。,接收程序,接收256字节,放在,buf,中,Data segment,buf,DB 256 dup(?),Data ends,MOV DX,209H,MOV AL,40H;,复位,OUT DX,AL,MOV AL,0100,1110B;,模式字,OUT DX,AL,MOV AL,0011,0111B;,控制字,OUT DX,AL,MOV CX,256;,接收256字节,MOV SI,0,NEXT:,MOV DX,209H,IN AL,DX;,状态字,AND AL,02H; RXRDY?,JZ NEXT,MOV DX,208H,IN AL,DX;,接收1字符,MOV,bufSI,AL,INC SI,LOOP NEXT,串行通信应用2,发送端程序:,SNDINI:MOV DX,CTRL8251,MOV AL,7FH ;,将8251,A,定义为异步方式,,OUT DX,AL ;8,位数据,1位停止位,偶校验,,MOV AL,11H ;,取波特率系数为
展开阅读全文