• 1.08 MB
  • 92页

微型计算机课件第05章接口芯片.ppt

  • 92页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
第5章可编程接口芯片5.1可编程并行接口8255A5.2可编程定时器/计数器82545.3串行通信的基本概念5.4可编程串行通信接口165505.5可编程串行通信接口8251A1 5.1可编程并行接口8255A5.1.18255A的内部结构与外部引脚2 三个数据端口A、B、C三个8位的输入输出端口,可用指令将它们分别设置成输入或输出端口。2.A组控制、B组控制8255A将端口A、B、C分为两组:端口A和端口C的高4位构成A组,端口B和端口C的低4位构成B组。3.数据总线缓冲器双向三态的8位缓冲器,与系统数据总线连接,是8255A与CPU之间信息传输的必经之路。4.读/写控制逻辑管理8255A的数据传输过程。3 图5-25.8255A的引脚4 8255的引脚信号:(1).与CPU连接的信号线D7~D0:8255A的双向三态数据线。A1、A0:端口地址选择信号。CS#:片选信号。RD#:读信号,低电平有效。WR#:写信号,低电平有效。RESET:复位信号。VCC、GND:电源和地线。5 (2).与外部设备相连的信号线PA7~PA0:A口与外部设备连接的数据线。PB7~PB0:B口与外部设备连接的数据线。PC7~PC0:C口输入输出数据线。6 5.1.28255A的控制字1.方式选择控制字8255A有三种基本工作方式:方式0:基本的输入/输出方式。方式1:选通输入/输出方式。方式2:双向传输方式。8255A各数据端口的工作方式由方式选择控制字进行设置。7 图5-38255A方式选择控制字8 D7位是方式选择控制字的标志位,它必须是1;D6D5位用于选择A口的工作方式;D4、D3用于选择A口、C口高四位输入输出功能设置。D2位用于选择B口的工作方式。端口A可工作在3种工作方式中的任何一种,端口B只能工作在方式0或方式1,端口C则常常配合端口A和端口B工作。只有端口A可工作在方式2。9 2.端口C按位置位/复位控制字端口C有一种特殊的控制方式,可以将端口C的某一位置1或清0,而不影响端口C的其他位的状态。10 5.1.38255A的工作方式1.方式0——基本输入/输出方式(1)方式0的工作特点:A口和B口作为两个8位端口C口的高4位和低4位可以用作两个4位端口(2)方式0的使用场合:无条件传送查询式传送11 2.方式1——选通输入/输出方式(1)方式1工作特点带有选通的输入/输出方式。端口A、端口B和端口C被分为两个组。端口A和端口B用作8位数据的输入/输出,端口C的一些引脚被规定为端口A、B的联络信号。12 (2)方式1联络信号IBFA、IBFB:输入缓冲区满信号,高电平有效。STBa#、STBb#:选通信号输入,负脉冲。OBFA#、OBFB#:输出缓冲区满信号,低电平有效。ACKA#、ACKB#:外设接收到输出数据后给8255A的应答信号,下降沿/负脉冲有效。INTEA和INTEB:端口A和端口B的中断允许信号。INTR:中断请求信号,8255A输出给CPU。(3)方式1的使用查询方式中断方式13 端口/工作方式联络线输入输出A口方式1PC7OBFA#PC6ACKA#/INTEAPC5IBFAPC4STBA#/INTEAPC3INTRAINTRAB口方式1PC2STBB#/INTEBACKB#/INTEBPC1IBFBOBFB#PC0INTRBINTRB8255A芯片方式1的联络信号14 3.方式2——双向输入/输出方式(1)方式2工作特点方式2只适用于端口A,是双向的输入/输出传输方式。方式2下各信号含义见表5-3,其中:INTE1:输出中断允许信号。INTE2:输入中断允许信号。(2)方式2的使用场合15 联络线联络信号信号含义PC7OBFA#A口输出缓冲器满PC6ACKA#/INTE1A口收到外设应答信号 输出中断允许PC5IBFAA口输入缓冲器满PC4STBA#/INTE2A口外设数入选通信号 输入中断允许PC3INTRA中断请求信号PC2I/O数据线或B组联络线PC1I/O数据线或B组联络线PC0I/O数据线或B组联络线8255芯片方式2的联络信号16 5.1.48255A的应用1.8255A与CPU的连接数据线和控制线一般直接和系统总线的相应信号相连片选信号和地址译码器的输出相连三个端口的数据线和外设的数据线直接相连8255A的端口选择信号A1和A0,8088CPU与8086CPU在连接上有所不同17 图5-518 2.8255A基本输入输出应用作为键盘接口:19 “反转法”进行键盘扫描:设8255A为方式0,A口输出,B口输入;向A口输出00H,从B口读入键盘列线值:低4位值为0FH:无键按下否则,就有键按下有键按下时,将8255A反向设置为A口输入,B口输出将B口原读入值从B口输出从A口输入,得到该键的“行列码”20 “反转法”键盘扫描程序:KEYSCANPROCNEARBEGIN:MOVDX,20EH;置8255A控制口地址MOVAL,82H;8255A方式控制字;A口工作在方式0输出,B口工作在方式0输入OUTDX,AL;输出8255A方式控制字LOOP1:MOVDX,208H;A口地址送DXMOVAL,00HOUTDX,AL;A口输出00H扫描键盘MOVDX,20AH;B口地址送DX中INAL,DX;读入键盘列值ANDAL,0FH;保留低4位CMPAL,0FHJELOOP1;无键按下,重新扫描21 CALLDELAY;有键按下,延时去抖动INAL,DX;再次读B口,检查有无键按下ANDAL,0FH;保留低4位CMPAL,0FHJELOOP1;无键按下,重新扫描MOVKEY,AL;有键按下,列值保存在KEY单元MOVDX,20EH;置8255A控制口地址MOVAL,90H;8255A方式控制字;B口方式0输出,A口方式0输入OUTDX,AL;输出8255A方式控制字MOVDX,20AH;B口地址送DX中MOVAL,KEY;从KEY单元取出列值OUTDX,AL;向B口输出列值,反向扫描22 MOVDX,208H;A口地址送DXINAL,DX;从A口读入行值ANDAL,1FH;保留低5位CMPAL,1FHJEBEGIN;无键按下,重新扫描CALLKEYVALUE;转键值处理程序:查表获得按键编码,保存23 MOVDX,20AH;B口地址送DX中MOVAL,0OUTDX,AL;向B口输出列值,反向扫描MOVDX,208H;A口地址送DXWAIT2:INAL,DX;从A口读入行值ANDAL,1FH;保留低5位CMPAL,1FHJNEWAIT2;未释放,等待RETKEYSCANENDP24 8255方式0应用---用作打印机接口25 程序设计:设PA、PB、PC口地址分别为0D0H、0D2H、0D4H控制口地址:0D6HMOVAL,81H;OUT0D6H,ALMOVAL,0DH;①PC6置1,0DH=0000,1101OUT0D6H,ALLPST:INAL,0D4H;读PC口ANDAL,04D;②打印机忙否(PC2=BUSY=?)JNZLPST;PC2=1,打印机忙,等待MOVAL,CLOUT0D0H,AL;③CL中的字符送PA口MOVAL,0CHOUT0D6H,AL;④置PC6=0,即=0;00001100=0CHINCALOUT0D6H,AL;置PC6=1,即=1,00001101=0DH┆26 3.8255A中断方式应用8255A的A口工作在方式1输出方式,用以传送打印字符。PC6自动作为ACK#信号输入端PC0用来发送选通脉冲PC3(INTR)连到中断控制器8259A的IR3,对应中断类型码为0BH8255A的端口地址为0C0H~0C6H。中断方式实现26个英文字母的输出。27 图5-728 .dataBUFFERDB“abcdefghijklmnopqrstuvwxyz”,0dh,0ahOUT_POINTERDW?;缓冲区输出指针DONEDB?;完成标志,=1表示已输出完成.codeSTART:MOVAX,SEGLPRINTMOVDS,AXLEADX,LPRINTMOVAX,250BHINT21H;设置0BH中断向量MOVAX,@dataMOVDS,AX;装载DSLEABX,BUFFER29 MOVOUT_POINTER,BX;设置输出缓冲区指针MOVDONE,0;设置未完成标志MOVAL,0A0HOUT0C6H,AL;8255A的方式选择字,A口工作在方式1,输出MOVAL,1OUT0C6H,AL;PC0置为1,使选通无效MOVAL,0DHOUT0C6H,AL;使PC6为1,允许8255A的打印机中断INAL,21HANDAL,11110111BOUT21H,AL;清8259的IR3屏蔽,允许打印机中断30 STI;开中断INT0BH;调用0BH中断服务程序输出第一个字符WAIT1:CMPDONE,0JEWAIT1;未完成,循环等待MOVAX,4C00HINT21H;打印完成,返回操作系统31 ;以下为中断服务子程序:LPTINTPROCFARPUSHDS;保护现场PUSHAXPUSHDISTI;开放中断MOVAX,SEGBUFFER;装载输出缓冲区指针MOVDS,AXMOVDI,OUT_POINTERMOVAL,[DI]OUT0C0H,AL;字符送A口32 MOVAL,0;使PC0为0,产生选通信号OUT0C6H,ALCALLDelay;适当延时INCAL;使PC0为1,撤消选通信号OUT0C6H,ALINCOUT_POINTER;修改地址指针CMPBYTEPTR[DI],0AHJNENEXTMOVDONE,1;已完成,置完成标志MOVAL,0CHOUT0C6H,AL;使PC6为0,关闭8255A的打印机中断33 INAL,21HORAL,00001000BOUT21H,AL;重新屏蔽8259的IR3,关闭8259A的打印机中断NEXT:CLI;中断结束处理,关闭中断MOVAL,20HOUT20H,AL;向8259A发EOI命令POPDI;恢复现场POPAXPOPDSIRETLPRINTENDPENDSTART34 4.8255A在PC机中的应用早期的PC/XT微机系统(8088CPU)使用一片8255A,系统分配的端口地址为60H~63H,工作在基本输入/输出方式。A口用作键盘接口电路,接收串并转换后的键盘扫描码。B口的PB7和PB6用于控制键盘接口电路,PB1和PB0用于控制发声系统。C口连接“系统配置开关”。80286以上的微机系统中,8255A的对应电路被集成到多功能芯片内部,保留了8255A的端口地址和它的相应功能。35 5.2可编程定时器/计数器8254计算机系统中经常要用到定时信号,如定时检测、定时扫描和时钟定时等,定时方法通常有以下三种:(1)软件定时(2)不可编程的硬件定时(3)可编程的硬件定时许多场合还需要对脉冲信号进行计数。本节介绍Intel8254定时/计数器芯片,它是一种的可编程的定时器件。36 Intel8254主要特性:(1)3个独立的16位定时/计数通道。(2)每个通道有6种工作方式。(3)最高计数频率为10MHz。(4)可以按二进制或BCD码两种方式计数。(5)定时时间长短可用软件设置,可由软件或硬件控制开始计数或停止计数。(6)可以同时锁存1~3个计数器的计数值和状态值,供CPU读取。37 5.2.18254的内部结构与外部引脚38 数据总线缓冲器8254与系统数据总线相连的接口电路。通过数据总线缓冲器,CPU用指令对8254进行读/写:(1)8254初始化编程时,写入控制字。(2)CPU向某一计数器写入计数初值。(3)CPU读出计数器的当前计数值。39 2.读/写控制逻辑接收来自CPU的控制信号:读信号RD#写信号WR#片选信号CS#芯片内部寄存器寻址信号A1A040 3.计数器0~28254有3个结构完全相同的定时器/计数器通道:0,1,2每个通道包含:一个8位的控制字寄存器三个16位的初值寄存器、减1计数器和结果输出锁存器。每个通道有3根专用的信号线:CLK:计数/定时脉冲输入端,每输入一个脉冲,减1操作OUT:计数值减到零时,由输出端OUT输出结束信号GATE:门控信号,允许或停止计数41 图5-942 CLK脉冲:8254作外部事件计数器时,CLK引脚上的计数脉冲从外部输入,这些脉冲的间隔可以不相等。8254用作定时器时,CLK引脚的输入信号是精确的时钟脉冲。8254的定时时间T=时钟脉冲周期tc×计数初值n43 4.控制寄存器控制寄存器是一个只能写入的寄存器,它接收从CPU来的控制字,并由控制字的D7、D6位的编码决定控制字写入哪个计数器的控制寄存器。在对8254进行编程时,CPU用输出指令向它写入控制字,由此确定各计数器通道的工作方式、读写格式和计数的数制。44 5.Intel8254的引脚(1)CS#:片选信号,接I/O端口译码电路的输出(2)RD#,WR#:读/写控制信号(3)D7~D0:数据线,与系统数据总线相连(4)A1A0接地址总线低2位,用于片内端口的选择。A1A0=00,选择通道0;A1A0=01,选择通道1;A1A0=10,选择通道2;A1A0=11,选择控制端口。(5)每个通道有三根对外的信号线:CLK,OUT和GATE。45 图5-1046 5.2.28254的工作方式每个通道有六种可选择的工作方式:1.方式0-计数器方式写入方式0控制字后,输出OUT立即变为低电平,且在计数过程中一直维持低电平。赋初值后,在每个CLK时钟下降沿,计数器进行减1计数。计数值减到零时,OUT输出变为高电平,并且一直保持到该通道重新装入计数初值或重新设置工作方式为止。GATE用于控制计数过程。GATE为高电平,允许计数;GATE为低电平,暂停计数。47 图5-11——方式048 2.方式1-可重触发的单稳态触发器门控信号GATE上升沿触发后,输出一个负脉冲信号,脉冲宽度由计数初值N决定写入控制字后,OUT输出高电平;GATE上升沿到达后,OUT输出低电平,并在CLK脉冲下降沿进行减1计数;计数值减到0时,输出OUT恢复为高电平。计数结束后,若再来一个GATE信号上升沿,则下一个时钟周期的下降沿又以上次写入的初值开始计数,不需要重新写入初值。在计数过程中可以写入新的初值,它不会影响正在进行的计数过程。在下一个门控信号到来后,按新值开始计数。49 图5-12——方式150 3.方式2-分频器写入控制字后,OUT变成高电平。写入计数初值后,计数器开始减1计数(GATE=1)。减到1时,输出端OUT变为低电平,维持一个CLK周期,然后输出OUT又变成高电平,同时从初值开始新的计数过程。这种方式工作时,计数初值自动重装,计数器能连续工作,输出固定频率的脉冲,因此称为分频器。方式2中,GATE信号为低电平时终止计数。GATE的上升沿使计数器恢复初值,并从初值开始计数。51 图5-13——方式252 4.方式3-方波发生器(1)计数初值为偶数写入控制字后,输出端OUT变成高电平写入计数初值后计数器开始进行减2计数减到0时,输出端OUT改变输出极性,从初值开始新的计数过程。(2)计数初值为奇数写入控制字后输出端OUT变成高电平写入计数初值后开始减1计数减到(N+1)/2以后,输出端OUT变为低电平减到0时,OUT又变成高电平,从初值开始新的计数过程。GATE=1,允许计数,GATE=0,禁止计数。GATE信号能使计数过程重新开始。53 图5-14——方式354 5.方式4-软件触发选通写入方式控制字后,OUT输出高电平。写入初值,经过一个CLK脉冲开始减1计数,计到0时OUT输出为低电平,持续一个CLK脉冲周期后再恢复到高电平。GATE=1时,允许计数;GATE=0,禁止计数,并把输出维持在当时的电平。如果GATE=1时在计数过程中改变计数值,则在写入新值后的下一个时钟下降沿计数器立即按新的初值开始计数。55 图5-15——方式456 6.方式5-硬件触发选通写入8254方式字后,OUT输出高电平。写入计数初值后,计数器并不立即开始计数,在GATE端输入上升沿触发信号后,计数开始。计数器减到0时,输出一个持续时间为一个时钟周期的负脉冲,然后输出恢复为高电平,并自动装入初值,等待下一个GATE触发信号。57 图5-16——方式558 7.8254的6种工作方式的比较方式功能输出波形0计数器写入初值后经N+1个时钟周期OUT变高1可重触发的单稳态触发器输出宽度为N个时钟周期的负脉冲2分频器每隔N-1个时钟周期,输出1个时钟周期的负脉冲3方波信号发生器输出占空比为1/2或(N+1)/(2N)的连续方波4软件触发选通写入初值后经N个时钟周期,输出1个时钟周期的负脉冲5硬件触发选通门控信号触发后经N个时钟周期,输出1个时钟周期的负脉冲59 5.2.38254的控制字与初始化8254是可编程接口芯片,使用前必须先对它进行初始化编程。8254的初始化编程有以下两个步骤:(1)向8254写入控制字,用于确定所选通道的工作方式和计数格式。(2)向8254的通道写入计数初值。每个通道在写入控制字和计数初值之后开始工作。60 8254的方式控制字0二进制1BCDD0D7D6D5D4D3D2D1读/写格式00:数据锁存命令01:只读/写低字节10:只读/写高字节11:先读/写低字节, 后读/写高字节方式选择000:方式0001:方式1X10:方式2X11:方式3100:方式4101:方式5计数器选择00:选择计数器001:选择计数器110:选择计数器211:读出控制字61 (1)D7、D6:通道选择位D7D6两位为00,01,10分别选择三个计数通道, 为11选择控制寄存器,用于读出控制寄存器内容。(2)D5、D4:读/写方式选择位D5D4=00,锁存计数器的当前计数值,以便读出。D5D4=01,写入时,只写入计数初值低8位,高8位置0; 读出时,只读出低8位的当前计数值。D5D4=10,写入时,只写入计数初值高8位,低8位置0; 读出时,只读出高8位的当前计数值。D5D4=11,计数初值为16位,分两次读/写入计数初值 寄存器,先读/写低8位,后读/写高8位。62 (3)D3D2D1:工作方式选择位D3D2D1取值000到101分别代表方式0到方式5。(4)D0:计数格式选择位D0=0,按二进制格式计数;D0=1,按BCD码格式计数。63 2.8254的读出控制字读出控制字D7D6必须为11,D0必须为0,这三位合起来构成8254的读出控制字的标志。D5=0锁存计数值,以便CPU读取;D4=0将状态信息锁存进状态寄存器;11D5D4D3D2D10标志0=锁存计数值0=锁存状态1=选中计数器21=选中计数器11=选中计数器064 3.8254的状态字D7=1表示OUT端当前输出高电平,D7=0表示OUT端当前输出低电平D6=0,代表已装入初值,读取的计数值有效。D5~D0各位是由方式控制字确定的,与方式控制字的对应位相同。65 图5-198254的状态字D7D6D5D4D3D2D1D0OUTPUTNULLCOUNTRW1RW0M2M1M0BCD1=本计数器OUT引脚为10=本计数器OUT引脚为01=无效计数0=计数值有效由控制字设定的计数器工作方式66 4.8254初始化编程初始化分为两步:向控制寄存器写入方式控制字,确定所要使用的计数器的工作方式;向使用的计数器写入计数初值。67 例5-1:某微机系统中8254的端口地址为40H~43H,要求计数器0工作在方式0,计数初值为0DEH,按二进制计数;计数器1工作在方式2,计数初值为1000D,按BCD码计数。试写出初始化程序段。按要求计数器0的控制字为:68 计数器1的控制字为:69 初始化程序如下:MOVAL,10H;写通道0控制字OUT43H,ALMOVAL,0DEH;写通道0计数初值OUT40H,ALMOVAL,65H;写通道1控制字OUT43H,ALMOVAL,10H;写通道1计数初值OUT41H,AL70 例5-2:设8254端口地址为3FF0H~3FF3H,要求计数器2工作在方式5,二进制计数,初值为2F30H。71 初始化程序如下:MOVDX,3FF3H;DX指向控制端口MOVAL,0BAH;控制字OUTDX,ALMOVDX,3FF2H;DX指向通道2MOVAL,30H;写初值低8位OUTDX,ALMOVAL,2FH;写初值高8位OUTDX,AL72 5.2.48254的应用1.8254控制扬声器两种方法使扬声器发声:(1)将PB0置为0,关闭Timer2,将PB1交替置为1/0,使扬声器发声;(2)将PB0、PB1均置为1,使“Timer2”工作,产生固定频率的信号使扬声器发声。73 SOUNDPROCPUSHAX;保护现场PUSHCXMOVAL,10110110BOUT43H,AL;设置Timer2为工作方式3MOVAL,DL;设置Timer2时间常数, ;控制OUT2输出频率OUT42H,ALMOVAL,DHOUT42H,ALINAL,61H;读61H端口“当前值”ORAL,00000011B;使PB0=1,PB1=1,开启扬声器OUT61H,AL74 TRIG:MOVCX,0LOOP$DECBXJNZTRIG;延时,控制发声时间INAL,61HANDAL,11111100B;使GATE2=0, ;停Timer2,停止发声OUT61H,ALPOPCX;恢复现场POPAXRETSOUNDENDP75 2.PWM脉宽调制在工业生产和仪器、仪表中,经常需要对交、直流电机进行转速的调节。PWM(脉冲宽度调节)实现调速容易,调速准确。可以用8254来定时,输出周期固定、占空比可变的PWM脉冲信号。如图5-21:计数器0工作在方式2,产生固定宽度的脉冲信号。计数器1工作在方式1,把OUT0用作GATE1。OUT1用作PWM脉冲。PWM脉冲周期由计数器0决定,宽度由计数器1决定。76 图5-2177 PWM波形设计:8254工作时钟频率2MHz(时钟周期0.5μs)PWM周期T=5ms:周期信号由计数器0控制输出:方式2,计数初值5ms/0.5μs=10000。PWM脉冲宽度由计数器1控制产生: 方式1,计数值为N时(0~10000),低电平时间为0.5μs×N,输出有效电压为最大值的(10000-N)/10000。78 PWM程序:MOVDX,0243H;8254控制口地址送DXMOVAL,34H;计数器0,方式2,写16位OUTDX,AL;控制字写入计数器0控制寄存器MOVAL,72H;计数器1,方式1,写16位OUTDX,AL;控制字写入计数器1控制寄存器MOVDX,0240H;8254计数器0地址送DXMOVAX,10000;计数器0的计数初值OUTDX,AL;写入初值低8位MOVAL,AH;计数器0的计数初值高8位OUTDX,AL;写入初值高8位MOVDX,0241H;8254计数器1口地址送DXMOVAX,N;计数器1的计数初值OUTDX,AL;写入初值低8位MOVAL,AH;计数器1的计数初值高8位OUTDX,AL;写入初值高8位79 3.电机转速测量在电机轴安装一个转盘,上面有8个均匀分布的小孔。转盘上的小孔转到发光源位置时,光透过小孔使光电二极管导通,产生一个正脉冲。记录单位时间内脉冲的个数,可以得到电机的转速。80 使用8254进行电机转速测量的电路:图5-2281 测速方法:通道0对脉冲进行计数,以方式0工作通道1产生定时信号,工作在方式3基准时钟频率250KHz,每定时0.1秒钟产生一次中断,则计数初值为25000。设0.1秒钟内计数脉冲数为COUNT,转速:N=COUNT×10×60÷8=COUNT×75(转/分)82 测速程序:DATASEGMENTCOUNTDW?SPEEDDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;设置计数器0、1的工作方式MOVDX,0243H;8254控制口地址送DXMOVAL,30H;计数器0:方式0,16位读写OUTDX,AL;写计数器0控制字83 MOVAL,74H;计数器1,方式2,OUTDX,AL;控制字写入计数器1控制寄存器;设置计数器0、1的初值MOVDX,0240H;计数器0端口地址送DXMOVAL,00H;计数器0的计数初值MOVDX,AL;写入初值低8位MOVDX,AL;写入初值高8位MOVDX,0241H;计数器1端口地址送DXMOVAX,25000;定时0.1秒,计数初值为25000OUTDX,AL;写入初值低8位MOVAL,AHOUTDX,AL;写入初值高8位MOVSIGNAL,0;标志单元清084 ……;装载中断向量,清屏蔽位,开放中断,……;计算转速MOVAX,COUNT;取计数脉冲值NEGAXMOVBX,75MULBX;计算转速MOVSPEED,AX;保存转速……;输出/显示电机转速85 ;定时中断程序TIME_INTPROCFARPUSHDSPUSHAXPUSHDXSTI;开放中断MOVAX,DATAMOVDS,AXMOVAL,00H;锁存计数器0计数值控制字MOVDX,0243H;控制寄存器地址送DXOUTDX,ALMOVDX,0240H;计数器0的端口地址送DXMOVAL,DX;读取低8位数据XCHGAL,AH86 INAL,DX;读取高8位数据XCHGAH,ALMOVCOUNT,AX;计数脉冲数送COUNT;重新设置计数器0MOVDX,0243H;8254控制口地址送DXMOVAL,30H;计数器0,方式0,16位OUTDX,AL;写计数器0控制字MOVDX,0240H;8254计数器0地址送DXMOVAX,0;计数器0的计数初值OUTDX,AL;写入初值低8位OUTDX,AL;写入初值高8位87 ;中断结束处理CLI;关闭中断MOVAL,20HOUT20H,AL;中断结束命令POPDXPOPAXPOPDSIRETTIME_INTENDPCODEENDSENDSTART88 1.8255A的方式选择控制字和C口按位控制字的端口地址是否一样,8255A怎样区分这两种控制字?写出A端口作为基本输入,B端口作为基本输出的初始化程序。2.用8255A的A端口接8位二进制输入,B端口和C端口各接8只发光二极管显示二进制数。编写一段程序,把A端口的读入数据送B端口显示,而C端口的各位则采用置0/置1的方式显示A端口的值。3.用8255A用作两台计算机并行通信的接口电路,请画出采用查询式输入/输出方式工作的接口电路,并写出采用查询式输入/输出方式的程序。习题589 8255用作两台计算机并行通讯接口90 4.设计一个用8255A作为8个七段显示器的接口电路,并设计一个把内存地址为ADDRA的8个数字在这8个七段显示器上显示的程序。5.8254的定时/计数器的定时与计数方式有什么区别?8254在方式0工作时,各通道的CLK、GATE信号有什么作用?各通道的控制字地址都相同,8254是怎样区分的?6.设8254的端口地址为0240H~0243H,通道0的输入CLK频率为1MHz,为使通道0输出1KHz的方波,编写初始化程序。如果让通道0与通道1级联(即OUT0接CLK1)实现1秒钟定时,则初始化程序如何编制。7.编制一个使PC机的8254产生600Hz方波的程序,并使该方波送至扬声器发声。91 8.在RS-232C接口标准中,引脚TxD、RxD、RTS#、CTS#、DTR#、DSR#的功能各是什么?9.16550的通信控制寄存器中的寻址位有什么作用?在初始化编程时,应该怎样设置?10.编写PC机中16550采用查询方式输入50个字符的异步通信程序,设16550的端口地址为3F8H~3FFH,数据格式为:8位数据位、1位偶校验位、2位停止位,通信速率为19.2Kbps。92