微机原理可能的四次实验讲义.docx

上传人:b****5 文档编号:4363806 上传时间:2022-11-30 格式:DOCX 页数:21 大小:540.67KB
下载 相关 举报
微机原理可能的四次实验讲义.docx_第1页
第1页 / 共21页
微机原理可能的四次实验讲义.docx_第2页
第2页 / 共21页
微机原理可能的四次实验讲义.docx_第3页
第3页 / 共21页
微机原理可能的四次实验讲义.docx_第4页
第4页 / 共21页
微机原理可能的四次实验讲义.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

微机原理可能的四次实验讲义.docx

《微机原理可能的四次实验讲义.docx》由会员分享,可在线阅读,更多相关《微机原理可能的四次实验讲义.docx(21页珍藏版)》请在冰豆网上搜索。

微机原理可能的四次实验讲义.docx

微机原理可能的四次实验讲义

1、概述

八十年代以来,国内大中专院校很多专业都相继开设了“微机原理及应用”方面的课程,讲授内容主要是8位机(Z80),实验设备多采用TP801单板机。

随着计算机技术的发展,讲授内容开始逐步转向16位或32位的PC系列微机,实验设备亦需更新,“TPC-2005通用32位微机接口(PCI)实验系统”是我公司继“TPC-2003通用32位微机接口实验系统”的基础上,综合了各学校讲课及实验老师的意见之后推出的微机硬件实验教学设备的新产品。

该仪器增加了实验系统的开放能力和灵活性。

它不仅使一些典型的微机接口实验方便,而且对一些计算机硬件要求较高的专业提供了锻炼学生动手能力,发挥创造才能的平台。

该系统主要有以下特点:

★实验电路连接采用了国家专利、获奖产品“自锁紧”插座及导线,消除了连线

接触不良的现象。

★电路设计中增加了多项保护措施,可有效的避免由于学生实验时错接、错编程损

坏主机或接口集成电路的现象。

★接口实验增加了实用性、趣味性的项目,使用C语言进行实验的程序。

★实验台上增加了逻辑笔、通用IC插座等电路。

可作为数字电路实验仪器使用,也

可以用于学生毕业设计、实验数据的采集及科研开发。

仪器硬件包括接口卡、实验台(箱)两部分组成,两者之间通过50线扁平电缆相

连。

接口卡可以插入PC系列微机中任意一个PCI扩展插槽,它的主要功能是将与实验有关的总线信号加以驱动后引到实验台上,同时引出信号还有与“中断”和“DMA”实验操作有关的信号及+5V、+12V、-12V电源。

实验台上设有I/O地址译码电路、总线插孔、接口实验常用集成电路、外围电路及通用IC插座等部分组成。

外围电路包括逻辑电平开关电路、LED显示电路、时钟电路、单脉冲电路、逻辑笔、复位电路、七段数码管显示电路、基本门电路、继电器及步进电机、小直流电机的驱动电路。

使用说明书中介绍了四十多个微机接口实验。

覆盖了大中专院校微机接口实验教学大纲中的内容。

教师可以根据课时计划安排选作,也可以在此基础上重新设计新的实验项目。

实验三可编程定时器/计数器(8253)

1、实验目的

掌握8253的基本工作原理和编程方法。

二、实验内容

1.按图1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

图1

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

图2

3、编程提示

1、8253控制寄存器地址283H

计数器0地址280H

计数器1地址281H

CLK0连接时钟1MHZ

2、参考流程图(见图3、4):

图3图4

3、参考程序1:

(程序名:

E8253_1.ASM)

ioportequ0d400h-0280h

io8253aequioport+283h

io8253bequioport+280h

codesegment

assumecs:

code

start:

moval,14h;设置8253通道0为工作方式2,二进制计数

movdx,io8253a

outdx,al

movdx,io8253b;送计数初值为0FH

moval,0fh

outdx,al

lll:

inal,dx;读计数初值

calldisp;调显示子程序

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzlll

movah,4ch;退出

int21h

dispprocnear;显示子程序

pushdx

andal,0fh;首先取低四位

