微机原理和接口技术重要实验详细讲解Word下载.docx

上传人:b****5 文档编号:16566237 上传时间:2022-11-24 格式:DOCX 页数:14 大小:20.55KB
下载 相关 举报
微机原理和接口技术重要实验详细讲解Word下载.docx_第1页
第1页 / 共14页
微机原理和接口技术重要实验详细讲解Word下载.docx_第2页
第2页 / 共14页
微机原理和接口技术重要实验详细讲解Word下载.docx_第3页
第3页 / 共14页
微机原理和接口技术重要实验详细讲解Word下载.docx_第4页
第4页 / 共14页
微机原理和接口技术重要实验详细讲解Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

微机原理和接口技术重要实验详细讲解Word下载.docx

《微机原理和接口技术重要实验详细讲解Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理和接口技术重要实验详细讲解Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

微机原理和接口技术重要实验详细讲解Word下载.docx

pushdx

andal,0fh;

首先取低四位

movdl,al

cmpdl,9;

判断是否<

=9

jlenum;

若是则为'

0'

-'

9'

ASCII码加30H

adddl,7;

否则为'

A'

F'

ASCII码加37H

num:

adddl,30h

movah,02h;

显示

movdl,0dh;

加回车符

movdl,0ah;

加换行符

ret;

子程序返回

dispendp

codeends

endstart

1、按图3-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。

*******************

*8253分频*

io8253aequ280h

io8253bequ281h

io8253cequ283h

codesegment//声明代码段

movdx,io8253c;

向8253写控制字movdx,283h;

moval,36h;

使0通道为工作方式3

D7D6D5D4D3D2D1D0=00110110,D7D6=00表示计数器0;

D5D4=11先读写低8为再读写高8位;

D3D2D1=011表示计数器工作方式3;

D0=0表示计数器的初值为二进制数

outdx,al//向283h写控制字

movax,1000;

写入循环计数初值1000

movdx,io8253a

outdx,al;

先写入低字节到计数器0地址280H

moval,ah

outdx,al;

后写入高字节到计数器0地址280H

movdx,io8253c

moval,76h;

设8253通道1工作方式3.D7D6D5D4D3D2D1D0=01110110,D7D6=01表示计数器1;

D5D4=11先读写低8为再读写高8位;

D0=0表示计数器的初值为二进制;

movdx,io8253b

先写低字节到计数器1地址281H

后写高字节到计数器1地址281H

程序退出

codeends

实验四可编程并行接口

(一)(8255方式0)

掌握8255方式0的工作原理及使用方法。

1、实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2、编程从8255C口输入数据,再从A口输出。

1、8255控制寄存器端口地址28BH

A口的地址288H

C口的地址28AH

*******************************;

*8255方式0的C口输入,A口输出*;

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment//定义代码段

movdx,io8255b;

设8255为C口输入,A口输出movdx,28bh//D7=1,D6D5=00(工作方式为0),D4=0(A出),D2=0,D3=1(C入),D0=1(C入)。

moval,8bh//D7D6D5D4D3D2D1D0=10001011,D7=1,D6D5=00,D4=0,D3.D0=0,D2=0,D1=1

outdx,al//设8255为C口输入,A口输出

inout:

movdx,io8255c;

c口的地址28AH从C口输入一数据

inal,dx//将al的数给dx

movdx,io8255a;

A口的地址288H从A口输出刚才自C口

所输入的数据

movdl,0ffh;

判断是否有按键

movah,06h

jzinout;

若无,则继续自C口输入,A口输出

否则返回

endstart

实验七竞赛抢答器

1、了解微机化竞赛抢答器的基本原理。

2、进一步学习使用并行接口。

图7-1为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。

在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下。

设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。

根据读取数据可判断其组号。

从键盘上按空格键开始下一轮抢答,按其它键程序退出。

 

********************************

*本程序为模拟抢答器*

datasegment;

定义数据段

io8255aequ28ah;

端口初始化

io8255cequ288h

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h;

数码表

dataends

codesegment;

定义代码段

code,ds:

data;

