版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章并行输入/输出技术4.1并行接口基本概念4.2简单并行I/O接口-
82124.3可编程并行I/O接口-
8255A
目录4.1并行接口基本概念1.并行接口并行通信由并行接口来完成的,在并行数据传输中并行接口连接CPU与并行外设的通道,并行接口中各位数据都是并行传输的,它以字节(或字)为单位与I/O设备或被控对象进行数据交换。并行通信以同步方式传输,其特点是:传输速度快;硬件开销大;只适合近距离传输。4.1并行接口概念基本结构接口电路的基本结构数据线控制线状态线DBCBAB数据输入寄存器(or三态门)数据输出寄存器(锁存器)状态寄存器(or三态门)命令寄存器译码电路控制逻辑基本结构数据输入/输出寄存器——暂存输入/输出的数据命令寄存器——存放控制命令,用来设定接口功能、工作参数和工作方式。状态寄存器——保存外设当前状态,以供CPU读取。一个并行接口中包括:图4.1状态信息控制信息数据信息。并行接口传输速率高,一般不要求固定格式,但不适合长距离数据传输串并接口⑴状态信息
图4.1
状态信息表示外设当前所处的工作状态。例如,准备好信号表示输入设备已经准备好信息,可以和CPU交换数据;忙信号(BUSY)表示输出设备正在输出信息,即在“忙”着,同时也等于指示CPU要处于等待状态。⑵控制信息控制信息是由CPU发出的,用于控制外设接口的工作方式以及外设的启动和停机信息等。⑶数据信息
图4.1CPU与并行外设数据交换的内容。状态信息、控制信息和数据信息,通常都是通过数据总线传送,这些信息在外设接口中分别存取在不同的口中。所谓口是指可以由CPU读、写的寄存器,这些口分别是状态口、控制口和数据口,它们分别用来存放状态信息、控制信息和数据信息。对于一个外设接口,常常需要几个口才能满足和协调外部设备的工作与要求,图4.1是一个典型的并行接口与CPU、外设的连接图。图4.1并行接口与CPU、外设的连接图4.12.并行接口的组成
图4.1⑴状态寄存器状态寄存器用来存放外设的信息,CPU通过访问这个寄存器来了解某个外设的状态,进而控制外设的工作,以便与外设进行数据交换。⑵控制寄存器并行接口中有一个控制寄存器,CPU对外设的操作命令都寄存在控制寄存器中。2、并行接口组成⑶数据缓冲寄存器
图4.1
在并行接口中还设置了输入缓冲寄存器和输出缓冲寄存器,缓冲器是用来暂存数据。因为外设与CPU交换数据,CPU的速度远远高于外设的速度。例如,打印机的打印速度与CPU的速度相差的远不止是一个数量级,在并行接口中设置缓冲器,把要传送的数据先放入缓冲器中,打印机按照安排好的打印队列进行打印,这样可以保证输入,输出数据的可靠性。
3.数据输入过程
图4.1
数据输入过程,指的是外设向CPU输入数据。①当外设将数据通过数据输入线送给接口时,先使状态线“输入数据准备好”为高电平。然后通过接口把数据接收到输入缓冲寄存器中,同时把“输入回答”信号置成高电平“1”,并发给外设。②外设接到回答信号后,将撤消“输入数据准备好”的信号。当接口收到数据后,会在状态寄存器中设置“准备好输入”状态位,以便CPU对其进行查询。3、数据输入过程
③接口向CPU发出一个中断请求信号,这样CPU可以用软件查询方式,也可以用中断的方式将接口中的数据输入到CPU中。④CPU在接收到数据后,将“准备好输入”的状态位自动清除,并使数据总线处于高阻状态。准备外设向CPU输入下一个数据。图4.1
4.数据输出过程
图4.1
数据输出过程,指的是CPU向外设输出数据。①当外设从接口接收到一个数据后,接口的输出缓冲寄存器“空”,使状态寄存的“输出数据准备好”状态位置成高电平“1”,这表示CPU可以向外设接口输出数据,这个状态位可供CPU查询。②此时接口也可向CPU发出一个中断请求信号,同上面的输入过程相同,CPU可以用软件查询方式,也可以用中断的方式将CPU中的数据通过接口输出到外设中。当输出数据送到接口的输出缓冲寄存器后,再输出到外设。4、数据输出过程
③与此同时,接口向外设发送一个启动信号,启动外设接收数据。外设接收到数据后,向接口回送一个“输出回答”信号。④接口电路收到该信号后,自动将接口状态寄存器中的“准备好输出”状态位重新置为高电平“1”,通知CPU可以向外设输出下一个数据。
图4.1三态门:高电平、低电平、高阻态
通常一个器件中包含8个三态门常用芯片:74LS244
应用例子:开关接口工作波形图如下:例用三态门实现输入输出A0~A15IOR#译码输出D0~D7开关状态地址有效例1:74LS24483FCH~83FFH译码器例2:74LS273锁存器:由D触发器构成通常一个器件包含8个D触发器常用芯片:74LS27374LS374(具有三态输出的锁存器)应用例子:发光二极管接口译码器=1=1.........+5VRD0|D7CPQ0Q7...D0~D7A0~A15IOW#R例3:综合应用根据开关状态在7段数码管上显示数字或符号共阳极7段数码管结构用74LS273作为输出接口,把数据送到7段数码管74LS273的地址假设为F0H用74LS244作为输入口,读入开关K0~K3的状态74LS244的地址假设为F1H当开关的状态分别为0000~1111时,在7段数码管上对应显示’0’~’F’(7段码表见下页)例3:综合应用
符号形状7段码.gfedcba符号形状7段码.gfedcba’0’00111111’8’01111111’1’00000110’9’01100111’2’01011011’A’01110111’3’01001111’B’01111100’4’01100110’C’00111001’5’01101101’D’01011110’6’01111101’E’01111001’7’00000111’F’01110001例3:综合应用O1I1O2I2O3I3O4I4E1#
K0~K3+5VGG2AG2BCBA≥174LS244D0Q0|Q1D7Q2Q3Q4CPQ5Q6Q7
abcdefgDP7406反相器74LS273Rx8≥174LS138D0~D7IOW#IOR#Y0Y1F0H=0000000011110000F1H=0000000011110001&≥1A7~A4A15~A8A3A2A1A0D0D1D2D3译码器例3:综合应用相应程序段如下:
……Seg7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,67H,77H,7CH,39H,5EH,79H,71H …… LEA BX,Seg7 ;取7段码表基地址
MOV AH,0GO: MOV DX,0F1H ;开关接口的地址为F1H IN AL,DX ;读入开关状态
AND AL,0FH ;保留低4位
MOV SI,AX ;作为7段码表的表内位移量
MOV AL,[BX+SI];取7段码
MOV DX,0F0H ;7段数码管接口的地址为F0H OUT DX,AL JMP GO4.3可编程并行I/O接口—8255A并行接口电路,在早期的微机中与串行口、软盘接口、硬盘接口等都放在一块多功能接口卡上,插在微机的扩展槽上使用。现在这部分电路已在微机的主板上由与CPU配套的芯片组来实现其功能。如果要在其他的场合实现并行数据传送,在电路设计时采用专用的接口芯片最为方便。可编程的接口芯片8255A是完成并行通信的集成电路芯片。 图4.24.3可编程接口8255A4.3.18255A的主要特性 图4.2三个可编程的端口(A端口、B端口和C端口)每个端口8条线,共有24条I/O引脚,可分为2组工作,每组12条线,三种工作方式。
可编程是指可通过软件设置芯片的工作方式,因此这个芯片在与外部设备相连接时,通常不需要附加太多的外部逻辑电路,这给用户的使用带来很大方便。4.3.18255A的主要特性1、8255A具有三个可编程的并行输入/输出端口(A端口、B端口和C端口),它们为CPU与外设之间提供了多个8位并行数据通道,并且端口C还具有按位置位/复位功能,为按位控制功能提供了强有力的支持。 图4.22、8255A具有三种工作方式:方式0——基本输入输出方式。方式1——选通输入输出方式方式2——双向选通输入输出方式3、8255A端口C分成两个4位的端口,这两个4位的端口分别作为A端口和B端口的控制信号和输入状态信号使用。方式0——用作数据端口。方式1/2——部分端口被分配作通信联络线 端口C在用作控制端口时,CPU可用置位/复位指令输出控制信号;用作状态端口时,可供CPU读取8255状态4、
8255A能适应CPU与I/O设备之间的多种数据传送方式的要求,如无条件方式、有条件方式、中断方式。 图4.2芯片的主要技术性能如下: 图4.2(1)输入、输出电平与TTL电平完全兼容。
(2)时序特性好。
(3)部分位可以直接置“1”/置“0”,便于实现控制接口使用。
(4)单一的+5V电源。
8255A的内部结构框图如图10.7(a)所示,图10.7(b)为8255A的外引脚图。从图中可以看到,8255A主要由4部分组成。4.3.28255A的内部结构 图4.28255A的内部结构框图如图4.2(a)所示,图4.2(b)为8255A的外引脚图。从图中可以看到,8255A主要由4部分组成。4.3.38255A内部结构图4.28255内部结构和引脚图(a)8255A内部结构;(b)8255A外引脚图图4.2图4.28255内部结构数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET图4.28255A外引脚图1.数据总线缓冲器
图4.2
这是一个双向、三态的8位数据总线缓冲器,是8255A和系统总线相连接的通道,用来传送输入/输出的数据、CPU发出的控制字以及外设的状态信息。总之,8255A与CPU之间的所有信息传输都要经过数据总线缓冲器。1、数据总线缓冲器
2.读写控制逻辑电路
图4.2
这部分电路是用来完成对8255A内部三个数据口的译码工作,由CPU的地址总线A1、A0和8255A的片选信号CS和WR、RD信号组合后产生控制命令,并将产生的控制命令传送给A组和B组的控制电路,从而完成对数据信息的传输控制。8255A的控制信号与执行的操作之间的对应关系如表4-1所示。2、读写控制逻辑电路2)与处理器接口CS*A1A0I/O地址读操作RD*写操作WR*00000101001160H61H62H63H读端口A读端口B读端口C非法写端口A写端口B写端口C写控制字D0~D7数据线 A0~A1地址线RD*读信号 WR*写信号CS*片选信号 RESET复位信号
3.A组控制电路和B组控制电路
图4.2
控制电路分成A组控制和B组控制两组,A组控制电路控制A端口和C端口的高4位(PC4~PC7)。B组控制电路控制B端口和C端口的低4位(PC0~PC3)。这两组控制电路的作用是:由它们内部的控制寄存器接收CPU输出的方式控制命令字,还接收来自读/写控制逻辑电路的读/写命令,根据控制命令决定A组和B组的工作方式和读/写操作。3、AB组控制电路
4.三个独立的数据口
图4.28255A的三个数据口分别是A端口、B端口、C端口,它们彼此独立,都是8位的数据口,用来完成和外设之间的信息交换。三个口在使用上有所不同。
1)A端口
A端口对应一个8位的数据输入锁存器和一个8位的数据输出锁存器和缓冲器。因此A端口适合用在双向的数据传输场合,用A端口传送数据,不管是输入还是输出,都可以锁存。4、三个独立的数据口
2)B端口和C端口
图4.2
这两个口分别是由一个8位的数据输入缓冲器和一个8位的数据输出锁存器和缓冲器组成。因此用B端口和C端口传送数据作输出端口时,数据信息可以实现锁存功能;而用作输入口时,则不能对数据实现锁存,这一点在使用中要注意。在实际应用中,A端口和B端口通常作为独立的输入口和输出口,而C端口常用来配合A端口和B端口的工作使用。C端口分成两个4位的端口,这两个4位的端口分别作为A端口和B端口的控制信号和输入状态信号使用。1)外设数据端口端口A:PA0~PA7A组,支持工作方式0、1、2端口B:PB0~PB7B组,支持工作方式0、1端口C:PC0~PC7仅支持工作方式0A组控制高4位PC4~PC7B组控制低4位PC0~PC3端口A:PA0~PA7常作数据端口,功能最强大端口B:PB0~PB7常作数据端口端口C:PC0~PC7可作数据、状态和控制端口分两个4位,每位可独立操作控制最灵活,最难掌握4.3.38255A的外部特性
图4.28255A是40条引脚的双列直插式芯片,引脚排列如图4.2(b)所示。单一的+5V电源,使用时要注意它的+5V电源引脚是第26脚,地线引脚是第7脚,它不像大多数TTL芯片电源和地线在右上角和左下角的位置,除了电源和地线之外,其他引脚的信号按连接的功能可分为两大组。4.3.38255A外部特性
1.与CPU接口的信号线(引脚) 图4.2
D7~D0
(27~34PIN):双向三态8位数据线,与系统的数据总线相连接。
A1、A0
(8,9PIN):端口译码信号。用来选择8255A内部的三个数据端口和一个控制端口的地址。其中对控制口只能进行写操作。
(1)当A1A0=00时,选中A端口。
(2)当A1A0=01时,选中B端口。
(3)当A1A0=10时,选中C端口。
(4)当A1A0=11时,选中控制端口。
A1、A0与读/写信号组合对各端口所执行的操作如表4-1所示。1、与CPU接口信号线
RESET(35PIN):芯片的复位信号,高电平时有效。复位后把8255A内部的所有寄存器都清0,并将三个数据口自动设置为输入口。
CS(6PIN):片选信号,低电平时有效。只有当CS=0时,芯片被选中,才能对8255A进行读、写操作。
RD(5PIN):读信号,低电平有效。只有当CS=0,RD=0,才允许从8255A的三个端口中读取数据。
WR(36PIN):写信号,低电平有效。只有当CS=0,WR=0,才允许从8255A的三个端口写入数据或者是写入控制字。表4-18255A的控制信号与执行的操作之间的对应关系A1A0执行的操作000000000010101011101x1010100011x000001011010111111xxxx读A端口(A端口数据→数据总线)写A端口(A端口←数据总线数据)读B端口(B端口数据→数据总线)写B端口(B端口←数据总线数据)读C端口(C端口数据→数据总线)写C端口(C端口←数据总线数据)当D7=1时,对8255A写入控制字当D7=0时,对C端口置位/复位非法的信号组合数据线D7~D0进入高阻状态未选择表4-1
8255A的数据线为8条,这样8位的接口芯片在与8086外部数据线为16条的CPU相连接时,应考虑接口芯片本身对地址的要求。由于在8086这样的16位外部总线系统中,CPU在进行数据传输时,低8位对应一个偶地址,高8位对应一个奇地址。如果将8255A的数据线D7~D0与8086CPU的数据总线的低8位相连的话,从CPU这边看来,要求8255A的4个端口地址都应为偶地址,这样才能保证对8255A的端口的读/写能在一个总线周期内完成,但又要满足8255A本身对4个端口规定的地址要求是00,01,10,11。因此将8255A的A1和A0分别与8086系统总线的A2和A1相连,而将最低位A0总设置为0。2.和外设端相连的引脚
图4.2PA7~PA0
(37~40PIN,l~4PIN):A端口的输入/输出引脚PB7~PB0
(25~18PIN):B端口的输入/输出引脚PC7~PC0
(10~13,17~14PIN):C端口的输入/输出引脚2、和外设端相连接的引脚4.3.48255A的控制字由CPU执行输出指令,向8255A的端口输出不同的控制字来决定它的工作方式。控制字分为两种,分别称为方式选择控制字和端口C置1/置0控制字。根据控制寄存器的D7位的状态决定是哪一种控制字。
1.方式选择控制字方式选择控制字用来决定8255A三个数据端口各自的工作方式,它的格式如图4.3所示。它由一个8位的寄存器组成。4.3.48255A的控制字图4.38255A的方式选择控制字图4.3图4.3
D7位为“1”时,为方式选择控制字的标识位。图4.3
D6、D5位决定A端口的工作方式,D6D5位为00、01、1x时分别表示A端口工作在方式0、方式1和方式2下。
D4位决定A端口工作在输入还是输出方式。D4位为0时,A端口工作在输出方式;D4位为1时,A端口工作在输入方式。
D3位决定用于A端口的C端口高4位PC7~PC4是作为输入端口,还是作为输出端口。D3位为0时,PC7~PC4作输出;D3位为1时,PC7~PC4作输入。
D2位用来选择B端口的工作方式。D2位为0时,B端口工作在方式0,D2位为1时,B端口工作在方式1。
D1位决定B端口作为输入还是输出端口。D1位为1时B端口工作在输入方式;D1位为0时B端口工作在输出方式。
D0位决定用于B端口的C端口低4位PC3~PC0作为输入,还是输出。D0位为0时,PC3~PC0作输出;D0位为1时,PC3~PC0作输入。图4.3
如果要求8255A的A端口作输入,B端口和C端口作输出,A组工作在方式0,B组工作在方式1,用三条指令可完成对芯片工作方式的选择。MOV AL,94H ;方式选择控制字送ALMOV DX,PortCtr
;控制端口地址PortCtr送DXOUT DX,AL ;方式选择控制字输出给8255A的控制端 口,完成方式选择10010100B=94H 图4.3例:某系统要求使用8255的A口工作于方式1作输入,B口工作于方式0作输出,C口上半部输入,下半部输出。8255端口地址为60H-63H。控制字为:10111000B=0B8H初始化程序为:
MOVAL,0B8H
OUT63H,AL
2.C端口置1/置0控制字
图4.38255A在和CPU传输数据的过程中,经常将C端口的某几位作为控制位或状态位来使用,从而配合A端口或B端口的工作。为了方便用户,在8255A芯片初始化时,C端口置1/置0控制字可以单独设置C端口的某一位为0或某一位为1。控制字的D7位为“0”时,是C端口置1/置0控制字中的标识位,具体的格式如图4.4所示。2、C端口置01控制字对端口C的数据输出有两种办法:通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器图4.48255A的C端口置1/置0控制字图4.4图4.4
D6~D4位可为任意值,不影响操作。D3~D1位用来决定对C端口8位中的哪一位进行操作。D0位用来决定对D3~D1所选择的位是置1,还是置0。图4.4
例如,要将C端口的PC3置0,PC7置1,可用下列程序段实现。MOV AL,06H ;PC3置0控制字送ALMOV DX,PortAdd
;控制端口地址PortAdd送DXOUT DX,AL ;对PC3完成置0操作MOV AL,0FH ;PC7置1控制字送ACOUT DX,AL ;完成对PC7置1操作例:(接上例)若A口工作于方式1作输入,要使用中断传送方式,则应当写PC4的按位置位字。控制字为:00001001B=09H
MOVAL,00001001B
OUT63H,AL
4.3.58255A初始化编程
图4.3 8255片地址为300H【例4.1】按下述要求对8255A进行初始化。A=方式0输出;B=方式1输入;CH=输入;CL=输出。 根据要求则控制字=10001110B=8EHMOV DX,303H ;控制端口地址MOV AL,08EH ;工作方式控制字OUT DX,AL ;送到控制端口4.3.58255A初始化编程【例4.2】按下述要求对8255A的C口进行初始化。PC0=1。
根据要求则控制字=00000001B=01H
图4.4MOV DX,303H ;控制端口地址MOV AL,01H ;使PC0=1的控制字OUT DX,AL ;送到控制端口;PC0=0MOV DX,303H ;控制端口地址MOV AL,00H ;使PC0=0的控制字OUT DX,AL ;送到控制端口【例4.3】要求对PA7、PA6位进行置位/复位输出,不改变A口其它位的原来状态。(使用‘或’和‘与’操作)图4.3;PA7、PA6位置位11000000B=C0HMOV DX,300H ;A口地址IN AL,DX ;读入A口原输出值MOV AH,AL ;保存原输出值到AHOR AL,0C0H ;使PA6=PA7=1OUT DX,AL ;同时输出到PA6、PA7…..MOV AL,AH ;恢复原输出值OUT DX,AL ;送到A口;PA7、PA6位复位00111111B=3FH 图4.3MOV DX,300H ;A口地址IN AL,DX ;读入A口原输出值MOV AH,AL ;保存原输出值到AHAND AL,03FH ;使PA6=PA7=0OUT DX,AL ;同时输出到PA6、PA7…..MOV AL,AH ;恢复原输出值OUT DX,AL ;送到A口4.3.68255A的三种工作方式
8255A有三种工作方式,分别称为方式0,方式1和方式2。其中A端口可以工作在三种方式中的任一种;B端口只能工作在方式0和方式1;C端口通常作为控制信号使用,配合A端口和B端口的工作。每种工作方式的具体内容如下所述。4.3.68255A的三种工作方式1.方式0——基本的输入/输出方式方式0之所以被称为基本的输入/输出方式,是因为在这种方式下,A端口、B端口和C端口(C端口分为2个4位使用)都可提供简单的输入和输出操作,对每个端口不需要固定的应答式联络信号。工作在方式0时,在程序中可直接使用输入指令(IN)和输出(OUT)指令对各端口进行读写。方式0的基本定义是2个8位的端口和2个4位的端口。任何一个端口都可以作为输入或输出,输出的数据可以被锁存,输入的数据不能锁存。适用于无条件传送和查询方式的接口电路1、方式0
方式0一般用于无条件传送的场合,不需要应答式联络信号,外设总是处于准备好的状态。也可以用作查询式传送,查询式传送时,需要有应答信号。可以将A端口、B端口作为数据口使用。把C端口分为2部分,其中4位规定为输出,用来输出一些控制信息,另外4位规定为输入,用来读入外设的状态。利用C端口配合A端口和B端口完成查询式的I/O操作。方式0输入时序datadata输入端口D0~D7RDCS,A1,A0方式0输出时序WRdatadata输出端口D0~D7CS,A1,A01)无条件输入输出
CPU始终认为I/O设备处于准备就绪状态。不需要应答式联络信号。片地址=300H【例】PB=方式0输出接发光二极管,PA=方式0输入接开关,如下图4.5所示,要求开关闭合(接地)则对应亮,反之则熄。;PA、PB端口初始化10010000B=90H 图4.3MOV DX,303H ;控制口地址MOV AL,90H ;控制值OUT DX,AL ;控制值到控制口;循环检测输入状态,根据输入改变输出状态LOP: MOV DX,300H ;A口地址
IN AL,DX ;输入A口开关状态
MOV DX,301H ;B口地址
OUT DX,AL ;输出到B口发光二极管
JMP LOP ;循环检测说明:开关闭合时,PA?=0PB?=0,则发光二极管亮
;开关闭合则不发光,开关断开则发光
XOR AL,0FFH ;将输入反相
OUT DX,AL ;输出到B口发光二极管‘XOR为异或,相同为零,相异为1图4.5无条件输入输出硬件连线图图4.52)有条件(查询)输入输出
PC口可分别作为查询用的控制和状态线,不过这时的控制状态和状态线不是固定方式(方式1中是固定的),由程序来确定。2.方式1——选通输入/输出方式在这种方式下,当A端口和B端口进行输入输出时,必须利用C端口提供的选通和应答信号,而且这些信号与C端口中的某些位之间有着固定的对应关系,这种关系是硬件本身决定的不是软件可以改变的。由于工作在方式l时,要由C端口中的固定位来作为选通和应答等控制信号,因此称方式1为选通的输入/输出方式。方式1的基本定义是,分成2组(A组和B组),每组包含一个8位的数据端口和1个4位的控制/数据端口。8位的数据端口既可以作为输入,也可以作为输出,输入和输出都可以被锁存。4位的控制/数据端口用于传送8位数据端口的控制和状态信息。适用于查询和中断方式的接口电路2、方式11)选通的输入方式(方式1输入)方式1在选通输入方式下对应的控制信号如图4.6所示。图4.7是方式1在选通输入方式的工作时序图。选通输入方式的工作过程是:当外设的数据已送到8255A某个端口的数据线上时,就发出选通输入信号STB,将数据通过A端口或B端口锁存到8255A的数据输入寄存器,STB信号的宽度至少是500ns。STB信号变低后最多经过300ns时间,使输入缓冲器满信号IBF变为高电平,如图4.7中表示的箭头①。1)选通输入输入缓冲器满意味着将阻止外设输入新的数据,可供CPU来查询。在选通输入信号结束后,最多经过300ns时间,向CPU发出中断请求信号(要在中断允许的情况下),如图4.7中表示的箭头②,使中断请求信号INTR变高,CPU可以响应中断。当CPU响应中断后才发出读信号RD,将数据读入到CPU中,读信号有效(低电平为有效)后,最多经过400ns时间,RD就清除中断请求,使中断请求信号变低,如图4.7中表示的箭头③。当读信号结束后,才使输入缓冲器满信号IBF变低,如图4.7中表示的箭头④。IBF变低表明输入缓冲器已空,通知外设可以输入新的数据。方式1输入引脚:A端口数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA中断允许触发器方式1输入引脚:B端口PC2PC1PC0PB7~PB0INTEBIBFBINTRBSTBB数据选通信号表示外设已经准备好数据输入缓冲器满信号表示A口已经接收数据中断请求信号请求CPU接收数据中断允许触发器方式1需借用端口C用做联络信号同时还具有中断请求和屏蔽功能方式1输入联络信号STB——选通信号,低电平有效由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF——输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR——中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据方式1输入时序dataINTRIBF
data输入端口D0~D7STBRDSTB*和IBF是外设和8255A间的一对应答联络信号,为的是可靠地输入数据方式1中断控制8255A的中断由中断允许触发器INTE控制置位允许中断,复位禁止中断对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器选通输入方式下端口A的INTEA对应PC4端口B的INTEB对应PC2图4.6方式1选通输入下对应的控制信号(a)对A端口;(b)对B端口图4.6端口结构图4.78255A方式l输入时序图4.7时序表4-48255A方式1输入时序参数说明参数说明8255A最小时间/ns最大时间/nstST选通脉冲的宽度500
tSIB选通脉冲有效到IBF有效之间的时间
300tSIT
=1到中断请求INTR有效之间的时间
300tPH数据保持时间180
tPS数据有效到无效之间的时间0
tRIT有效到中断请求撤除之间的时间
400tRIB为1到IBF为0之间的时间
300表4-4当8255A的A端口和B端口工作在选通输入方式时,对应的C端口固定分配,规定是PC3~PC5分配给A端口,PC0~PC2分配给B端口,C端口剩下的2位PC7、PC6可作为简单的输入/输出线使用。控制字的D3位为“1”时,PC7、PC6作输入;控制字的D3位为“0”时,PC7、PC6作输出。图4.6在方式1选通输入方式时,各控制信号的意义如下:
STB(Strobe):选通输入信号,低电平有效。A组方式控制字中对应PC4;B组方式控制字中对应PC2。当该信号有效时,从外部设备来的8位数据送入到8255A的输入缓冲器中,负脉冲宽度最小是500ns。图4.7
IBF(InputBufferFull):输入缓冲器满信号,高电平有效。A组方式控制字中对应PC5;B组方式控制字中对应PC1。这是8255A送给外设的联络信号,当8255A的输入缓冲区已有一个新数据后,输出这个信号供CPU查询。该信号在选通输入信号STB变低后,300ns时间内即变为有效的高电平。在RD信号撤消后的300ns时间内IBF信号才撤消,变为无效的低电平,这样保证了数据传输的可靠性。图4.7
图4.6
INTR(InterruptRequest):中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。这是8255A向CPU发出的中断请求信号。当STB信号撤消变为高电平后最多300ns时间内,并且IBF信号也为高电平,INTR信号产生变为有效的高电平。INTR信号变高后可以请求CPU读取数据。当CPU发出的RD信号有效后,400ns的时间内INTR信号将撤消,变为低电平。 图4.7
图4.6
INTE(InterruptEnable):中断允许信号,高电平有效。该信号为高时,允许中断请求,为低时则屏蔽中断请求。INTE的状态是用软件通过由C端口置1/置0控制字来控制的,在A组中,使PC4置“1”后INTEA变高;在B组中,使PC2置“1”后INTEB变高,A端口和B端口才允许中断。如果PC4和PC2都置“0”,与之对应的INTE信号为低,则禁止中断。图4.7
图4.6
对于这种选通的输入方式,如果采用查询式输入时,CPU先查询8255A的输入缓冲器是否满了,也就是IBF是否为高?如果输入缓冲器满信号IBF为高,则CPU就可以从8255A读入数据。如果采用中断方式传送数据时,应该先用C端口置1/置0的控制字使相应的端口允许中断,也就是要使PC4或PC2置1。输入控制信号分配表信号A组B组功能说明STBPC4PC2输入选通0=输入数据←IBFPC5PC1输入满1=已接收数据→INTEPC4PC2中断允许1=允许发出中断INTRPC3PC0中断请求1=中断信号→→:表示为输出信号 ←:表示为输入信号 图4.7
图4.6控制信号分配表
2)选通的输出方式(方式1输出)方式1在选通输出情况下对应的控制信号如图4.8所示,图4.9是方式1选通输出情况下的工作时序图。这种方式的工作过程与选通输入的情况相类似。2)选通输出方式1输出引脚:A端口外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA中断允许触发器方式1输出引脚:B端口PC2PC1PC0PB7~PB0INTEBOBFBINTRBACKB外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器方式1输出联络信号OBF——输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK——响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR——中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据端口A的INTEA对应PC6端口B的INTEB对应PC2方式1输出时序
INTR
datadata输出端口D0~D7WROBFACK
OBF*和ACK*是外设和8255A间的一对应答联络信号,为的是可靠地输出数据图4.8方式l输出时C端口对A、B端口的控制(a)对A端口;(b)对B端口图4.8端口结构图4.98255A方式1输出时序图4.9时序当8255A的A端口和B端口工作在选通输出方式时,对应的C端口也是固定分配,规定是PC3、PC6、PC7分配给A端口;PC2、PC1、PC0分配给B端口,剩下的2位PC4、PC5可作为简单的输入/输出线使用。当控制字的D3位为“1”时,PC4、PC5作输入;当控制字的D3位为“0”时,PC4、PC5作输出。图4.8方式1选通输出方式时,各控制信号的意义如下:
OBF(OutputBufferFu11):输出缓冲器满信号,低电平有效。A组方式控制字中对应PC7;B组方式控制字中对应PC1,这是8255A与外设的联络信号。当CPU向8255A的端口中传送了数据以后,由8255A向外设发出低电平的OBF信号,通知外设可以把数据取走。由输出指令产生的写信号WR的上升沿出现后,最多经过650ns时间,将OBF信号置成有效即变为低电平,如图4.9中表示的箭头②。当应答信号ACK变为有效的低电平后350ns时间,OBF信号撤消变为高电平,如图4.9中表示的箭头③。表4-58255A方式1输出时序参数说明参数说明8255A最小时间/ns最大时间/nstWIT从写信号有效到中断请求无效的时间
850tWOB从写信号无效到输出缓冲器清的时间
650tAOB有效到无效的时间
350tAK脉冲的宽度300
tAIT为1到发新的中断请求的时间
350tWB写信号撤除到数据有效的时间350表4-5
ACK(Acknowledge):数据接收应答信号,低电平有效。A组方式控制字中对应PC6;B组方式控制字中对应PC2,这是外设的响应信号,当CPU输出给8255A的数据已由外设接收后,外设就向8255A回送一个低电平的应答信号ACK。
INTR:中断请求信号,高电平有效。A组方式控制字中对应PC3;B组方式控制字中对应PC0。当外设已经接受了CPU输出的数据后,由8255A向CPU发出中断请求,要求CPU输出新的数据。当ACK撤消后为高电平,OBF也为高电平,中断允许信号INTE也为高时,INTR中断请求信号被置位为高电平,如图4.9中表示的箭头④。作为请求CPU进行下一次数据输出的中断请求信号,是在WR有效的下降沿出现后850ns时间内使它变为无效的低电平,如图4.9中表示的箭头①。
INTE:中断允许信号,高电平有效。当该信号为“1”时,允许中断,为“0”时,A端口(B端口)处于中断屏蔽状态,即不发出中断请求信号INTR。在使用时,中断允许信号INTE是用软件通过对C端口置1/置0的控制字来设置的。当PC6置1时,A端口允许中断;PC2置1,B端口允许中断。反之,如果A、B端口所对应的PC6、PC2置0时,则处于中断屏蔽状态,即不允许中断。图4.9当8255A工作在方式l输出选通方式时,一般是采用中断方式与CPU通信。从图4.9方式1输出工作时序图中可以看到,CPU响应中断以后,就向8255A输出数据,写信号出现。当写信号WR撤消,其上升沿一方面撤消中断请求信号INTR,如图4.9中表示的箭头①使INTR变低,表示CPU对上一次中断已经响应过。另一方面使OBF信号变为有效的低电平,如图4.9中表示的箭头②,以通知外设可以接收下一个数据。实际上,CPU在发出写信号后要经过最长350ns时间,数据才能出现在端口的输出缓冲器中。当外设收到数据后,便发出一个ACK信号,ACK信号有效后使OBF变成无效的高电平,如图04.09中表示的箭头③,表示数据已经取走,当前缓冲器空。ACK信号结束时使INTR信号变为有效的高电平,如图4.9中表示的箭头④,向CPU发出中断请求信号,从而开始新的数据输出过程。输出控制信号分配表信号A组B组功能说明OBFPC7PC1输出满0=输出满→ACKPC6PC2回答0=外设接收数据←INTEPC6PC2中断允许1=允许发出中断INTRPC3PC0中断请求1=中断信号→→:表示为输出信号←:表示为输入信号 图4.8控制信号分配表【例4.5】用8255A为两台8086单板机设计一并行数据传送接口。 要求:甲机为方式1发送数据(输出) 乙机为方式1接收数据(输入) 采用查询方式交换数据 发送和接收数军存放在内存中,长度2KB1)硬件连线(见下图4.10)2)软件设计例4.5图4.108086单板机并行数据传送接口电路 图4.10;甲机发送程序 图4.10 MOV AX,100H ;发送数据存放的段地址
MOV DS,AX ;
MOV BX,0H ;数据段内位移量
MOV CX,800H ;数据块长度
MOV DX,313H ;控制口地址
MOV AL,0A0H ;控制方式字(方式1输出A)
OUT DX,AL ;送到控制口
MOV AL,0FH ;置PC7=1OBF=1 OUT DX,AL ;输出缓冲器空WAT1: MOV DX,302H ;C口地址
IN AL,DX ;读入C口值
AND AL,80H ;检查OBF的值
JZ WAT1 ;0=乙机未取走数据,等待
MOV DX,300H ;A口地址
MOV AL,[BX] ;从内存中取数据
OUT DX,AL ;从A口发送到乙机
INC BX ;修改内存单元地址
LOOP WAT1 ;块长度-1≠0继续
HLT ;传送完毕,暂停 ;乙机接收程序 图4.10 MOV AX,2000H ;发送数据存放的段地址
MOV DS,AX ;
MOV BX,0H ;数据段内位移量
MOV CX,800H ;数据块长度
MOV DX,313H ;控制口地址
MOV AL,0B0H ;控制方式字(方式1输入A)
OUT DX,AL ;送到控制口
MOV AL,0AH ;复位PC5=0IBF=0 OUT DX,AL ;输入缓冲器空WAT2: MOV DX,312H ;C口地址
IN AL,DX ;读入C口值
AND AL,20H ;检查IBF的值
JZ WAT2 ;0=乙机未接收数据,等待
MOV DX,310H ;A口地址
IN AL,DX MOV [BX],AL ;从内存中取数据
INC BX ;修改内存单元地址
LOOP WAT2 ;块长度-1≠0继续
HLT ;传送完毕,暂停
3.方式2——带选通的双向传输方式(A口)
8255A可以向外设发送数据,同时又接收外设的数据,因此称为双向的传输方式。方式2的基本定义是,只能适用于A端口,一个8位的双向端口(A端口)和1个5位的控制端口(C端口)。A端口的输入和输出都可以被锁存。当A端口工作在方式2时,由PA7~PA0作为8位数据线,因为要由C端PC7~PC3口对A端口进行控制,所以称为带选通的双向传输方式。C端口对A端口的控制信号分别如图4.11和图4.12所示。剩下的3位PC2~PC0可作为简单的输入/输出线使用。适用于与双向传送数据的外设适用于查询和中断方式的接口电路3、方式2方式2双向引脚PC6PC7PC3PA7~PA0INTE1OBFAINTRAACKAPC4PC5IBFASTBAINTE2用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号方式2双向时序data-out
INTR
data-outdata-indata-inPA0~PA7D0~D7IBF
WROBFACKSTBRD
STB:选通信号,低电平有效。对应于PC4,由外设提供给8255A。该信号负责把外设送到8255A的数据送入输入锁存器。
IBF:输入缓冲器满信号,高电平有效。对应PC5,是8255A送给CPU的状态信息,供CPU查询用。当该信号有效时,表示当前已经有一个新的数据送到了输入锁存器中,CPU可以取走。
OBF:输出缓冲器满信号,低电平有效。对应PC7,由8255A发给外设的选通信号,当OBF有效时,表明CPU已经将一个数据写入8255A的A端口中,通知外设可以取走数据。图4.12
INTR:中断请求信号,高电平有效。对应PC3,不论A端口工作在输入方式还是工作在输出方式,当一个操作完成,并且要进入下一个操作时,8255A都要向CPU发出中断请求信号。
ACK:数据接收应答信号,低电平有效。对应PC6,这是外设对信号OBF的响应信号,该信号为低电平时,使A端口的输出缓冲器打开,送出数据到外设。否则,当该信号为高电平时,方式2时输出缓冲器处于高阻状态。图4.12图4.11方式2时C端口对A端口的控制信号图4.11
INTEl:输出中断允许信号。当该信号为“1”时,允许8255A向CPU发出由A端口输出数据的中断请求信号。反之,如果该信号为“0”时,即使输出缓冲器空,也不允许8255A向CPU发中断请求信号。INTEl信号的置1或置0,是用软件使C端口的PC6置1或置0来实现的。图4.12
INTE2:输入中断允许信号。当该信号为“1”时,允许8255A中A端口的输入处于中断允许状态,反之,如果该信号为“0”时,A端口的输入处于中断屏蔽状态,即不允许中断。INTE2信号的置1或置0,同样是用软件通过C端口的PC4置1或置0来实现。图4.12通过仔细分析方式2的工作时序图04.12,会发现方式2的时序基本相当于方式1的选通输入时序和选通输出的时序的组合。从图04.12中可以看到,对于输入过程,当外设向A端口送来数据时,选通信号STB也跟着有效变为低电平,选通信号将数据锁存到8255A的A端口的输入锁存器中。同样也正是由于STB信号的变低,才使得输入缓冲器满信号IBF变为高电平,如图04.12中表示的箭头⑦。当选通信号STB结束,也就是变为高电平时,又使中断请求信号INTR有效,变为高电平,如图04.12中表示的箭头⑧。当CPU响应输入中断,执行输入指令时,会产生RD信号,在读信号RD有效期间,将数据从A端口读入到CPU中。当RD信号结束后输入缓冲器满信号IBF又变为低电平,如图4.12中表示的箭头⑨。中断请求信号INTR虽然为高也不再起作用。对于输出过程,当CPU响应中断后,在中断服务程序中执行输出指令时,将发出写脉冲WR,WR的下降沿使中断请求信号INTR变低,如图04.12中表示的箭头①。WR信号结束其上升降沿使输出缓冲器满OBF信号变为有效的低电平,如图4.12中表示的箭头②。OBF信号送到外设,当外设接到OBF信号后,发出应答信号ACK,如图04.12中表示的箭头③。由ACK信号打开8255A的输出缓冲器,使数据出现在A端口和数据总线上,ACK信号结束时使输出缓冲器满信号OBF变为无效的高电平,如图4.12中表示的箭头⑤,从而开始下一个数据传输过程。由于方式2是双向传输的工作方式,如果一个外设既可以作为输入,又可以作为输出时,采用8255A的方式2与它相连就十分方便。图4.128255A方式2时序图4.12表4-68255A方式2时序的参数说明参数说明8255A最小时间/ns最大时间/nstST选通脉冲的宽度500
tPH数据保持时间180
tSIB选通脉冲有效到IBFA有效之间的时间
300tPS
数据有效到无效之间的时间0tWOD从写信号无效到,有效的时间
650tAOD有效到无效的时间
350tAD有效到数据输出的时间
350tHD数据保持时间200
表4-6控制信号分配表信号A组B组功能说明OBFPC7输出满0=输出满→INTE1PC6O中断允许1=允许发出输出中断IBFPC5输入满0=外设接收数据←INTE2PC4I中断允许1=允许发出输入中断INTRPC3中断请求1=中断信号→INTEPC2中断允许1=允许发出中断IBFOBFPC1输/入出满B组方式1INTRPC3PC0中断请求1=中断信号→→:表示为输出信号←:表示为输入信号端口C的状态字端口C的状态字D7D6D5D4D3D2D1D0方式1输入I/OI/OIBFAINTEAINTRAINTEBIBFBINTRB方式1输出OBFAINTEAI/OI/OINTRAINTEBOBFBINTRB方式2双向OBFAINTE1IBFAINTE2INTRA×××A组B组【例4.6】用8255A为主从两台8086单板机设计一双向数据传送接口。 要求:主机以中断方式发送/接收数据(输入/输出) 从机为采用查询方式接收/发送数据(输出/输入)
主机为方式2,从机为方式01)硬件连线(见下图4.13)2)软件设计图4.13主从单板机硬件连线图图4.13;主机程序
MOV DX,313H ;控制口地址
MOV AL,0C0H ;控制方式字(A口方式2)
OUT DX,AL ;送到控制口
MOV AL,09H ;置PC4=1INTE2=1 OUT DX,AL ;允许输入中断
MOV AL,0DH ;置PC6=1INTE1=1 OUT DX,AL ;允许输出中断
MOV SI,2000H ;发送数据块首地址
MOV CX,100 ;发送数据块长度
MOV DI,0H ;接收数据块首地址
MOV BX,80H ;接收数据块长度
STI ;开中断中断服务程序 图4.13 MOV DX,312H ;C口地址
IN AL,DX ;读入C口值
MOV AH,AL ;保存C口值
AND AL,20H ;检查IBF的值
JZ OTH ;0=不是输入中断,等待INP: MOV DX,310H ;A口地址
IN AL,DX ;从A口接收数据
MOV [DI],AL ;保存到内存单元
INC DI ;修改内存单元地址
DEC BX ;修改计数长度
JNZ NEXT ;块长度-1≠0继续接收
JMP DONE ;结束中断服务程序OTH: MOV AL,AH ;恢复C口值
AND AL,80H ;检查OBF的值
JZ NEXT ;0=不是输出中断,等待OUTP: MOV DX,300H ;A口地址
MOV AL,[SI] ;从内存取数据
OUT DX,AL ;从A口发送到从机
INC SI ;修改内存单元地址
DEC CX ;修改计数长度
JNZ NEXT ;块长度-1≠0继续接收
JMP DONE ;结束中断服务程序NEXT: STI ;开中断DONE: IRET ;中断返回;从机程序 图4.13数据发送子程序(A口)SRESU: MOV DX,313H ;控制口地址
IN AL,DX ;读C口值
ROR AL,1 ;循环右移PC0(IBF)→CF JC SRESU ;主机IBF=1,未取走等待
MOV AX,300H ;主机已取走,A口地址
MOV AL,[SI] ;从内存取数据
OUT DX,AL ;从A口发送给主机
….. RET ;子程序结束返回
;从机程序 图4.13数据接收子程序(B口)SREAD: MOV DX,313H ;控制口地址
IN AL,DX ;读C口值
AND AL,02H ;检查PC1(OBF)→CF JNZ SREAD ;主机OBF=1,未发送等待
MOV AX,301H ;主机已发送,B口地址
IN AL,DX ;接收数据
MOV [DI],AL ;将数据存入内存
….. RET ;子程序结束返回
例:下图采用一个8255芯片和软盘控制器相连,箭头标明了I/O的方向,根据该图,试写出8255A口的初始化程序。设8255端口地址为0300-0303H。
8255用作软盘基本接口4.3.78255A应用举例例:
A口工作在方式2,PC4-PC7作应答联络信号线,PC3用作A组中断请求,PC0-PC2作输出。工作方式控制字为:11XXX000B=0C0H初始化程序为:
MOVDX,303H
MOVAL,0C0H ;工作方式控制字
OUTDX,AL
MOVAL,00001001B
OUTDX,AL
;PC4置位,开放输入中断
MOVAL,00001101B
OUTDX,AL
;PC6置位,开放输出中断例1软盘例2在IBMPC/XT上的应用工作在基本输入/输出方式0端口A为方式0输入,用来读取键盘扫描码端口B工作于方式0输出,例如控制扬声器等端口C为方式0输入,读取系统状态和配置系统的初始化编程:
moval,10011001b
;方式控制字99H
out63h,al例3方式0与打印机接口BUSY
DATA0~78255APC7PC2PA0~PA7打印机STROBE打印机接口的信号与时序(Centronics)主机把数据送给引脚DATA0~DATA7同时送出数据选通信号STROBE*打印机在BUSY信号线上发出忙信号打印机处理好输入的数据时撤消忙信号同时又送出一个响应信号ACK*Centronics并行打印接口标准8255A的初始化
movdx,0fffeh ;控制端口地址:FFFEH
moval,10000001B ;方式控制字:91H outdx,al ;A端口方式0输出,C端口上输出、下输入
moval,00001111B ;端口C的复位置位控制字,使PC7=1 outdx,al打
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 律师年度工作计划
- 律师事务所的实习报告范文10篇
- 客服主管工作计划15篇
- 高老头读后感1000字
- 初一教师教学工作计划5篇范文
- 乒乓球比赛作文600字锦集八篇
- 班长的辞职报告模板集合9篇
- (一)制定招聘战略-案例导入-江西人力资源网
- 2025年油炸类制品项目发展计划
- 健康管理咨询服务合同(2篇)
- 进口电子元器件管理办法
- 电熔焊作业指导书
- 【基于FCFF模型的拼多多企业价值评估案例11000字(论文)】
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- DB11∕T 2035-2022 供暖民用建筑室温无线采集系统技术要求
- 农产品免税申请书
- GIS组合电器概述
- 2024年天津生态城投资开发有限公司招聘笔试参考题库附带答案详解
- 水厂分布式光伏项目(设备采购)实施组织方案及售后服务方案
- 催化材料智慧树知到期末考试答案2024年
- 儿童用药安全知识(共26张)
评论
0/150
提交评论