movdl,al

cmpdl,9;判断是否<=9

jlenum;若是则为'0'-'9',ASCII码加30H

adddl,7;否则为'A'-'F',ASCII码加37H

num:

adddl,30h

movah,02h;显示

int21h

movdl,0dh;加回车符

int21h

movdl,0ah;加换行符

int21h

popdx

ret;子程序返回

dispendp

codeends

endstart

4、参考程序2:

(程序名:

E8253_2.ASM)

Ioportequ0d400h-0280h

io8253aequioport+280h

io8253bequioport+281h

io8253cequioport+283h

codesegment

assumecs:

code

start:

movdx,io8253c;向8253写控制字

moval,36h;使0通道为工作方式3

outdx,almovax,1000;写入循环计数初值1000

movdx,io8253aoutdx,al;先写入低字节

moval,ahoutdx,al;后写入高字节

movdx,io8253c

moval,76h;设8253通道1工作方式2

outdx,al

movax,1000;写入循环计数初值1000

movdx,io8253b

outdx,al;先写低字节

moval,ahoutdx,al;后写高字节

movah,4ch;程序退出

int21h

codeends

endstart

实验四可编程并行接口

(一)(8255方式0)

1、实验目的

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

2、实验内容

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

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

图5图6

3、编程提示

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

A口的地址288H

C口的地址28AH

2、参考流程图(见图6):

3、参考程序:

E8255.ASM

ioportequ0d400h-0280h

io8255aequioport+288h

io8255bequioport+28bh

io8255cequioport+28ah

codesegment

assumecs:

code

start:

movdx,io8255b;设8255为C口输入,A口输出

moval,8bh

outdx,al

inout:

movdx,io8255c;从C口输入一数据

inal,dx

movdx,io8255a;从A口输出刚才自C口

outdx,al;所输入的数据

movdl,0ffh;判断是否有按键

movah,06h

int21h

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

movah,4ch;否则返回DOS

int21h

codeends

endstart

实验九中断

1、实验目的

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

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

二、实验原理与内容

1、实验原理

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

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

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

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

IRQ008H时钟

IRQ109H键盘

IRQ20AH保留

IRQ30BH串行口2

IRQ40CH串行口1

IRQ50DH硬盘

IRQ60EH软盘

IRQ70FH并行打印机

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

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

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

IRQ8070H实时时钟

IRQ9071H用户中断

IRQ10072H保留

IRQ11073H保留

IRQ12074H保留

IRQ13075H协处理器

IRQ14076H硬盘

IRQ15077H保留

PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。

图7中断电路

2、实验内容

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

要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。

3、编程提示

1.由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。

这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。

WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。

2.由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。

(也可使用自动获取资源分配的程序取得中断号)

3.在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为使用即插即用。

4.在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,如果在使用即插即用操作系统状态下,BIOS将不会给TPC卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。

5.由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下:

movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断

inax,dx

orax,0900h

outdx,ax

其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。