有了这一句代码,程序就知道从ds:

data中找到data所定义的存地址,然后传送给ds

movax,data;

把data段的段地址送入es中,以便计算物理地址的时候得到正确的段地址。

movds,ax

movdx,io8255b;

设8255为A口输出,C口输入

movax,89h

movbx,offsetled;

使BX指向段码管首址

sss:

从8255的C口输入数据

inal,dx

oral,al;

比较是否为0

jesss;

若为0,则表明无键按下,转sss

movcl,0ffh;

cl作计数器,初值为-1

rr:

shral,1;

al逻辑右移一位

inccl;

cl减一

jncrr;

如果进位则跳转

moval,cl;

xlat;

交换。

22行到27行应该循环计数

从8255的C端输出“个人觉得是初始化”

outdx,al

movdl,7;

响铃ASCII码为07

movah,2;

输出指令(三条指令一起读)

wai:

movah,1;

键盘输入一个数

cmpal,20h;

是否为空格

jneeee;

不是,转eee,等于零跳转,不等于零继续执行

moval,0;

是,关灭灯

jmpsss;

跳转到sss

eee:

功能调用,该功能为关闭窗,即抢答结束

codeends;

代码段结束

endstart;

程序结束

实验九中断

1、掌握PC机中断处理系统的基本原理。

2、学会编写中断服务程序。

二、实验原理与容

1、实验原理

PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

IBMPC、PC/XT机有一片8259中断控制器对外可以提供8个中断源:

中断源中断类型号中断功能

IRQ008H时钟

IRQ109H键盘

IRQ20AH保留

IRQ3OBH串行口2

IRQ40CH串行口1

IRQ50DH硬盘

IRQ60EH软盘

IRQ70FH并行打印机

8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。

对于PC/AT及286以上微机又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:

中断源中断类型号中断功能

IRQ8070H实时时钟

IRQ9071H用户中断

IRQ10072H保留

IRQ11O73H保留

IRQ12074H保留

IRQ13075H协处理器

IRQ14076H硬盘

IRQ15077H保留

TPC-USB实验板上,固定的接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。

2、实验容

实验电路如图9-1,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。

要求每按一次开关产生一次中断,在屏幕上显示一次“TPCAInterrupt!

”,中断10次后程序退出。

*中断实验*;

messdb'

TPCAinterrupt!

'

0dh,0ah,'

$'

显示TCPAinterrupt!

0dh:

回车0ah:

换行

dataends;

数据段结束

codesegment;

assumecs:

假定code位于代码段,data位于数据段

movax,cs;

cs容送ax中

movds,ax;

ds:

dx容为中断服务程序的入口地址,位于数据段,偏移量送到dx中

movdx,offsetint3;

取中断服务程序的偏移地址送dx中

movax,250bh;

dos调用的功能号为25h,中断矢量是0bh

int21h;

设置IRQ3的中断矢量

inal,21h;

读中断屏蔽寄存器

andal,0f7h;

开放IRQ3中断(与上11110111H,3位为0)

out21h,al;

写进去允许

movcx,10;

记中断循环次数为10次

Sti;

置中断标志位,IF=1

ll:

jmpll;

cx是否为0,等待循环

int3:

中断服务程序

movax,data取数据的地址

movds,ax把数据的地址送到ds

movdx,offsetmess把字符串的偏移地址取出

movah,09显示每次中断的提示信息(ds:

dx=字符缓冲首址)

int21h执行调用

moval,20h20H送al,OCW2=00100000B

out20h,al发出EOI结束中断

loopnextCF=1,不为0,跳到next

inal,21h设中断屏蔽器

oral,08h关闭IRQ3中断

out21h,al写入

sti显中断标志位,IF=1

movah,4ch

int21h返回DOS

next:

iret中断返回

实验十可编程并行接口

(二)(8255方式1)

1、掌握8255工作方式1时的使用及编程。

2、进一步掌握中断处理程序的编写。

1、按图10-1,8255方式1的输出电路连好线路。

2、编程:

每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:

依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。

*8255方式1实验1*;

1codesegment

