8255接8只发光二极管,编程使之依次亮灭

这是一个简单的“微机原理与接口技术”的趣味实验。实验要求的完整表述为:将8255C口接上8个发光二极管,编程使之依次亮灭。已知8255端口地址为39CH~39FH。(39FH为控制端口地址,39CH,39DH,39EH分别为A端口、B端口、C端口的端口地址)

我们知道,可编程外围接口芯片8255PC有很多作用,可以扮演多种角色:

1.          做数据口。8255工作于方式0(基本输入输出方式)时,PC可做数据口。高四位PC7~PC4PA组成A组,低四位PC3~PC0PB组成B组。

2.          做状态口。8255工作于方式1(选通输入/输出方式)或者方式2(双向总线方式)时,PC做状态口。

3.          按位控制。引脚按位控制输出高低电平。这要借助于8255的按位置位/复位控制字,按位置位/复位控制字是专门用来设定PC某一位电平高或者低的。

 

显然,我们需要用到PC的作用3。我们利用这样的方式实现“流水灯”:依次(按位)对PC的引脚置位(即置为1)使二极管发光,再写入复位字(即置为0)是二极管熄灭。

流程图如下:

   
8255接8只发光二极管,编程使之依次亮灭

 

注意:

1.  写端口即是写寄存器。每一个端口背后都有一个寄存器!82552类控制字:方式选择控制字和按位置位/复位控制字。对8255进行编程时,这2中控制字都被写入8255控制字寄存器中。所以39FH实际上是控制字寄存器的端口地址。

2.  按位置位/复位控制字虽然都是对PC的操作,但是属于控制字。要写入命令口(39FH)而不是C口(39EH)。

 

程序有几部分关键代码(汇编语言编写)如下:

1.  向命令口写入工作方式控制字

MOV DX,39FH  ;39FH为控制字寄存器地址

MOV AL,10000000B  ;方式控制字(即80H

OUT DX,AL

解析:

工作方式控制字格式如下

 
8255接8只发光二极管,编程使之依次亮灭
 

 

对于工作方式,PC7~PC4PAPC3~PC0PB,所以不需要单独设定。

对于输入输出,PC7~PC4 PC3~PC0需要单独设定。

 

2.  写入PCi的置位字,点亮二极管、

MOV AL,1  ;00000001B

MOV DX,39FH  ;仍然是39FH

MOV DX,AL

DELAY_1000MS  ;延时1s

解析:

按位置位/复位控制字格式如下

 

 

 
8255接8只发光二极管,编程使之依次亮灭
 

3个无效位!!!

你可能感兴趣的:(编程,C++,c,工作,C#)