(也可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址,设置含义如下:

设置INTCSR(68H)寄存器,中断模式设置

程序退出前还要关闭9054的中断,代码如下:

movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,关闭中断

inax,dx

andax,0f7ffh

outdx,ax

6.PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:

MOVAL,20H

OUT20H,AL

中断结束返回DOS时应将IMR对应位置1,以关闭中断。

四、参考流程图

图8中断

五、参考程序

程序名:

INT.AS

;386以上微机适用

;纯dos下才能使用

;tasm4.1或以上编译

datasegment

int_vectEQU071H;中断0-7的向量为:

08h-0fh,中断8-15的向量为:

70h-77h

irq_mask_2_7equ011111011b;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零

irq_mask_9_15equ011111101b;中断0-7时全一,中断8-15时从低至高相应位为零

ioport_centequ0d800h;tpc卡中9054芯片的io地址

Csregdw?

ipregdw?

;旧中断向量保存空间

irq_timesdw00h;中断计数

msg1db0dh,0ah,'TPCpcicardInterrupt',0dh,0ah,'$'

msg2db0dh,0ah,'Pressanykeytoexit!

',0dh,0ah,'$'

msg3db0dh,0ah,'PressDMCtointerrupt10timesandexit!

',0dh,0ah,'$'

dataends

stackssegment

db100dup(?

stacksends

codesegment

assumecs:

code,ds:

data,ss:

stacks,es:

data

start:

;EnableLocalInterruptInput

.386

cli

movax,data

movds,ax

moves,ax

movax,stacks

movss,ax

movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断

inax,dx

orax,0900h

outdx,ax

moval,int_vect;保存原中断向量

movah,35h

int21h

movax,es

movcsreg,ax

movipreg,bx

movax,cs;设置新中断向量

movds,ax

movdx,offsetint_proc

moval,int_vect

movah,25h

int21h

inal,21h;设置中断掩码

andal,irq_mask_2_7

out21h,al

inal,0a1h

andal,irq_mask_9_15

out0a1h,al

movax,data

movds,ax

movdx,offsetmsg2

movah,09h

int21h

movdx,offsetmsg3

movah,09h

int21h

movirq_times,0ah

Sti

loop1:

cmpirq_times,0;等待中断并判断中断10次后退出

jzexit

movah,1

int16h

jnzexit;按任意键退出

jmploop1

exit:

cli

movbl,irq_mask_2_7;恢复中断掩码

notbl

inal,21h

oral,bl

out21h,al

movbl,irq_mask_9_15

notbl

inal,0a1h

oral,bl

out0a1h,al

movdx,ipreg;恢复原中断向量

movax,csreg

movds,ax

movah,25h

moval,int_vect

int21h

movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,关闭中断

inax,dx

andax,0f7ffh

outdx,ax

movax,4c00h

int21h

int_procprocfar;中断处理程序

cli

pushax

pushdx

pushds

decirq_times

movax,data;Interrupttodo

movds,ax

movdx,offsetmsg1

movah,09h

int21h

moval,20h;SendEOI

out0a0h,al

out20h,al

popds

popdx

popax

sti

iret

int_procendp

codeends

endstar

实验十四串行通讯

1、实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、实验内容

1、按图9连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟.TXD和RXD连在一起。

2、编程:

从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示。

实现自发自收。

图9串行通讯电路

3、实验提示

1、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。

2、8253计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

3、收发采用查询方式。

四、参考流程图(见图10)

图10

5、参考程序:

E8251.ASM

datasegment

ioportequ0d400h-0280h

io8253aequioport+280h

io8253bequioport+283h

io8251aequioport+2b8h

io8251bequioport+2b9h

mes1db'youcanplayakeyonthekeybord!

',0dh,0ah,24h

mes2ddmes1

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8253b;设置8253计数器0工作方式

moval,16h

outdx,al

movdx,io8253a

moval,52;给8253计数器0送初值

outdx,al

movdx,io8251b;初始化8251

xoral,al

movcx,03;向8251控制端口送3个0

delay:

callout1

loopdelay

moval,40h;向8251控制端口送40H,使其复位

callout1

moval,4eh;设置为1个停止位,8个数据位,波特率因子为16

callout1

moval,27h;向8251送控制字允许其发送和接收

callout1

ldsdx,mes2;显示提示信息

movah,09

int21h

waiti:

movdx,io8251b

inal,dx

testal,01;发送是否准备好

jzwaiti

movah,01;是,从键盘上读一字符

int21h

cmpal,27;若为ESC,结束

jzexit

movdx,io8251a

incal

outdx,al;发送

movcx,0F00h

s51:

loops51;延时

next:

movdx,io8251b

inal,dx

testal,02;检查接收是否准备好

jznext;没有,等待

movdx,io8251a

inal,dx;准备好,接收

movdl,al

movah,02;将接收到的字符显示在屏幕上

int21h

jmpwaiti

exit:

movah,4ch;退出

int21h

out1procnear;向外发送一字节的子程序

outdx,al

pushcx

movcx,0F00h

gg:

loopgg;延时

popcx

ret

out1endp

codeends

endstart

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

当前位置:首页 > 高中教育 > 高中教育

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

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