8155是一种多功能的可编程接口芯片。它有三个可编程 I / O 端口 A 口、 B 口和 C 口, A 口和 B 口是 8 位端口, C 口是 6 位端口。一个可编程的 14 位定时计数器; 256 字节的 RAM 存储器,能方便地进行 I / O 扩展和 RAM 扩展。8155的引脚及内部结构如图1所示。 本文来自www.eadianqi.com
自动控制网www.eadianqi.com版权所有 图1 8155的引脚(a)和内部结构(b) 本文来自www.eadianqi.com 1、引脚及功能 本文来自www.eadianqi.com 8155 共有 40 个引脚,采用双列直插式封装。 自动控制网www.eadianqi.com版权所有 AD0-AD7 :地址数据总线。因为 8155 中有 256 个 RAM 单元,要访问某个 RAM 单元,必须有地址,这就需要地址线。 8155 通过 AD0一AD7与计算机的 CPU 相连接, AD0一AD7即是地址线,也是数据线。什么时候是地址线?什么时候是数据线?由另一个引脚 ALE 来决定。在 ALE 信号的下降沿, 8155 将AD0一AD7的信号存人内部的地址寄存器,当作地址。这个地址既可以是 RAM 的地址,也可以是 8155 端口的地址,由引脚IO/M的电平决定。 本文来自www.eadianqi.com RESET :8155 复位信号输人端,由复位电路提供。 本文来自www.eadianqi.com
CE:片选信号线,低电平有效。 本文来自www.eadianqi.com
ALE :地址锁存允许信号。ALE信号的下降沿将AD0一AD7的信号作为 RAM 的地址信号锁存到8155的内部锁存器中,同时将IO/M和CE信号锁存到内部锁存器中。 自动控制网www.eadianqi.com版权所有 RD:读信号,低电平有效。在CE和RD有效时,将8155片内的 RAM 单元或接口的内容送到AD0一AD7总线上。 本文来自www.eadianqi.com
WR :写信号,低电平有效。在CE和RD有效时,将AD0一AD7总线上的内容送到 8155片内RAM单元或接口中。 自动控制网www.eadianqi.com版权所有
IO/M :I / O 口或 RAM 选择信号。当IO/M=1 时,选择 I / O 口;当IO/M =0 时,选择片内 RAM 单元。 自动控制网www.eadianqi.com版权所有 PA0-PA7 : A 口通用的输人输出线。作为输出线还是作为输人线,由控制字决定。 自动控制网www.eadianqi.com版权所有 PB0-PB7 : B 口通用的输人输出线。作为输出线还是作为输人线,由控制字决定。 自动控制网www.eadianqi.com版权所有 PC0-PC5 : C 口的六位线。既可以作为数据输人/输出线,也可以作为 A 口和 B 口的控制(联络)线。具体功能由控制字决定。 自动控制网www.eadianqi.com版权所有 TIMERIN :定时器/计数器时钟输人端。 自动控制网www.eadianqi.com版权所有 TIMEROUT:定时器/计数器时钟输出端,其输出信号可以是矩形波,也可以是脉冲,是输出单个信号还是连续信号,由定时器/计数器的工作方式决定。 自动控制网www.eadianqi.com版权所有 Vcc : + 5V 电源。 自动控制网www.eadianqi.com版权所有 Vss :接地端。 本文来自www.eadianqi.com 2、8155 的工作原理 自动控制网www.eadianqi.com版权所有 8155 的三个端口 A 、 B 、 C 可以工作在输人/输出状态。 C 口可以作为 A 口和 B 口的状态/控制信号。至于具体工作在何种状态,取决于命令寄存器的内容(命令字),而当前各端口的状态可以通过读取状态寄存器的内容来判断。 8155 的命令寄存器和状态寄存器是两个不同的寄存器,但命令寄存器只能写入,而状态寄存器只能读出,所以,这两个寄存器共用一个地址,所以,在叙述中又合称为命令/状态寄存器。可见,命令/状态寄存器实际上是两个寄存器,只不过共用一个地址而已。命令寄存器的内容由程序根据需要送入。命令字(命令寄存器的内容)各位的含义如下: 本文来自www.eadianqi.com
TIM2、TIM1:定时器方式控制位。选择定时器工作状态,以控制定时/计数器工作。 本文来自www.eadianqi.com IEB:B口中断允许位。IEB=0,禁止。IEB=1,允许。 本文来自www.eadianqi.com IEA:A口中断允许位。IEA=0,禁止。IEA=1,允许。 自动控制网www.eadianqi.com版权所有 PC2、PC1:定义PC0~PC5控制作用的工作方式。PC2 PC1=00,ALT1。PC2 PC1=01,ALT2。 本文来自www.eadianqi.com PC2 PC1=10,ALT3。PC2 PC1=11,ALT4。 本文来自www.eadianqi.com PB:B口控制位。PB=0,输出。PB=1,输入。 本文来自www.eadianqi.com PA:A口控制位。PA=0,输出。PA=1,输入。 自动控制网www.eadianqi.com版权所有 状态字(状态寄存器的内容)各位定义如下: 自动控制网www.eadianqi.com版权所有
TIMER:计数器溢出标志。TIMER=1,表示计数/定时器已经计满溢出;TIMER=0,表示计数/定时器尚未计满溢出。当TIMER=1时,只要读状态寄存器或启动新的计数器,TIMER=0。 本文来自www.eadianqi.com BINTE : B口中断允许标志。INTEB=l,表示允许端口B中断;INTEB=0 ,表示禁止端口B中断。 本文来自www.eadianqi.com BFB : B 端口缓冲器满标志。 BFB=1,表示B端口已经装满数据;BFB=0 , 表示B端口空。 BINTR : B口中断请求标志。INTRB=1,表示B口有中断请求;INTRB=0 , B口无中断请求。 自动控制网www.eadianqi.com版权所有 AINTE : A 口中断允许标志。INTEA=l,表示允许端口A中断;INTEA=0,表示禁止端口A中断。 本文来自www.eadianqi.com ABF : A 端口缓冲器满标志。BFA=1,表示A端口已经装满数据;BFA=0,表示A端口空。 AINTR : A口中断请求标志。INTRA=l,表示A口有中断请求;INTRA=0 , A口无中断请求。 自动控制网www.eadianqi.com版权所有
3、8155 的端口地址分配 自动控制网www.eadianqi.com版权所有
CPU 送到 8155 的数据到底是送到何处呢? CPU 从 8155 读取数据是从状态寄存器读还是从端口读呢?8155通过使用地址来区分命令/状态寄存器和I/O端口。地址由AD0一AD2决定,如表下所示。 自动控制网www.eadianqi.com版权所有
表 8155口地址分配 本文来自www.eadianqi.com 4、 8155 定时器/计数器工作原理 自动控制网www.eadianqi.com版权所有 8155 内部的定时器是一个14位的减法计数器,可以用来定时或者对外部事件计数,在到达最后一个计数值时,在TIMEROUT输出一个脉冲或一个矩形波。 本文来自www.eadianqi.com
要使计数器正常工作,必须装入定时器/计数器初始计数长度。由于它的有效位是14位,故计数长度可以是00H一3FFFH(11111111111111B=3FFFH)。低8位装人定时器/计数器的低位字节,高6位装入定时器/计数器的高位字节,然后再装入命令字并启动定时器/计数器。最高两位M2和Ml用来规定定时器/计数器的输出方式。定时器/计数器寄存器的计数格式及地址如图4.19所示。Ml和M2的取值与输出方式的关系如表4.9所示。 自动控制网www.eadianqi.com版权所有
M2、M1输出方式。T8~T13计数初值高6位 本文来自www.eadianqi.com
T0~T7计数初值低8位。 本文来自www.eadianqi.com 表2 定时器/计数器寄存器格式 自动控制网www.eadianqi.com版权所有
表2 定时器/计数器输出方式与M1和M2取值的关系 本文来自www.eadianqi.com 5、 8155芯片扩展I / O接口 本文来自www.eadianqi.com 8155可以直接和单片机相连,不需要任何其它逻辑部件。图2是8155与8051单片机连接扩展的一个实例,通过本实例,我们来说明8155的使用。 本文来自www.eadianqi.com
自动控制网www.eadianqi.com版权所有 图2 8155 应用的实例 本文来自www.eadianqi.com 1.8155 中 RAM 的使用 自动控制网www.eadianqi.com版权所有
8155中256个RAM存储单元,可以用作系统的临时数据保存单元。它的使用方法与一般的RAM存储芯片没有太大区别,只要注意IO/M信号就可以了。RAM和I/O端口使用的是统一的数据线和地址线,靠IO/M区分是访问RAM还是访问I/O端口。一般来说,可以用CPU的一根地址线来控制IO/M , 以区分8155的RAM地址和端口I / O地址。 自动控制网www.eadianqi.com版权所有 在这个实例中,8051单片机的P0与AD0一AD7相连,既是低8位地址,又是数据线,地址锁存用ALE信号(该信号由8051发出)。P2 . 7连接CE , P2 . 0连接IO/M,要访问8155, P2. 7 必须为低电平,要访问 RAM , P2. 0必须为低电平。所以,8155中的RAM在系统中的地址应该是7E00H一7EFFH。这样,8155中的RAM就可以和普通外部数据存储器一样使用了。下面程序是从8155的RAM读数据和写数据的程序片段。 自动控制网www.eadianqi.com版权所有
MOV R0 , # 30H 自动控制网www.eadianqi.com版权所有 MOV DPTR , # 7E32H 本文来自www.eadianqi.com
MOVX A , @ DPTR 自动控制网www.eadianqi.com版权所有 MOV @ R0 , A 自动控制网www.eadianqi.com版权所有 MOV A , # 34H 本文来自www.eadianqi.com MOVX @ DPTR , A 本文来自www.eadianqi.com
2.8155 中I / O端口和定时器的使用 自动控制网www.eadianqi.com版权所有
我们已经知道,8155有三个I / O端口。三个端口的工作方式由控制字决定。图4.20中,各端口的地址如下: 自动控制网www.eadianqi.com版权所有
PA 口: 7F01H 自动控制网www.eadianqi.com版权所有
PB 口: 7F02H 自动控制网www.eadianqi.com版权所有
PC 口: 7F03H 本文来自www.eadianqi.com 定时器低 8 位: 7F04H 本文来自www.eadianqi.com
定时器高 8 位: 7F05H 自动控制网www.eadianqi.com版权所有 假设B 口定义为基本输人方式,A口定义为基本输出方式,将时钟信号连接到 TIMERIN端,在TIMEROUT输出 5 分频信号,则程序如下: 本文来自www.eadianqi.com MOV DPTR,#7E04H ;指向定时器低8位 本文来自www.eadianqi.com MOV A,#05H 自动控制网www.eadianqi.com版权所有 MOVX @DPTR,A ;定时器初值低8位装入 自动控制网www.eadianqi.com版权所有 INC DPTR ;指向定时器高8位 本文来自www.eadianqi.com MOV A,#40 ;设定定时器连续方波输出 自动控制网www.eadianqi.com版权所有 MOVX @DPTR,A ;定时器初值高8位装入 本文来自www.eadianqi.com MOV DPTR,#7E00H ;指向命令/状态寄存器 自动控制网www.eadianqi.com版权所有 MOV A,#11000001B ;命令控制字设定 本文来自www.eadianqi.com
MOVX @DPTR,A ;送控制字 自动控制网www.eadianqi.com版权所有 |