第5章可编程接口芯片.ppt
第5章可编程接口芯片 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望5.1可编程并行接口可编程并行接口8255A5.1.18255A的内部结构与外部引脚的内部结构与外部引脚1.三个数据端口三个数据端口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的数据传输过程。的数据传输过程。图图5-25.8255A的引脚的引脚8255的引脚信号:的引脚信号:(1).与与CPU连接的信号线连接的信号线D7D0:8255A的双向三态数据线。的双向三态数据线。A1、A0:端口地址选择信号。端口地址选择信号。CS#:片选信号。片选信号。RD#:读信号,低电平有效。读信号,低电平有效。WR#:写信号,低电平有效。写信号,低电平有效。RESET:复位信号。复位信号。VCC、GND:电源和地线。电源和地线。(2).与外部设备相连的信号线与外部设备相连的信号线PA7PA0:A口与外部设备连接的数据线。口与外部设备连接的数据线。PB7PB0:B口与外部设备连接的数据线。口与外部设备连接的数据线。PC7PC0:C口输入输出数据线。口输入输出数据线。5.1.28255A的控制字的控制字1.1.方式选择控制字方式选择控制字 8255A有三种基本工作方式:有三种基本工作方式:方式方式0:基本的输入:基本的输入/输出方式。输出方式。方式方式1:选通输入:选通输入/输出方式。输出方式。方式方式2:双向传输方式。:双向传输方式。8255A各各数数据据端端口口的的工工作作方方式式由由方方式式选选择择控控制制字字进行设置。进行设置。图图5-38255A方式选择控制字方式选择控制字D7位是方式选择控制字的标志位,它必须是位是方式选择控制字的标志位,它必须是1;D6D5位用于选择位用于选择A口的工作方式;口的工作方式;D4、D3用于选择用于选择A口、口、C口高四位输入输出功能设置。口高四位输入输出功能设置。D2位用于选择位用于选择B口的工作方式。口的工作方式。端端口口A可可工工作作在在3种种工工作作方方式式中中的的任任何何一一种种,端端口口B只只能能工工作作在在方方式式0或或方方式式1,端端口口C则则常常常常配配合合端端口口A和和端口端口B工作。工作。只有端口只有端口A可工作在方式可工作在方式2。2.端口端口C按位置位按位置位/复位控制字复位控制字端端口口C有有一一种种特特殊殊的的控控制制方方式式,可可以以将将端端口口C的的某某一一位位置置1或清或清0,而不影响端口,而不影响端口C的其他位的状态。的其他位的状态。5.1.38255A的工作方式的工作方式1 1方式方式0 0 基本输入基本输入/输出方式输出方式(1)方式)方式0的工作特点:的工作特点:A口和口和B口作为两个口作为两个8位端口位端口C口的高口的高4位和低位和低4位可以用作两个位可以用作两个4位端口位端口(2)方式方式0的使用场合:的使用场合:无条件传送无条件传送查询式传送查询式传送2方式方式1选通输入选通输入/输出方式输出方式(1 1)方式)方式1 1工作特点工作特点带有选通的输入带有选通的输入/输出方式。输出方式。端口端口A、端口端口B和端口和端口C被分为两个组。被分为两个组。端端口口A和和端端口口B用用作作8位位数数据据的的输输入入/输输出出,端端口口C的的一一些些引引脚被规定为端口脚被规定为端口A、B的联络信号。的联络信号。(2)方式)方式1联络信号联络信号IBFA、IBFB:输入缓冲区满信号,高电平有效。输入缓冲区满信号,高电平有效。STBa#、STBb#:选通信号输入,负脉冲。选通信号输入,负脉冲。OBFA#、OBFB#:输出缓冲区满信号,低电平有效。输出缓冲区满信号,低电平有效。ACKA#、ACKB#:外外设设接接收收到到输输出出数数据据后后给给8255A的的应应答信号,下降沿答信号,下降沿/负脉冲有效负脉冲有效。INTEA和和INTEB:端口端口A和端口和端口B的中断允许信号。的中断允许信号。INTR:中断请求信号,中断请求信号,8255A输出给输出给CPU。(3)方式)方式1的使用的使用查询方式查询方式中断方式中断方式端口端口/工作工作方式方式联络线联络线输入输入输出输出A口方式1PC7OBFA#PC6ACKA#/INTEAPC5IBFAPC4STBA#/INTEAPC3INTRAINTRAB口方式1PC2STBB#/INTEBACKB#/INTEBPC1IBFBOBFB#PC0INTRBINTRB8255A芯片方式芯片方式1的联络信号的联络信号3方式方式2双向输入双向输入/输出方式输出方式(1)方式)方式2工作特点工作特点方方式式2只只适适用用于于端端口口A,是是双双向向的的输输入入/输输出出传传输输方式。方式。方式方式2下各信号含义见表下各信号含义见表5-3,其中:,其中:INTE1:输出中断允许信号。输出中断允许信号。INTE2:输入中断允许信号输入中断允许信号。(2)方式)方式2的使用场合的使用场合联络线联络线联络信号联络信号信号含义信号含义PC7OBFA#A口输出缓冲器满PC6ACKA#/INTE1A口收到外设应答信号输出中断允许PC5IBFAA口输入缓冲器满PC4STBA#/INTE2A口外设数入选通信号输入中断允许PC3INTRA中断请求信号PC2I/O数据线或B组联络线PC1I/O数据线或B组联络线PC0I/O数据线或B组联络线8255芯片方式芯片方式2的联络信号的联络信号5.1.48255A的应用的应用1.8255A与与CPU的连接的连接数据线和控制线一般直接和系统总线的相应信号相连数据线和控制线一般直接和系统总线的相应信号相连片选信号和地址译码器的输出相连片选信号和地址译码器的输出相连三个端口的数据线和外设的数据线直接相连三个端口的数据线和外设的数据线直接相连8255A的端口选择信号的端口选择信号A1和和A0,8088CPU与与8086CPU在在连接上有所不同连接上有所不同图图5-52.8255A基本输入输出应用基本输入输出应用作为键盘接口作为键盘接口:“反转法反转法”进行键盘扫描:进行键盘扫描:设设8255A为方式为方式0,A口输出,口输出,B口输入;口输入;向向A口输出口输出00H,从从B口读入键盘列线值:口读入键盘列线值:低低4位值为位值为0FH:无键按下无键按下否则,就有键按下否则,就有键按下有键按下时,将有键按下时,将8255A反向设置为反向设置为A口输入,口输入,B口输出口输出将将B口原读入值从口原读入值从B口输出口输出从从A口输入,得到该键的口输入,得到该键的“行列码行列码”“反转法反转法”键盘扫描程序:键盘扫描程序:KEYSCANPROC NEARBEGIN:MOV DX,20EH;置置8255A控制口地址控制口地址MOV AL,82H;8255A方式控制字方式控制字 ;A口工作在方式口工作在方式0输出,输出,B口工作在方式口工作在方式0输入输入OUTDX,AL;输出输出8255A方式控制字方式控制字LOOP1:MOVDX,208H;A口地址送口地址送DXMOV AL,00HOUTDX,AL;A口输出口输出00H扫描键盘扫描键盘MOV DX,20AH;B口地址送口地址送DX中中INAL,DX;读入键盘列值读入键盘列值ANDAL,0FH;保留低保留低4位位CMP AL,0FHJELOOP1;无键按下,重新扫描无键按下,重新扫描CALL DELAY;有键按下,延时去抖动有键按下,延时去抖动INAL,DX ;再次读再次读B口,检查有无键按下口,检查有无键按下ANDAL,0FH;保留低保留低4位位CMP AL,0FHJELOOP1;无键按下,重新扫描无键按下,重新扫描MOV KEY,AL;有键按下,列值保存在有键按下,列值保存在KEY单元单元MOV DX,20EH;置置8255A控制口地址控制口地址MOV AL,90H;8255A方式控制字方式控制字;B口方式口方式0输出,输出,A口方式口方式0输入输入OUTDX,AL;输出输出8255A方式控制字方式控制字MOV DX,20AH;B口地址送口地址送DX中中MOV AL,KEY;从从KEY单元取出列值单元取出列值OUTDX,AL;向向B口输出列值,反向扫描口输出列值,反向扫描MOV DX,208H;A口地址送口地址送DXINAL,DX;从从A口读入行值口读入行值ANDAL,1FH;保留低保留低5位位CMP AL,1FHJEBEGIN;无键按下,重新扫描无键按下,重新扫描CALL KEYVALUE;转键值处理程序:查表获得按键编码,保存转键值处理程序:查表获得按键编码,保存MOV DX,20AH;B口地址送口地址送DX中中MOV AL,0OUTDX,AL;向向B口输出列值,反向扫描口输出列值,反向扫描MOV DX,208H;A口地址送口地址送DXWAIT2:INAL,DX;从从A口读入行值口读入行值ANDAL,1FH;保留低保留低5位位CMP AL,1FHJNEWAIT2;未释放,等待未释放,等待RETKEYSCANENDP82558255方式方式0 0应用应用-用作打印机接口用作打印机接口3.8255A中断方式应用中断方式应用8255A的的A口口工工作作在在方方式式1输输出出方方式式,用用以以传传送送打印字符。打印字符。PC6自动作为自动作为ACK#信号输入端信号输入端PC0用来发送选通脉冲用来发送选通脉冲PC3(INTR)连连到到中中断断控控制制器器8259A的的IR3,对对应应中中断断类类型码为型码为0BH8255A的端口地址为的端口地址为0C0H0C6H。中断方式实现中断方式实现26个英文字母的输出。个英文字母的输出。图图5-7.dataBUFFER DB“abcdefghijklmnopqrstuvwxyz”,0dh,0ahOUT_POINTERDW?;缓冲区输出指针缓冲区输出指针DONEDB?;完成标志,完成标志,=1表示已输出完成表示已输出完成.codeSTART:MOV AX,SEG LPRINTMOV DS,AXLEADX,LPRINTMOV AX,250BHINT21H;设置设置0BH中断向量中断向量MOV AX,dataMOV DS,AX;装载装载DSLEABX,BUFFERMOVOUT_POINTER,BX;设置输出缓冲区指针设置输出缓冲区指针MOVDONE,0;设置未完成标志设置未完成标志MOV AL,0A0HOUT0C6H,AL;8255A的方式选择字,的方式选择字,A口工作在方式口工作在方式1,输出,输出MOVAL,1OUT0C6H,AL;PC0置为置为1,使选通无效,使选通无效MOVAL,0DHOUT0C6H,AL;使使PC6为为1,允许,允许8255A的打印机中断的打印机中断INAL,21HANDAL,11110111BOUT21H,AL;清清8259的的IR3屏蔽,允许打印机中断屏蔽,允许打印机中断STI;开中断开中断INT0BH;调用调用0BH中断服务程序输出第一个字符中断服务程序输出第一个字符WAIT1:CMPDON E,0JEWAIT1;未完成,循环等待未完成,循环等待MOVAX,4C00HINT21H ;打印完成,返回操作系统打印完成,返回操作系统;以下为中断服务子程序:以下为中断服务子程序:LPTINTPROCFARPUSHDS;保护现场保护现场PUSHAXPUSHDISTI;开放中断开放中断MOVAX,SEGBUFFER;装载输出缓冲区指针装载输出缓冲区指针MOVDS,AX MOVDI,OUT_POINTERMOVAL,DI OUT0C0H,AL;字符送字符送A口口MOVAL,0;使使PC0为为0,产生选通信号,产生选通信号OUT0C6H,ALCALLDelay;适当延时适当延时INCAL;使使PC0为为1,撤消选通信号,撤消选通信号OUT0C6H,ALINCOUT_POINTER;修改地址指针修改地址指针CMPBYTE PTRDI,0AH JNENEXTMOVDONE,1;已完成,置完成标志已完成,置完成标志MOVAL,0CHOUT0C6H,AL;使使PC6为为0,关闭,关闭8255A的打印机中断的打印机中断INAL,21H ORAL,00001000BOUT21H,AL;重新屏蔽重新屏蔽8259的的IR3,关闭关闭8259A的打印机中断的打印机中断NEXT:CLI;中断结束处理,关闭中断中断结束处理,关闭中断MOVAL,20HOUT20H,AL;向向8259A发发EOI命令命令POPDI;恢复现场恢复现场POPAXPOPDS IRETLPRINTENDPENDSTART 4.8255A在在PC机中的应用机中的应用早早期期的的PC/XT微微机机系系统统(8088CPU)使使用用一一片片8255A,系系统统分分配配的的端端口口地地址址为为60H63H,工工作作在在基基本本输输入入/输出方式。输出方式。1)A口用作键盘接口电路,接收串并转换后的键盘扫描码。口用作键盘接口电路,接收串并转换后的键盘扫描码。2)B口口的的PB7和和PB6用用于于控控制制键键盘盘接接口口电电路路,PB1和和PB0用用于控制发声系统。于控制发声系统。C口连接口连接“系统配置开关系统配置开关”。80286以以上上的的微微机机系系统统中中,8255A的的对对应应电电路路被被集集成成到到多多功功能能芯芯片片内内部部,保保留留了了8255A的的端端口口地地址址和和它它的的相相应功能。应功能。5.2可编程定时器可编程定时器/计数器计数器8254计算机系统中经常要用到定时信号,如定时检测、计算机系统中经常要用到定时信号,如定时检测、定时扫描和时钟定时等,定时方法通常有以下三定时扫描和时钟定时等,定时方法通常有以下三种:种:(1)软件定时)软件定时(2)不可编程的硬件定时)不可编程的硬件定时(3)可编程的硬件定时)可编程的硬件定时许多场合还需要对脉冲信号进行计数。许多场合还需要对脉冲信号进行计数。本节介绍本节介绍Intel8254定时计数器芯片,它是一种定时计数器芯片,它是一种的可编程的定时器件。的可编程的定时器件。Intel8254主要特性:主要特性:(1)3个独立的个独立的16位定时位定时/计数通道。计数通道。(2)每个通道有)每个通道有6种工作方式。种工作方式。(3)最高计数频率为)最高计数频率为10MHz。(4)可以按二进制或可以按二进制或BCD码两种方式计数。码两种方式计数。(5)定定时时时时间间长长短短可可用用软软件件设设置置,可可由由软软件件或或硬硬件件控制开始计数或停止计数。控制开始计数或停止计数。(6)可可以以同同时时锁锁存存13个个计计数数器器的的计计数数值值和和状状态态值值,供供CPU读取。读取。5.2.18254的内部结构与外部引脚的内部结构与外部引脚1.数据总线缓冲器数据总线缓冲器8254与系统数据总线相连的接口电路。与系统数据总线相连的接口电路。通过数据总线缓冲器,通过数据总线缓冲器,CPU用指令对用指令对8254进行读进行读/写:写:(1)8254初始化编程时,写入控制字。初始化编程时,写入控制字。(2)CPU向某一计数器写入计数初值。向某一计数器写入计数初值。(3)CPU读出计数器的当前计数值。读出计数器的当前计数值。2.读读/写控制逻辑写控制逻辑接收来自接收来自CPU的控制信号:的控制信号:读信号读信号RD#写信号写信号WR#片选信号片选信号CS#芯片内部寄存器寻址信号芯片内部寄存器寻址信号A1A03计数器计数器028254有有3个结构完全相同的定时器个结构完全相同的定时器/计数器通道计数器通道:0,1,2每个通道包含每个通道包含:一个一个8 8位的控制字寄存器位的控制字寄存器三个三个1616位的初值寄存器、减位的初值寄存器、减1 1计数器和结果输出锁存器。计数器和结果输出锁存器。每个通道有每个通道有3根专用的信号线:根专用的信号线:CLK:计计数数/定定时时脉脉冲冲输输入入端端,每每输输入入一一个个脉脉冲冲,减减1操作操作OUT:计数值减到零时,由输出端计数值减到零时,由输出端OUT输出结束信号输出结束信号GATE:门控信号,允许或停止计数门控信号,允许或停止计数图图5-9CLK脉冲脉冲:8254作作外外部部事事件件计计数数器器时时,CLK引引脚脚上上的的计计数数脉脉冲冲从从外部输入,这些脉冲的间隔可以不相等。外部输入,这些脉冲的间隔可以不相等。8254用用作作定定时时器器时时,CLK引引脚脚的的输输入入信信号号是是精精确确的的时时钟脉冲。钟脉冲。8254的定时时间的定时时间T时钟脉冲周期时钟脉冲周期tc计数初值计数初值n4.控制寄存器控制寄存器控控制制寄寄存存器器是是一一个个只只能能写写入入的的寄寄存存器器,它它接接收收从从CPU来来的的控控制制字字,并并由由控控制制字字的的D7、D6位位的的编编码码决定控制字写入哪个计数器的控制寄存器。决定控制字写入哪个计数器的控制寄存器。在在对对8254进进行行编编程程时时,CPU用用输输出出指指令令向向它它写写入入控控制制字字,由由此此确确定定各各计计数数器器通通道道的的工工作作方方式式、读读写格式和计数的数制。写格式和计数的数制。5.Intel8254的引脚的引脚(1)CS#:片选信号,接片选信号,接IO端口译码电路的输出端口译码电路的输出(2)RD#,WR#:读写控制信号读写控制信号(3)D7D0:数据线,与系统数据总线相连数据线,与系统数据总线相连(4)A1A0接地址总线低接地址总线低2位,用于片内端口的选择。位,用于片内端口的选择。A1A0=00,选择通道,选择通道0;A1A0=01,选择通道选择通道1;A1A0=10,选择通道选择通道2;A1A0=11,选择控制端口。选择控制端口。(5)每个通道有三根对外的信号线:每个通道有三根对外的信号线:CLK,OUT和和GATE。图图5-105.2.28254的工作方式的工作方式每个通道有六种可选择的工作方式每个通道有六种可选择的工作方式:1.方式方式0计数器方式计数器方式写写入入方方式式0控控制制字字后后,输输出出OUT立立即即变变为为低低电电平平,且且在在计计数过程中一直维持低电平。数过程中一直维持低电平。赋初值后赋初值后,在每个在每个CLK时钟下降沿,计数器进行减时钟下降沿,计数器进行减1计数。计数。计计数数值值减减到到零零时时,OUT输输出出变变为为高高电电平平,并并且且一一直直保保持持到到该通道重新装入计数初值或重新设置工作方式为止。该通道重新装入计数初值或重新设置工作方式为止。GATE用用于于控控制制计计数数过过程程。GATE为为高高电电平平,允允许许计计数数;GATE为低电平,暂停计数。为低电平,暂停计数。图图5-11方式方式02.方式方式1可重触发的单稳态触发器可重触发的单稳态触发器门门控控信信号号GATE上上升升沿沿触触发发后后,输输出出一一个个负负脉脉冲冲信信号号,脉脉冲宽度由计数初值冲宽度由计数初值N决定决定写入控制字后,写入控制字后,OUT输出高电平;输出高电平;GATE上上升升沿沿到到达达后后,OUT输输出出低低电电平平,并并在在CLK脉脉冲冲下下降沿进行减降沿进行减1计数;计数;计数值减到计数值减到0时,输出时,输出OUT恢复为高电平。恢复为高电平。计计数数结结束束后后,若若再再来来一一个个GATE信信号号上上升升沿沿,则则下下一一个个时时钟钟周周期期的的下下降降沿沿又又以以上上次次写写入入的的初初值值开开始始计计数数,不不需要重新写入初值。需要重新写入初值。在在计计数数过过程程中中可可以以写写入入新新的的初初值值,它它不不会会影影响响正正在在进进行行的的计计数数过过程程。在在下下一一个个门门控控信信号号到到来来后后,按按新新值值开开始计数。始计数。图图5-12方式方式13.方式方式2分频器分频器写入控制字后,写入控制字后,OUT变成高电平。变成高电平。写入计数初值后,计数器开始减写入计数初值后,计数器开始减1计数计数(GATE=1)。减减到到1时时,输输出出端端OUT变变为为低低电电平平,维维持持一一个个CLK周周期期,然然后后输输出出OUT又又变变成成高高电电平平,同同时时从从初初值值开开始始新新的计数过程。的计数过程。这这种种方方式式工工作作时时,计计数数初初值值自自动动重重装装,计计数数器器能能连连续续工作,输出固定频率的脉冲,因此称为分频器。工作,输出固定频率的脉冲,因此称为分频器。方方式式2中中,GATE信信号号为为低低电电平平时时终终止止计计数数。GATE的的上上升升沿沿使计数器恢复初值,并从初值开始计数。使计数器恢复初值,并从初值开始计数。图图5-13方式方式24.方式方式3方波发生器方波发生器(1)计数初值为偶数)计数初值为偶数写入控制字后,输出端写入控制字后,输出端OUT变成高电平变成高电平写入计数初值后计数器开始进行减写入计数初值后计数器开始进行减2计数计数减减到到0时时,输输出出端端OUT改改变变输输出出极极性性,从从初初值值开开始始新新的的计计数过程。数过程。(2)计数初值为奇数)计数初值为奇数写入控制字后输出端写入控制字后输出端OUT变成高电平变成高电平写入计数初值后开始减写入计数初值后开始减1计数计数减到(减到(N+1)/2以后,输出端以后,输出端OUT变为低电平变为低电平减到减到0时,时,OUT又变成高电平,从初值开始新的计数过程。又变成高电平,从初值开始新的计数过程。GATE=1,允允许许计计数数,GATE=0,禁禁止止计计数数。GATE信信号号能能使计数过程重新开始。使计数过程重新开始。图图5-14方式方式35.方式方式4软件触发选通软件触发选通写入方式控制字后,写入方式控制字后,OUT输出高电平。输出高电平。写写入入初初值值,经经过过一一个个CLK脉脉冲冲开开始始减减1计计数数,计计到到0时时OUT输输出出为为低低电电平平,持持续续一一个个CLK脉脉冲冲周周期期后后再再恢恢复到高电平。复到高电平。GATE=1时时,允允许许计计数数;GATE=0,禁禁止止计计数数,并并把把输输出维持在当时的电平。出维持在当时的电平。如如果果GATE=1时时在在计计数数过过程程中中改改变变计计数数值值,则则在在写写入入新新值值后后的的下下一一个个时时钟钟下下降降沿沿计计数数器器立立即即按按新新的的初初值值开开始始计数。计数。图图5-15方式方式46.方式方式5硬件触发选通硬件触发选通写入写入8254方式字后,方式字后,OUT输出高电平。输出高电平。写写入入计计数数初初值值后后,计计数数器器并并不不立立即即开开始始计计数数,在在GATE端输入上升沿触发信号后,计数开始。端输入上升沿触发信号后,计数开始。计计数数器器减减到到0时时,输输出出一一个个持持续续时时间间为为一一个个时时钟钟周周期期的的负负脉脉冲冲,然然后后输输出出恢恢复复为为高高电电平平,并并自自动动装装入入初初值值,等待下一个等待下一个GATE触发信号。触发信号。图图5-16方式方式57.8254的的6种工作方式的比较种工作方式的比较方方式式功功能能输出波形输出波形0计数器计数器写入初值后经写入初值后经N+1个时钟周期个时钟周期OUT变高变高1可重触发的单可重触发的单稳态触发器稳态触发器输出宽度为输出宽度为N个时钟周期的负脉冲个时钟周期的负脉冲2分频器分频器每隔每隔N-1个时钟周期,输出个时钟周期,输出1个时钟周期的负个时钟周期的负脉冲脉冲3方波信号发生方波信号发生器器输出占空比为输出占空比为1/2或(或(N+1)/(2N)的连续的连续方波方波4软件触发选通软件触发选通写入初值后经写入初值后经N个时钟周期,输出个时钟周期,输出1个时钟周个时钟周期的负脉冲期的负脉冲5硬件触发选通硬件触发选通门控信号触发后经门控信号触发后经N个时钟周期,输出个时钟周期,输出1个时个时钟周期的负脉冲钟周期的负脉冲5.2.38254的控制字与初始化的控制字与初始化8254是可编程接口芯片,使用前必须先对它进是可编程接口芯片,使用前必须先对它进行初始化编程。行初始化编程。8254的初始化编程有以下两个步骤:的初始化编程有以下两个步骤:(1)向)向8254写入控制字,用于确定所选通道的工作方写入控制字,用于确定所选通道的工作方式和计数格式。式和计数格式。(2)向)向8254的通道写入计数初值。每个通道在写入控的通道写入计数初值。每个通道在写入控制字和计数初值之后开始工作。制字和计数初值之后开始工作。1.8254的方式控制字的方式控制字0二进制二进制1BCDD D0 0 D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 读读/写格式写格式00:数据锁存命令数据锁存命令01:只读只读/写低字节写低字节10:只读只读/写高字节写高字节11:先先读读/写写低低字字节节,后读后读/写高字节写高字节方式选择方式选择000:方式方式0001:方式方式1X X10:方式方式2X11:方式方式3100:方式方式4101:方式方式5计数器选择计数器选择00:选择计数器选择计数器001:选择计数器选择计数器110:选择计数器选择计数器211:读出控制字读出控制字(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位。位。(3)D3D2D1:工作方式选择位工作方式选择位D3D2D1取值取值000到到101分别代表方式分别代表方式0到方式到方式5。(4)D0:计数格式选择位:计数格式选择位D0=0,按二进制格式计数;按二进制格式计数;D0=1,按按BCD码格式计数。码格式计数。2.8254的读出控制字的读出控制字读读出出控控制制字字D7D6必必须须为为11,D0必必须须为为0,这这三三位位合合起起来构成来构成8254的读出控制字的标志。的读出控制字的标志。D5=0锁存计数值,以便锁存计数值,以便CPU读取;读取;D4=0将状态信息锁存进状态寄存器;将状态信息锁存进状态寄存器;11D5D4D3D2D10标志标志0=锁锁 存存 计计数值数值0=锁锁存存状状态态1=选选 中中 计计数器数器21=选选 中中 计计数器数器11=选选 中中 计计数器数器03.8254的状态字的状态字D7=1表表示示OUT端端当当前前输输出出高高电电平平,D7=0表表示示OUT端端当前输出低电平当前输出低电平D6=0,代表已装入初值,读取的计数值有效。代表已装入初值,读取的计数值有效。D5D0各各位位是是由由方方式式控控制制字字确确定定的的,与与方方式式控控制制字字的的对应位相同。对应位相同。图图5-198254的状态字的状态字D7D6D5D4D3D2D1D0OUTPUTNULLCOUNTRW1RW0M2M1M0BCD1=本本 计计 数数 器器OUT引脚为引脚为10=本本 计计 数数 器器OUT引脚为引脚为01=无效计数无效计数0=计数值有效计数值有效由控制字设定的计数器工作方式由控制字设定的计数器工作方式4.8254初始化编程初始化编程初始化分为两步:初始化分为两步:向向控控制制寄寄存存器器写写入入方方式式控控制制字字,确确定定所所要要使使用用的的计数器的工作方式;计数器的工作方式;向使用的计数器写入计数初值。向使用的计数器写入计数初值。例例5-15-1:某某微微机机系系统统中中8254的的端端口口地地址址为为40H43H,要要求求计计数数器器0工工作作在在方方式式0,计计数数初初值值为为0DEH,按按二二进进制制计计数数;计计数数器器1工工作作在在方方式式2,计计数数初初值值为为1000D,按按BCD码计数。试写出初始化程序段。码计数。试写出初始化程序段。按要求计数器按要求计数器0的控制字为:的控制字为:计数器计数器1的控制字为:的控制字为:初始化程序如下:初始化程序如下:MOVAL,10H;写通道写通道0控制字控制字OUT43H,ALMOVAL,0DEH;写通道写通道0计数初值计数初值OUT40H,ALMOVAL,65H;写通道写通道1控制字控制字OUT43H,ALMOVAL,10H;写通道写通道1计数初值计数初值OUT41H,AL例例5-2:设设8254端端口口地地址址为为3FF0H3FF3H,要要求求计计数数器器2工工作在方式作在方式5,二进制计数,初值为,二进制计数,初值为2F30H。初始化程序如下:初始化程序如下:MOVDX,3FF3H;DX指向控制端口指向控制端口MOVAL,0BAH;控制字控制字OUTDX,ALMOVDX,3FF2H;DX指向通道指向通道2MOVAL,30H;写初值低写初值低8位位OUTDX,ALMOVAL,2FH;写初值高写初值高8位位OUTDX,AL5.2.48254的应用的应用1.8254控制扬声器控制扬声器两种方法使扬声器发声:两种方法使扬声器发声:(1)将将PB0置置为为0,关关闭闭Timer2,将将PB1交交替替置置为为1/0,使扬声器发声;使扬声器发声;(2)将将PB0、PB1均均置置为为1,使使“Timer2”工工作作,产产生生固固定频率的信号使扬声器发声。定频率的信号使扬声器发声。SOUNDPROCPUSHAX;保护现场保护现场PUSHCXMOVAL,10110110BOUT43H,AL;设置设置Timer2为工作方式为工作方式3MOVAL,DL;设置设置Timer2时间常数,时间常数,;控制;控制OUT2输出频率输出频率OUT42H,ALMOVAL,DHOUT42H,ALINAL,61H;读读61H端口端口“当前值当前值”ORAL,00000011B;使使PB0=1,PB1=1,开启扬声器开启扬声器OUT61H,ALTRIG:MOVCX,0LOOP$DECBXJNZTRIG;延时,控制发声时间延时,控制发声时间INAL,61HANDAL,11111100B;使使GATE2=0,;停停Timer2,停止发声停止发声OUT61H,ALPOPCX;恢复现场恢复现场POPAXRETSOUNDENDP2.PWM脉宽调制脉宽调制在在工工业业生生产产和和仪仪器器、仪仪表表中中,经经常常需需要要对对交交、直直流流电电机进行转速的调节。机进行转速的调节。PWM(脉冲宽度调节)实现调速容易,调速准确。脉冲宽度调节)实现调速容易,调速准确。可可以以用用8254来来定定时时,输输出出周周期期固固定定、占占空空比比可可变变的的PWM脉冲信号。脉冲信号。如图如图5-21:计数器计数器0工作在方式工作在方式2,产生固定宽度的脉冲信号。,产生固定宽度的脉冲信号。计计数数器器1工工作作在在方方式式1,把把OUT0用用作作GATE1。OUT1用用作作PWM脉冲。脉冲。PWM脉冲周期由计数器脉冲周期由计数器0决定,宽度由计数器决定,宽度由计数器1决定。决定。图图5-21PWM波形设计:波形设计:8254工作时钟频率工作时钟频率2MHz(时钟周期时钟周期0.5s)PWM周期周期T=5ms:周期信号由计数器周期信号由计数器0控制输出:方式控制输出:方式2,计数初值,计数初值5ms/0.5s=10000。PWM脉冲宽度由计数器脉冲宽度由计数器1控制产生:控制产生:方式方式1,计数值为,计数值为N时(时(010000),低电平时间为),低电平时间为0.5sN,输出有效电压为最大值的(输出有效电压为最大值的(10000-N)/10000。PWM程序:程序:MOV DX,0243H;8254控制口地址送控制口地址送DXMOV AL,34H;计数器计数器0,方式,方式2,写,写16位位OUT DX,AL;控制字写入计数器控制字写入计数器0控制寄存器控制寄存器MOV AL,72H;计数器计数器1,方式,方式1,写,写16位位OUT DX,AL;控制字写入计数器控制字写入计数器1控制寄存器控制寄存器MOV DX,0240H;8254计数器计数器0地址送地址送DXMOV AX,10000;计数器计数器0的计数初值的计数初值OUT DX,AL;写入初值低写入初值低8位位MOVAL,AH;计数器计数器0的计数初值高的计数初值高8位位OUT DX,AL;写入初值高写入初值高8位位MOVDX,0241H;8254计数器计数器1口地址送口地址送DXMOVAX,N;计数器计数器1的计数初值的计数初值OUT DX,AL;写入初值低写入初值低8位位MOVAL,AH;计数器计数器1的计数初值高的计数初值高8位位OUT DX,AL;写入初值高写入初值高8位位3.电机转速测量电机转速测量在在电电机机轴轴安安装装一一个个转转盘盘,上上面面有有8个个均均匀匀分分布布的的小小孔。孔。转转盘盘上上的的小小孔孔转转到到发发光光源源位位置置时时,光光透透过过小小孔孔使使光电二极管导通,产生一个正脉冲。光电二极管导通,产生一个正脉冲。记记录录单单位位时时间间内内脉脉冲冲的的个个数数,可可以以得得到到电电机机的的转转速。速。使用使用8254进行电机转速测量的电路:进行电机转速测量的电路:图图5-22测速方法:测速方法:通道通道0对脉冲进行计数,以方式对脉冲进行计数,以方式0工作工作通道通道1产生定时信号,工作在方式产生定时信号,工作在方式3基准时钟频率基准时钟频率250KHz,每定时每定时0.1秒钟产生一次秒钟产生一次中断,则计数初值为中断,则计数初值为25000。设设0.1秒钟内计数脉冲数为秒钟内计数脉冲数为COUNT,转速:转速:N=COUNT10608=COUNT75(转转/分分)测速程序:测速程序:DATASEGMENTCOUNTDW?SPEEDDW?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOVDS,AX;设置计数器;设置计数器0、1的工作方式的工作方式 MOVDX,0243H;8254控制口地址送控制口地址送DX MOVAL,30H ;计数器计数器0:方式方式0,16位读写位读写 OUTDX,AL;写计数器写计数器0控制字控制字 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秒,计数初值为秒,计数初值为25000 OUTDX,AL;写入初值低写入初值低8位位MOVAL