欢迎来到天天文库
浏览记录
ID:41871271
大小:417.01 KB
页数:50页
时间:2019-09-04
《可编程并口8255A》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、可编程并口8255A8255A是一种典型的通用选通并行接口芯片。其内部有三个独立的8位数据口,即A口、B口、C口。有三种工作方式−方式0--基本输入/输出方式−方式1--选通输入/输出方式−方式2--双向传送方式8255A外部引脚8255A内部结构图8255A内部结构•主要由数据总线缓冲器、读写控制逻辑、A、B、C三个双向I/O端口及有关控制电路组成。数据总线缓冲器三态双向8位缓冲,用于收发数据总线上的数据读/写控制逻辑包括RD、WR、CS、A0、A1。控制总线的开放、关闭和数据的传送方向。8255A的编程控制字8255A共有两个控制字:①方
2、式选择控制字;②对端口C按位置位/复位控制字。这两个控制字共用一个地址号。即当地址线A1A0都为1时就是访问控制字寄存器的片内地址。而用控制字的D7位来区分是方式设定控制字,还是对C端口的按位置位/复位命令。当D7位为1,是方式控制字;若D7位为0,是对端口C按位置位/复位的命令。8255A方式选择控制字例1:要把A口指定为1方式,输入,C口上半部定为输出;B口指定为0方式,输出,C口下半部定为输入,则工作方式命令代码是:10110001B或B1H。例1:要把A口指定为1方式,输入,C口上半部定为输出;B口指定为0方式,输出,C口下半部定为输
3、入,则工作方式命令代码是:10110001B或B1H。若将此命令代码写到8255A的命令寄存器,即实现了对8255A工作方式及端口功能的指定,或者说完成了对8255A的初始化。初始化的程序段为:MOVDX,303H;8255A命令口地址MOVAL,OB1H;初始化命令OUTDX,AL;送到命令口8255AC口置位/复位控制字端口C的每一位都可以通过向控制寄存器写入置位/复位控制字,而使它每一位置位(输输出为1)或复位(即输出为0)。端口C的任意一位,都可以用一条输出指令访问控制寄存器,使其置位或复位。按位置位/复位指令只影响指定位,而不改变其
4、它位的状态。例2:若要把C口的PC2引脚置成高电平输出,则命令字应该为00000101B或05H。将该命令的代码写入8255A的命令寄存器,就会使得从PC口的PC2引脚输出高电平,其程序段为:MOVDX,303H;8255A命令口地址MOVAL,05H;使PC2=l的命令字OUTDX,AL;送到命令口如果要使引脚PC2输出低电位,则程序段为:MOVDX,303H;8255A命令口地址。MOVAL,04H;使PC2=0的命令OUTDX,AL;送到命令口利用C口的按位控制特性还可以产生正、负脉冲或方波输出,对外设进行控制。例3:利用8255的PC
5、7产生负脉冲,作打印机接口电路的数据选通信号,其程序段为:MOVDX,303H;8255A命令口MOVAL,00001110B;置PC7=0OUTDX,ALNOP;维持低电平NOPMOVAL,00001111B;置PC7=1OUTDX,AL例4:利用8255A的PC6,产生方波,经滤波和功放后,送到喇叭,使产生不同频率的声音,其程序段为:OUTSPKPROCMOVDX,303H;8255A命令口MOVAL,00001101;置PC6=lOUTDX,ALCALLDELAY1;PC6输出高电乎维持的时间MOVAL,00001100B;置PC6=0
6、OUTDX,AL;CALLDELAY1;PC6输出低电平维持的时间若改变DELAY1的延时时间,即可改变喇叭发声的频率。例:对B口的PB1和PB0同时置位复位(产生方波)movdx,301h;PortB端口地址为301hlp:inal,dxoral,03houtdx,al;PB1PB0=11calldelayandal,0fchoutdx,al;PB1PB0=00calldelayjmplp关于两个命令的讨论①方式命令是对8255A的3个端口的工作方式及功能进行指定,即进行初始化,初始工作要在使用8255A之前做。也就是说,凡是用到8255A
7、,就一定要先初始化②按位置位/复位命令只是对PC口的输出进行控制,使用它并不破坏已经建立的3种工作方式,而是对它们实现动态控制的一种支持。它可放在初始化程序以后的任何地方。③两个命令的最高位(D7)都分配作了特征位,之所以要设置特征位,是为了识别两个不同的命令。在命令代码中设置特征位(标志位)是解决多个命令写入同一个命令口时如何进行识别而经常采用的方法之一。由于8255A两个命令的特征位不同。D7=1时,为工作方式命令;D7=0时,为按位置位/复位命令。④按位置位/复位的命令代码只能写入命令口。这个问题经常有人弄错。因为表面看起来,按位置位/
8、复位命令是对C口进行操作,所以,也就认为可以把按位置位/复位的命令代码写到C口(数据口)。这是错误的想法,因为按位置位/复位是一个命令,它就要按命令的定义格式来处理
此文档下载收益归作者所有