微机原理实验8255Word文档下载推荐.doc

上传人:b****1 文档编号:13180782 上传时间:2022-10-07 格式:DOC 页数:10 大小:1,011KB
下载 相关 举报
微机原理实验8255Word文档下载推荐.doc_第1页
第1页 / 共10页
微机原理实验8255Word文档下载推荐.doc_第2页
第2页 / 共10页
微机原理实验8255Word文档下载推荐.doc_第3页
第3页 / 共10页
微机原理实验8255Word文档下载推荐.doc_第4页
第4页 / 共10页
微机原理实验8255Word文档下载推荐.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

微机原理实验8255Word文档下载推荐.doc

《微机原理实验8255Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《微机原理实验8255Word文档下载推荐.doc(10页珍藏版)》请在冰豆网上搜索。

微机原理实验8255Word文档下载推荐.doc

8255B口←AL

有按键?

结束

Y

N

程序代码及注释:

CS0EQU3000H;

片选CS0对应的端口始地址

MY8255_AEQUCS0+00H;

8255的A口地址

MY8255_BEQUCS0+01H;

8255的B口地址

MY8255_CEQUCS0+02H;

8255的C口地址

MY8255_MODEEQUCS0+03H;

8255的控制寄存器地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,MY8255_MODE;

初始化8255工作方式

MOVAL,82H;

工作方式0,A口输出,B口输入

OUTDX,AL

LOOP1:

MOVDX,MY8255_B;

读B口

INAL,DX

MOVDX,MY8255_A;

写A口

MOVAH,1;

判断是否有按键按下

INT16H

JZLOOP1;

无按键则跳回继续循环,有则退出

QUIT:

MOVAX,4C00H;

结束程序退出

INT21H

CODEENDS

ENDSTART

实验步骤

(1).设计实验线路图,将PCI总线扩展卡上总线与仿真ISA总线进行连接。

(2).编写程序。

(3).打开实验箱电源,运行程序,拨动开关组,观察数据灯的显示。

实验现象:

拨动开关,每个开关对应的数据灯随着开关的开与关而亮灭。

2、流水线指示灯显示实验:

首先分别将A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,在送到端口上,这样循环下去,从而实现流水灯的显示。

8255流水灯显示实验参考接线图如图所示。

8255B口方式0输出

AL←7FH

循环左移AL

延时

DATASEGMENT

LADB?

;

定义数据变量

LBDB?

DATAENDS

CODE,DS:

DATA

MOVAX,DATA

MOVDS,AX

MOVDX,MY8255_MODE;

定义8255工作方式

MOVAL,80H;

工作方式0,A口和B口为输出

写A口发出的起始数据

MOVAL,80H

MOVLA,AL

MOVDX,MY8255_B;

写B口发出的起始数据

MOVAL,01H

MOVLB,AL

CALLDALLY

MOVAL,LA;

将A口起始数据右移再写入A口

RORAL,1

MOVDX,MY8255_A

MOVAL,LB;

将B口起始数据左移再写入B口

ROLAL,1

MOVDX,MY8255_B

DALLYPROCNEAR;

软件延时子程序

PUSHCX

PUSHAX

MOVCX,0FFFH

D1:

MOVAX,0FFFFH

D2:

DECAX

JNZD2

LOOPD1

POPAX

POPCX

RET

DALLYENDP

(3).打开实验箱电源,运行程序,观察数据灯的显示。

数据灯从右向左依次亮成流线型,并始终保持在同一时间只有一个灯亮着。

3.键盘及显示实验

实验要求将8255单元与LED-KEYBOARD单元连接,编写程序,扫描键盘输入,并将扫描结果送数码块显示。

8255键盘及显示实验参考接线图如图3-6所示。

图3-68255键盘及显示实验参考接线图

DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS;

键值表,0~F对应的7段数码管的段位值

MOVSI,3000H;

建立缓冲区,存放要显示的键值

MOVAL,00H;

先初始化键值为0

MOV[SI],AL

MOV[SI+1],AL

MOV[SI+2],AL

MOV[SI+3],AL

MOV[SI+4],AL

MOV[SI+5],AL

MOVDI,3005H

MOVAL,81H;

方式0,A口、B口输出,C口低4位输入

BEGIN:

CALLDIS;

显示刷新

CALLCLEAR;

清屏

CALLCCSCAN;

扫描按键

JNZGETKEY1;

有键按下则跳置GETKEY1

判断PC键盘是否有按键按下

JZBEGIN;

返回到DOS

GETKEY1:

CALLDIS;

CALLDALLY

再次扫描按键

JNZGETKEY2;

有键按下则跳置GETKEY2

JMPBEGIN;

否则跳回开始继续循环

GETKEY2:

MOVCH,0FEH

MOVCL,00H;

设置当前检测的是第几列

COLUM:

MOVAL,CH;

选取一列,将X1~X4中一个置0

MOVDX,MY8255_C;

读Y1~Y4,用于判断是哪一行按键闭合

L1:

TESTAL,01H;

是否为第1行

JNZL2;

不是则继续判断

设置第1行第1列的对应的键值

JMPKCODE

L2:

TESTAL,02H;

是否为第2行

JNZL3;

MOVAL,04H;

设置第2行第1列的对应的键值

L3:

TESTAL,04H;

是否为第3行

JNZL4;

MOVAL,08H;

设置第3行第1列的对应的键值

L4:

TESTAL,08H;

是否为第4行

JNZNEXT;

MOVAL,0CH;

设置第4行第1列的对应的键值

KCODE:

ADDAL,CL;

将第1列的值加上当前列数,确定按键值

CALLPUTBUF;

保存按键值

KON:

扫描按键,判断按键是否弹起

JNZKON;

未弹起则继续循环等待弹起

NEXT:

INCCL;

当前检测的列数递增

MOVAL,CH

TESTAL,08H;

检测是否扫描到第4列

JZKERR;

是则跳回到开始处

ROLAL,1;

没检测到第4列则准备检测下一列

MOVCH,AL

JMPCOLUM

KERR:

JMPBEGIN

CCSCANPROCNEAR;

扫描是否有按键闭合子程序

MOVAL,00H

将4列全选通,X1~X4置0

MOVDX,MY8255_C

INAL,DX;

读Y1~Y4

NOTAL

ANDAL,0FH;

取出Y1~Y4的反值

CCSCANENDP

CLEARPROCNEAR;

清除数码管显示子程序

段位置0即可清除数码管显示

CLEARENDP

DISPROCNEAR;

显示键值子程序

PUSHAX;

以缓冲区存放的键值为键值表偏移找到键值并显示

MOVSI,3000H

MOVDL,0DFH

MOVAL,DL

AGAIN:

PUSHDX

OUTDX,AL;

设置X1~X4,选通一个数码管

MOVAL,[SI];

取出缓冲区中存放键值

MOVBX,OFFSETDTABLE

ANDAX,00FFH

ADDBX,AX

MOVAL,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1