首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

请问关于8255A的有关问题

2012-06-25 
请教关于8255A的问题假设C口高位为输入 C口低位为输出那么要输入输出的时候,如何使用指令呢?要输入C口高位

请教关于8255A的问题
假设C口高位为输入 C口低位为输出 

那么要输入输出的时候,如何使用指令呢?

要输入C口高位的时候 用 IN AL, C口地址
要输出C口地位的时候 用 OUT AL, C口地址

这样可以吗?

---------------------------------------------------
---------------------------------------------------
另有一题目:
下图中,PA口作为向打印机输出的数据口,工作于方式0,采用程序查询的控制方式。由PC0产生控制信号,PC7读取外设状态BUSY,8255的端口地址为90H~93H。则要求从内存2000H:3000H开始取出100个数据送打印机打印的控制程序为: 
  MOV AX,2000H ;段地址
  MOV DS,AX
  MOV BX,3000H ;段偏移  
  MOV CX,100 ;循环次数
  MOV AL,88H ;控制字(A口方式0输出、C口高位输入、C口低位输出)
  OUT 93H,AL ;输出控制字
LOP:IN AL,92H ;输入C口
  TEST AL,80H ;测试最高位是否1(BUSY)
  JNZ LOP
  MOV AL,[BX] ;取一位数据
  OUT 90H,AL ;输出到A口

  MOV AL,01H ;设置C口最低位(形成一个脉冲)
  OUT 93H,AL ;!!我的问题是 这里用OUT 92H, AL是否可以? 如果不可以,为什么?
  MOV AL,00H
  OUT 93H,AL
  MOV AL,01H
  OUT 93H,AL

  INC BX
  LOOP LOP
  MOV AH,4CH
  INT 21H

我的问题是 要输出C口最低位时,用 OUT 92H, AL 是否可以? 如果不可以,为什么?

-------------------



[解决办法]
第一个问题,可以这么操作,只是输出时不是工作在输出方式的位上没有变化,而输入时需要将那些读入的数据中不是输入的位屏蔽一下。
第二个问题,也可以,只不过这样做会影响其它位,而位控方式不会影响到其它位,清净一点。

热点排行