8155是一种多功能可编程外围扩展接口芯片,它也有三个可编程I/O端口(端口A、B、C)。与8255A的区别在于PC口是6位,同时还有一个可编程14bit定时器/计数器和256B的RAM,能方便地进行I/O扩展和RAM扩展。其内部逻辑结构如图7-19所示。
1.8155引脚
8155芯片为40引脚双列直插封装,单一的+5V电源,其引脚排列如图7-20所示。各引脚说明如下:
AD0~AD7:8位三态地址/数据线。当ALE为高电平,作地址线;ALE下降沿时,锁存有关信号;ALE低电平时,作数据线(、R均无效时作高阻状态)。IO/:I/O端口和RAM选择信号输入端口。当为1时,选择I/O端口;当为0时,选择RAM单元。
图7-19 8155的内部逻辑结构
图7-20 8155芯片引脚排列
CE:片选信号输入线,低电平有效。
ALE:地址锁存允许信号,输入端口。高电平时将低8位地址写入8155的内部锁存器中,当ALE信号处于下降沿时,将AD0~AD7、、IO/信号都锁存到8155的内部锁存器。:读选通信号,低电平有效,输入。有效时,根据IO/M信号状态选择读I/O口还是读RAM。:写选通信号,低电平有效,输入。有效时,根据IO/M信号状态选择写I/O还是写RAM。
TIMERIN:定时器时钟信号输入端。:定时器输出。当计数器减到0,则根据设定的工作方式输出一个方波还是一个脉冲。
RESET:复位控制信号线,高电平有效。
PA0~PA7:A口的8位I/O线。
PB0~PB7:B口的8位I/O线。
PC0~PC7:C口的6位I/O线。
VCC:电源线,+5V。
VSS:线路地。
2.8155的RAM和I/O端口寻址
8155的RAM单元与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/M为低电平。A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。8155的RAM单元和端口地址选择见表7-8。(1)当IO/=0时,选中8155内部RAM,其地址范围为00H~FFH。(2)当IO/=1时,选择命令/状态寄存器、A口、B口、C口、定时器低8位、定时器高6位。
(3)命令/状态寄存器是同一地址的两个独立寄存器,由读写信号加以区分,命令寄存器只能写入,状态寄存器只能读出。
表7-8 端口地址分配
3.8155的工作方式
(1)8155作片外RAM(256B)
①在片选信号E有效的情况下,IO/信号为高电平,8155作片外RAM使用。
②地址的高8位由片选信号确定,地址的低8位为00H~FFH。
(2)8155作I/O口
8155有两种工作方式:基本I/O和选通I/O。
①当8155的PA口、PB口、PC口工作在基本I/O方式下,可用于无条件I/O操作。基本输入时执行“MOVX A,@DPTR”类指令,基本输出时执行“MOVX@DPTR,A”类指令。
②当8155的PA口工作在选通I/O方式下时,PC口低三位作PA口联络线,其余位作I/O线,PB口定义为基本I/O;PA口和PB口也可同时定义为选通I/O,此时PC作PA口、PB口联络线。
③在8155操作前,须由CPU向命令寄存器送命令字,设定其工作方式,命令字只能写入不能读出。
④8155内部还有一个状态寄存器,可以锁存8155 I/O口和定时器的当前状态,供CPU查询,状态寄存器和命令寄存器共用一个地址,只能读出不能写入。因此可以认为8155的00H口是命令/状态口,CPU往00H写入的是命令字,而从中读出的是状态字。
4.8155的控制字及其工作方式
(1)命令寄存器
A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。8155命令寄存器格式见表7-9。
表7-9 8155命令寄存器格式
(www.xing528.com)
各位功能说明如下:
1)TM2 TM1
①00,代表空操作。
②01,代表停止计时。
③10,代表时间到则停止计时。
④11,代表置入定时器方式控制字和计数初值后,立即启动计时。若正在计时,溢出后按新的定时器方式和计数初值计时。
2)IEB
0代表禁止PB口中断;1代表允许PB口中断。
3)IEA
0代表禁止PA口中断;1代表允许PA口中断。
4)PC2 PC1:
①00代表PA、PB均为基本I/O方式,PA和PB输入/输出由D1D0确定,PC口输入。
②01代表PA、PB均为基本I/O方式,PA和PB输入/输出由D1D0确定,PC口输出。
③10代表PA选通I/O,PB为基本I/O方式,输入/输出由D1D0确定;PC0~PC2为PA口联络线;PC3~PC5输出。
④11代表PA、PB均为选通方式,输入\输出由D1D0确定;PC0~PC2为PA口联络线;PC3~PC5为PB口联络线。
5)PB:0代表输入;1代表输出。
6)PA:0代表输入;1代表输出。
(2)状态寄存器
状态字只能读不能写,所以8155的命令字和状态字共用一个地址。当对命令/状态字进行写操作时,写进去的是命令,当对命令/状态字进行读操作时,读出来的是状态。状态字用于寄存各端口及定时器/计数器的工作状态。
8155状态寄存器格式见表7-10。
表7-10 8155状态寄存器格式
5.8155内部定时器及使用
定时器共有4种工作方式,由定时器长度字高字节中的M2、M1两位状态决定,定时器长度字的低14位用于给定时器设置初值。定时器长度字格式如图7-21所示。现对定时器在4种工作方式下的T输出波形分述如下:
①在M2M1=00时,定时器在计数的后半周期内使线上输出低电平(一个矩形波)。矩形波周期和定时器长度字初值有关:若定时器长度字初值为偶数,则T线上的矩形波是对称的;若它为奇数,则矩形波高电平持续期比低电平的多一个计数脉冲时间。
②在M2M1=01时,定时器每当减“1”到全“0”时,都能自动装入定时器长度字初值,故T线上输出连续矩形波。矩形波周期也与定时器长度字初值的设定有关。
③在M2M1=10时,定时器每当减“1”到全“0”时,便会在T线上输出一个单脉冲。
④在M2M1=11时,定时器每当减“1”变为全“0”时,都能自动装入定时器长度字初值,故T线上能输出一串重复脉冲。重复脉冲的频率也和定时器长度字初值有关。
图7-21 定时器长度字格式
8155对定时器的控制是由命令字中的D7D6两位状态决定的(见图7-21)。现把这两位对定时器的控制分述如下:
D7D6=00时,无操作。即D7D6=00的命令字对定时器工作不产生影响。
D7D6=01时,停止计数。若定时器原为停止状态,则它继续停止计数;若定时器正在运行,则D7D6=01的命令字送给8155后便能立即停止定时器的减“1”计数。
D7D6=10时,计满后停止。若定时器原为停止状态,则它继续停止计数;若定时器正在运行,则8155收到D7D6=10的命令字后,必须等到定时器回零时才会停止计数。
D7D6=11时,开始计数。若定时器原为停止状态,它收到D7D6=11的命令字后立即开始计数;若定时器正在运行,则它在回零后立即按新输入的定时器长度字开始计数。
在定时器计数期间,CPU随时可以读出定时器中的状态,以了解定时器的工作情况。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。