目前这段时间,微机原理这门课上到了接口部分;开始接触到基于接口芯片的汇编编程,这个星期五上机实验完成后。考虑了一下老师说的跑马灯程序,感觉逻辑上实现不是很复杂

于是去实现了一下,但是没跑起来;于是最后请到了终极大BOSS。据说今年带五个班微机课第一次敲代码的老师,来指导了一下;使用DEBUG直接实现了跑马灯

遂把老师的指导和自己的想法整理出来。

首先我们需要了解什么是接口电路

我们知道计算机有很多的外部设备,但是呢外部设备不可能自己工作;需要有人给它分配工作,这个时候只能由我们的CPU出马了;话说外设少的时候CPU还能干得过来,但是当外设一多起来

不同的外设有不同的功能时。CPU就会忙不过来了,这个时候我们应该怎么处理这个问题呢?想想我们现实生活中的大公司里面的那些老板是怎么管理自己公司的,是不是大多数老板都是请人负责具体的业务

自己只做战略方针上面的决策啊,同样我们的CPU也是啊,忙不过来就需要请人了;这个时候应该请谁呢——接口电路就应运而生了,他帮助我们CPU处理外设传递的数据和控制外设工作

所以啊,当老师讲到这里的时候我就在想。CPU的发展历程感觉好像一个公司的发展史啊,刚开始的时候公司还很弱下;啥事都要老板自己亲自动手,当公司发展起来之后啊;老板只负责最重要的部分,其他方面就由具体部门负责人负责。

废话不多说,下面上一张神图:

这是我粗略的根据所学的一些知识画出来的,可能不甚熟悉;但大体的结构基本如下:

关于8255A芯片的一些简介

有ABC三个端口分别为PA0-7,PB0-7...PC0-7

控制端口A0和A1

其中C端口有时候做一个拆分。将芯片分为两组控制组,然后C端口的高4位和A端口的组成A控制组,B端口的和C端口的低四位构成B控制组

基本情况就是这样,关于8255A更具体的一些引脚;请查阅API

关于跑马灯程序的思路

我们将A端口或者B端口连接到开关或者是数据输入的那一头,将另外一个端口连接到数据输出或者LED的这一头;

然后获取控制端口的地址,在控制端口中设置由A还是B端口输出;然后将数据输入其中的一位设置为LED灯亮,其余为全灭。

然后在输出断,将输入端的数据输出;这样就可以控制其中一个小灯。再将输入端中的值做循环一位。然后跳转到程序的开始形成一个死循环

再在其中加上一点点延时程序(延时程序的时间必须要足够长)这样就能够实现跑马灯的效果了

下面我们看一下电路图

跑马灯程序代码:

PORTA=300H
PORTB=301H
PORTC=302H
CONTROL=303H
CG SEGMENT 'CODE'
ASSUME CS:CG
BEGIN: MOV DX,CONTROL
MOV AL,82H
OUT DX,AL
MOV DX,PORTB
MOV AL,0FEH
OUT DX,AL
XYZ: MOV DX,PORTB
out DX,al
ROL AL,1
l2 mov cx,2000
mov bx,300
l1: dec bx
jnz l1
LOOP l2
jmp xyz

 

 

以上就是这个星期学习的一点个人心得,QAQ这个周末还是很慵懒的度过去了;不知道为啥一到周末就没有一点点动力去接着敲代码了。真是不应该,以后得改变改变。