深圳市航顺芯片技术研发有限公司
直播中

张健

7年用户 1358经验值
私信 关注
[问答]

如何对8255A芯片进行编程操作呢

怎样去使用8255A芯片呢?
如何对8255A芯片进行编程操作呢?有哪些步骤?

回帖(1)

杨靖

2021-10-29 17:38:20
  本次我们介绍一下8255A芯片的使用方法
  在对8255A进行编程操作时候,我们只需要了解三个步骤:
  (1)控制端口写控制字;
  (2)8255A端口地址计算;
  (3)对应端口读/写数据。
  8255A控制字:
  
  对8255A写控制字可以理解为配置各个端口的工作方式,以及输入输出模式。D7标志位主要是为了区分端口C的控制字。
  举例:
  MOV AL,10001001B
  MOV DX,CRTL_PORT ;CRTL_PORT为控制的端口地址
  OUT DX,AL
  此程序的目的是配置C端口为输入模式,其他端口为输出模式,且工作与方式0。
  举个例题:
  
  这个题我们最开始想到的组合是8种,在控制字编程中,C端口的高位和低位是分开配置的,所以这道题的答案是16种。
  端口置位/复位控制字:
  这个其实就是对C端口的某些位进行置位或者清零操作
  
  对C端口进行置位/清零操作也是往控制端口写入数据,D7=0。
  举例:
  
  下面介绍一下8255A端口地址计算:
  
  根据本图得连接方式可知,CS端由74154芯片的IO1端控制,A13~A14控制74154芯片的使能。A1,A2控制端口选择。
  
  由此可以端口状态表:
  
  A16~A19为参与地址控制,置0。由此可知:
  当A2=0,A1=0,选中A端口,A端口地址为0200H
  当A2=0,A1=1,选中B端口,B端口地址为0202H
  当A2=1,A1=0,选中C端口,C端口地址为0204H
  当A2=1,A1=1,选中控制端口,控制端口地址为0206H
  例题:
  
  该题的目的是C端口开关传送开关状态,随后在数码管显示。
  先计算端口地址:
  由于74LS138 Y4 端口控制片选所以 C B A 状态为1 0 0,A7~A15通过与门控制使能端,所以只能是高电平,同理A5需要为低电平。状态图为:
  
  经计算得出:A端口地址为:FF84H
  B端口地址为:FF85H
  C端口地址为:FF86H
  控制端口地址为:FF87H
  代码如下:
  A_PORT EQU 0FF84H
  B_PORT EQU 0FF85H
  C_PORT EQU 0FF86H
  CRTL_PORT EQU 0FF87H
  DATA SEGMENT
  LEDTAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
  DATA ENDS
  CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
  START: MOV AX,DATA
  MOV DS,AX ;段基地址初始化
  MOV AL,10001001B
  MOV DX,CRTL_PORT
  OUT DX,AL ;8255A写入控制字
  KEY_PRESS:
  MOV DX,C_PORT
  IN AL,DX ;C端口状态存入AL寄存器中
  MOV CL,AL ;将AL内容送入CL寄存器中,目的一会取高四位状态送入B端
  AND AL,0FH ;与操作,高四位清零,取低四位
  MOV BX,offset LEDTAB
  XLAT
  MOV DX,A_PORT
  OUT DX,AL ;A端口输出低四位的值
  ROR CL,4 ;逻辑循环有移动,高四位变成低四位,
  MOV AL,CL
  AND AL,0FH ;与操作,高四位清零,取低四位,此时取的是高位
  MOV BX,offset LEDTAB
  XLAT
  MOV DX,B_PORT
  OUT DX,AL ;B端口输出高四位的值
  JMP KEY_PRESS ;死循环,一直扫描C端按键状态
  CODE ENDS
  END START
举报

更多回帖

发帖
×
20
完善资料,
赚取积分