第八章常用可编程接口芯片可编程定时/计数器接口芯片8253可编程并行接口芯片8255A串行输入输出接口数/模与模/数转换接口本章重点8253定时器基本概念、控制字、赋初值值、地址分配、6种工作方式8255并行接口基本概念、控制字、地址分配、3种工作方式串行通信基本概念、同步、异步串行通信格式、RS232标准引脚与连线定时器/计数器定时方法软件定时硬件定时:不可编程硬件定时与课编程硬件定时作用定时:提供恒定的时间基准延时:等待指定的时间计数:对外部脉冲计数控制:输出指定宽度的脉冲(PWM);按照一定的频率输出脉冲可编程定时器/计数器芯片8253/82548253/8254可编程定时/计数器每片具有3个独立的16位计数通道(计数器0、1、2)。每通道最大可以实现65536脉冲计数,8253计数速率达2.6MHz,8254可达10MHz每个计数器可以单独作为计数或定时使用,都可以按照二进制(1到65536)或BCD码(1到10000)计数(减1计数)所有输入、输出电平与TTL电平兼容可以对系统内部脉冲和外部脉冲进行计数每个通道可以提供6种不同的工作方式。工具工作方式不同,计数触发条件和计数结束方式不同采取减1计数:先赋初值,接收到一个脉冲,计数值减18253/8254结构数据总线和地址线(片选CS与A0A1)时钟输入(CLK)门控输入(GATE)输出(OUT)读写控制控制寄存器初值寄存器当前计数值寄存器8253/8254寄存器地址分配一片占用四个端口地址(由A0A1确定)控制字:基地址+3写计数初值:基地址+0,1,2读取当前计数值:基地址+0,1,2由片选信号CS确定基地址工作方式计数方式一般不去读当前计数值而是在计数时产生相应信号8253的控制字如通道1采用方式1,BCD码计数,计数初值为100H则控制字:01110011计数初值大于255读取时需要先锁存其余8位自动为0例8-1MOVDX,303HMOVAL,00010100B;通道0读写低8位、方式2,二进制计数OUTDX,ALMOVDX,300HMOVAL,100;通道0的计数初值100OUTAL,DXMOVDX,303HMOVAL,01100111B;通道1读写高8位,方式3,BCD计数MOVDX,301HMOVAL,10HOUTDX,AL基地址300H。通道0采用二进制计数,初值为100,工作方式2;通道1采用BCD计数,初值为1000,工作方式38253的初始化写入初始值MOVAX,1000OUTDX,ALMOVAL,AHOUTDX,ALMOVDX,Base+3MOVAL,01010100BOUTDX,AL如通道1,方式2,二进制计数,计数初值=FFH设置控制字,确定计数器某通道的工作方式、计数方式等(Base+3)对使用的每个通道都要写控制字初值255,先写低字节再写高字节初值为0,即为计数65536次(写两次0)初值=1000BCD计数初值23H,表示计数23次8253工作方式方式0:计数结束中断方式方式1:单稳态触发器(可编程单脉冲发生器)方式2:分频器(速率发生器)方式3:方波发生器方式4:软件触发的选通信号发生器方式5:硬件触发的选通信号发生器8253/8254方式0当写入控制字后,OUT输出低电平;写入计数初值后,开始进行减1计数计数值变成0时,OUT成高电平,可作为中断触发条件GATE=1时允许减1计数;=0时停止,恢复1又继续初值一次有效,不会自动重新开始计数计数过程中可改变初值,重新开始计数用作普通的计数或定时计数结束中断方式8253/8254方式1装入初值后,OUT输出高电平,但不计数GATE由低到高跳变后,开始减1计数,且OUT变成低电平计数值到0,OUT恢复成高电平,形成一个负单脉冲计数过程中,再次遇到GATE上升沿,重新开始计数初值不需要重新输入,再次遇到GATE上升沿又会自动重新开始计数。初值改变后,下一次GATE上升沿有效用作产生单脉冲或等宽度脉冲(由GATE控制)单脉冲发生器8253/8254方式2进入该方式后,OUT输出高电平写入计数初值后,开始减1计数,OUT输出不变计数到“1”,OUT输出低电平计数到“0”时,自动重新装入初值,实现循环计数计数过程中,GATE变为0,则暂停减“1”计数;变成1后重新开始计数可用于输出PWM;定时速率发生器(分频器)8253/8254方式3进入该方式,OUT输出高电平写入初值,如果GATE有效,则开始减1计数,OUT保持高电平当计数值达到一半时,OUT由高变低,继续计数计数到0时,自动装入初值,重新计数,OUT又变高计数过程中,若GATE无效,停止计数,恢复后从初值开始用于产生占空比接近1的方波方波发生器方波频率:时钟频率/计数初值8253方式3示例通道2产生600Hz的方波(基地址40H)CLK频率为1193180Hz计数初值为1193180/600=1988(07C4H)初始化MOVAL,10110110BOUT43H,ALMOVAL,0C4HOUT42H,ALMOVAL,07HOUT42H,AL先写低字节,再写高字节方式2和方式3初值计算由于8253是16位计数器,其计数初值最大为0(计数65536个脉冲),如输入脉冲频率与输出脉冲频率之比超过65536,则必须利用8253的多个通道实现。输入时钟CLK的频率为2MHz,希望产生2Hz的方波,2MHz与2Hz的比值为1000000,超过了一个计数器的计数能力,可以利用8253的两个通道实现:输入的2MHz脉冲接入CLK0,OUT0再连接到CLK1,作为通道1的输入,计数器0和计数器1的初值都是1000,则OUT1输出的就是2Hz的方波。输出脉冲频率输入脉冲频率输入脉冲周期所需要的定时间隔计数初值8253/8254方式4进入该方式,OUT输出高电平装入初值,如果GATE为高电平,则立即开始减1计数计数到0,OUT输出一个宽度为一个时钟周期的负脉冲初值一次有效,需要重新装入初值计数过程中,如果GATE变低,则停止计数,恢复后重新从初值开始计数用作普通计数或定时,与方式0类似软件触发方式8253/8254方式5进入该方式,OUT输出高电平装入初值后,等待GATE的上升沿,开始计数计数到0时,输出一个宽度为一个时钟周期的负脉冲计数结束自动装入初值,但要等待下一个GATE的上升沿用作计数或定时硬件触发方式8253六种工作方式比较方式2和3可以实现自动重复计数工作方式GATE门控条件计数过程中GATE再次有效计数过程中改初值自动重复计数OUT波形0高电平继续计数立即有效否计数结束时上升沿1上升沿重新计数下次有效否指定宽度负脉冲2高电平重新计数下次有效是占空比可变脉冲3高电平重新计数下半周期有效是方波4高电平继续计数立即有效否一个CLK宽度负脉冲5上升沿重新计数下次有效否一个CLK宽度负脉冲8253/8254芯片在微机上的应用一片8253,其输入时钟频率为1193180Hz(固定),端口地址40H到43H微机系统中8253的通道0方式3,二进制计数,作为微机系统本身的定时器,计数初值为0(控制字为00110110B,36H)产生定时中断08H,定时间隔约55毫秒改变这个初值,则定时间隔变化,如初值为1193,则间隔1毫秒MOVAL,36H;方式3,二进制计数,先读写低8位再读写高8位OUT43H,ALMOVAL,0OUT40H,AL;将计数初值分两次写入通道0的初值寄存器OUT40H,AL微机系统中8253的通道1方式2,二进制计数,计数初值为18(控制字为01010100B,54H)产生15.0857μs的定时间隔完成对动态内存的刷新MOVAL,54H;工作方式2,二进制计数,只读写低8位OUT43H,ALMOVAL,18OUT41H,AL;将计数初值写入通道1的初值寄存器微机系统中8253的通道2方式3下,二进制计数,微机启动时由BIOS将其计数初值设置为533H(1331)扬声器发声门控信号GATE2由8255A芯片的PB0控制。输出OUT2与8255A芯片的PB1通过与门连接到功放再连接到扬声器MOVAL,0B6H;方式3,二进制计数,先读写低8位再读写高8位OUT43H,ALMOVAL,33HOUT42H,AL;将计数初值写入通道1的初值寄存器MOVAL,5HOUT42H,AL8253演奏音乐程序GENSOUNDPROC…MOVAL,0B6HOUT43H,ALMOVDX,12HMOVAX,34DCHDIVDIOUT42H,ALMOVAL,AHOUT42H,ALINAL,61HMOVAH,ALORAL,3OUT61H,ALWAITL:MOVCX,5801DELAY:LOOPDELAYDECBXJNZWAITLMOVAL,AHOUT61H,AL...RETGENSOUNDENDP可编程并行接口芯片8255A并行通信是以多根数据线在CPU与外设之间传输数据,传输往往以字节(8位)或字(16位)为单位,传输速度快,计算机系统中的数据总线就是采用的并行方式。CPU与并行打印机、开关量或数字量输入输出设备等的数据传输,均通过并行方式实现。适合于短距离数据传输(几m或几十m)和传输速度要求高的场合并行数据输入输出8255A特点三个相互独立的输入/输出通道PAPBPC三个通道分成两组控制A组(PA+PC高4位)B组(PB+PC低4位)工作方式0到方式2:PA可以采用任意的3种工作方式,端口PB可以采用方式0和1,端口PC只能采用方式0独立的8位I/O口输入/输出数据的锁存独立的8位I/O口输出数据的锁存1个独立的8位I/O口,或2个独立的4位I/O口输出数据的锁存基本输入/输出PA/PB的控制信号8255A逻辑结构图选通信号,确定芯片的基地址选择芯片内部的某个寄存器8255A寄存器结构寄存器的地址确定由A2~A15(A9)选择某个8255A芯片(接CS引脚)确定基地址BASE由A0~A1选择芯片内部的某个寄存器BASE+0~BASE+3寄存器类型PA口的数据寄存器(BASE+0)PB口的数据寄存器(BASE+1)PC口的数据寄存器(BASE+2)芯片的控制寄存器(BASE+3)8255A控制寄存器对端口C进行置位/复位操作D0:置位或复位(1--置位)D3、D2、D1:选择C端口的某一位Base+300:方式001:方式11x:方式2000:PC0001:PC1111:PC7最高位(D7)为1最高位(D7)为0控制工作方式D0:端口C低4位输入或输出(0--输出)D1:端口B输入或输出(0--输出)D2:端口B工作方式(1--方式1;0--方式0)D3:端口C高4位输入或输出D4:端口A输入或输出D6、D5:端口A工作方式8255A的工作方式方式0:基本输入/出方式方式1:选通输入/出方式方式2:双向传送方式PA/PB/PCPA/PBPA8255A工作方式0特点PA、PB、PC均作为基本的输入输出口PA、PB、PC只能进行单向传送用IN/OUT指令对PA、PB、PC端口进行操作用途无条件传送方式。没有任何握手控制信号查询方式。其中任一位作为查询信号某片8255A基地址为200H,PA输出,PC输入,均工作于方式0,其控制字为10001001B(89H)。初始化指令:MOVDX,203HOUTDX,89H8255A方式0示例设8255A端口地址端口A218H端口B219H端口C21AH控制端口21BHMOVDX,21BHOUTDX,10000010BMOVDX,219HINAL,DXMOVDX,21AHOUTDX,AL端口B接8个开关端口C接8位LED8255A工作方式1适用于PA和PB端口,可作为输入输出端口PC某些位作为控制信号,其余位可进行基本输入输出控制PA