2assumecs:

3start:

4movax,cs

5movds,ax

6movdx,offsetint_proc;

将int_proc地址送给dx

7movax,250bh;

设置外部中断int_proc类型号为0bh,25H系统设置中断向量程序:

AH=25H,DS:

DX=中断服务入口(由6可知dx中放的是int_proc的地址),AL=中断类型号

8int21h;

调用0bh这个中断(功能0bH描述:

检查标准输入设备上是否有字符可读。

该输入操作可被重定向入口参数:

AH=0bH,)

9movdx,21h;

将21h送给dx

10inal,dx;

将21h号端口的容给al

11andal,0f7h;

开放IRQ3(串口设备)中断

12outdx,al

13movdx,28bh;

设8255为A口方式1输入

14moval,0a0h

15outdx,al

16moval,0dh;

将PC6置位

17outdx,al

18movbl,1

19ll:

jmpll;

循环等待

20int_proc:

21moval,bl

22movdx,288h;

将AL从8255的A口输出

23outdx,al

24moval,20h

25out20h,al

26shlbl,1

27jncnext;

中断次数小于8,返回主程序

28inal,21h

29oral,08h;

关闭IRQ7中断

30out21h,al

31sti;

开中断,将IF置1

32movah,4ch;

返回DOS

33int21h

34next:

iret;

中断返回指令

35codeends

36endstart

接口程序10.2可编程并行接口(8255方式一实验二)

2、进一步掌握中断处理程序的编写。

1、按图10-2,8255方式1输入电路,连好线路。

读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

三、实验原理图

四:

实验流程图

五:

实验代码及注释

*8255方式1实验2*;

code;

假定code位于代码段

;

程序开始

movax,cs;

将cs容送到ax中

movds,ax;

将ax容送到ds中,因为不能段与段之间直接传送,所以借助ax

movdx,offsetint_proc;

将中断子程序的偏移地址送入dx,设置IRQ3中断矢量

movax,250bh;

dos调用25号功能号设置中断向量号,设外部中断int_proc类型号为0bh

int21h

movdx,21h

inal,dx;

读中断屏蔽寄存器

andal,0f7h;

开放IRQ3中断,将第4位置0

outdx,al

movdx,28bh;

将控制寄存器端口地址(28bh)送到dx中

moval,0b8h;

0b8h=10111000D7是标志位,D6,D5是A组方式的选择(方式0,1,2),D4是A口的输入输出选择(0为输出),D3是C口高四位的输入输出选择,D2是B组方式的选择(方式0,1),D1是B口的输入输出选择,D0是C口低四位的输入输出选择。

这里设置8255A口工作于方式1作输入,B口工作于方式0作输出,C口上半部输入,下半部输出

outdx,al;

out的意思是cpu通过执行out指令使WR#有效,即写信息,将命令字或数据写入8255,这里是命令字

moval,09h;

将8255的PC4置位,09h=00001001b,D3,2,1是C口的为选择,这里是PC4,D0位为1表示置位,表示允许中断,当输入的数据缓冲区满的时候,8255向cpu发出INTR中断请求,cpu相映中断,发出RD#信号把数据读入cpu。

movbl,8;

bl为中断次数计数器

int_proc:

movdx,288h;

8255A口地址为288h,这句代码含义为自8255A口输入数据

inal,dx;

in的意思是cpu通过执行IN指令使RD#有效,即发读信号,将数据或状态信息从8255中读入CPU

movdl,al;

将输入的数据保存到dl中

显示ASCII码为DL的字符

回车

movdx,20h

moval,20h;

发出中断结束命令

decbl;

中断次数计数器减一

jnznext;

判断计数器数值,若不为0,则跳到NEXT

inal,21h

oral,08h;

C口的D3,2,1为100表示PC4,D0位为0,表示复位,使INTE复位以禁止中断,PC4是在输入的时候通过置位控制INTEA使A口允许中断,这里是PC4复位,即禁止中断

out21h,al

sti;

开中断

返回中断

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

当前位置:首页 > 小学教育 > 小升初

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

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