微型计算机原理与接口技术实验教程_第1页
微型计算机原理与接口技术实验教程_第2页
微型计算机原理与接口技术实验教程_第3页
微型计算机原理与接口技术实验教程_第4页
微型计算机原理与接口技术实验教程_第5页
已阅读5页,还剩22页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/

《微机原理与接口技术》实验安排表

实验时间

实验项目

注意事项:

1、实验室位置:第三教学楼3607(商学院办公室楼上);

2、中午实验的同学12:30分开始,其它按照学校作习时间表;

3、每次实验前写好预习报告,进入实验室时指导老师检查合格后方可进行实验,实验过程中认真记录实验结果和出现的问题,各组独立完成实验,并按规定交实验报告(每个实验做完当堂交报告)。4、分组:

08电科1(1)=学号前36,08电科1(2)=余下的37人;08电科2=全班37人

08电子1(1)=学号前32,08电子1(2)=学号前33-64,08电子1(3)=余下的18人,08电子2(1)=学号前32,08电子2(2)=余下的12人

08通信1(1)=学号前30,08通信1(2)=学号前31-60,08通信1(3)=余下的9人08通信2(1)=学号前30,08通信2(2)=余下的20人

实验1熟悉汇编语言的编程环境

[实验目的]

1.学习并掌握VisualASM软件的使用;

2.学习在MSDOS方式下的手工汇编方式;

3.学习Debug.exe软件的使用方法;

[实验重点和难点]

1.Debug命令

[实验课时]

2学时

[实验仪器]

联想启天2400微型计算机。

[实验原理]

1.80X86微处理的编程结构

1.18086/8088微处理器的movds,ax

movdx,offsetmessagemovah,9int21h;显示字符串

movah,0int16h;等待键盘输入,暂停程序运行movah,4ch

int21h;退出程序codeendsendbegin

汇编、链接、运行该程序,记录运行结果:

2.将上述程序复制到记事本,另存为a1.asm。然后手工编译运行程序。

2.1“另存为”对话框的选择保存路径“C:\dvcc8086”;“保存类型”选择“所有文件”,文件名填“a1.asm”;

2.2“开始”菜单“运行。。。”执行命令“cmd”,进入MSDOS方式,执行“cd\dvcc8086”转换到工作目录“c:\dvcc8086”下;

2.3执行“masma1.asm”将a1.asm汇编成目标代码;

2.4执行“linka1.obj”将a1.obj连接生成可执行文件“a1.exe”

2.5执行“a1.exe”或“a1”可以得到程序的执行结果。

3.用DEBUG命令调试运行上述程序

3.1同2.2

3.2执行“debuga1.exe”,显示“-”号提示符

3.3执行“u”并按“enter”键,可以看到从“begin”行开始的程序代码,该命令为反汇编命令;

3.4连续按“p”+“enter”,可以一步一步、执行程序,并显示每一步的执行结果;也可以按“t”+“enter”,但二者不同的是:后者会进行中断子程序中去,之后就看不懂了。

3.5按“g”+“enter”执行程序,可以得到2中的运行结果,按“q”+“enter”退出。

4.其它DEBUG命令使用,记录命令执行前和执行后的结果

5.用DEBUG调试指令,输入以下程序段

MOVBX,1000MOVCX,10

SUBAX,AXLOP:ADDAL,[BX]ADCAH,0

INCBXJ:LOOPLOPINT3

记录每一个步骤的执行执行结果。

[本实验注意事项]

1.第一次实验,请仔细按照指导书操作,以免出现莫名其妙的错误

[实验总结]

1.

2.

[附实验参考程序]

1.

2.

实验2循环程序设计实验

[实验目的]

1.掌握循环程序和排序程序设计方法。

2.掌握带符号数的比较转移指令:JL,JLE,JG,JGE;

3.伪指令EQU及操作符‘$’的使用;

[实验重点和难点]

1.转移指令的使用

[实验课时]

2学时

[实验仪器]

联想启天2400微型计算机。

[实验原理]

1.参考教材的汇编语言程序设计

[实验assumecs:code,ds:data

begin:movax,dsmovds,axmovcx,7

movbx,offsetstringnext:movdl,[bx]movah,2

int21hincbxloopnext

movah,0int16hmovah,4ch

int21hcodeendsendbegin

编译上面的程序。指出其中的错误并改正错误。2.多重循环

CODESEGMENT

ORG100HASSUMECS:CODE,DS:CODEMAIN:JMPSTART

ARRAYDW1234H,5673H,7FFFH,8000H,0DFFHDW0AB5H,0369H,005FH,5634H,9069HCOUNTEQU$-ARRAY

START:MOVCX,COUNTSHRCX,1DECCX

MOVBL,-1AGAIN:MOVDX,CXANDBL,BL

JEEXITXORBL,BLXORSI,SI

AGAIN1:

NCHG:

EXIT:

CODE

MOVCMPJLEXCHGMOVMOVINCINCDECJNZLOOPINTENDSENDAX,ARRAY[SI]AX,ARRAY[SI+2]NCHGARRAY[SI+2],AXARRAY[SI],AXBL,-1SISIDXAGAIN1AGAIN20HMAIN

输入,汇编并连接此程序。忽略连接时的无堆栈告警。在DEBUG下运行此程序,记录运行结果。

将转移指令JLE改为JBE,JGE和JAE,分别运行并记录排序结果。

[本实验注意事项]

1.

2.

[实验总结]

1.

2.

[附实验参考程序]

1.

2.

实验3子程序设计实验

[实验目的]

1.掌握利用堆栈传递参数的子程序调用方法。

2.掌握子程序递归调用方法。

3.过程调用伪指令:PROC,ENDP,NEAR和FAR。

4.8088指令:CALL,RET,RETn。

5.利用RET指令退出EXE文件的方法。

[实验重点和难点]

1.利用堆栈传递参数的子程序调用方法;

[实验课时]

2学时

[实验仪器]

联想启天2400微型计算机。

[实验原理]

1.参考教材的汇编语言程序设计

2.

[实验DS

XORAX,AXPUSHAXMOVAX,DATA

MOVDS,AXMOVAX,COUNT1PUSHAX

LEAAX,ARY1PUSHAXCALLFARPTRSUM

操作步骤:

(1)输入,汇编并将此程序连接成EXE文件。

(2)用DEBUG的断点命令和T命令运行此程序,观察并记录每次过程调用及进出栈指令前后(带’;’的语句)的SP和堆栈PROCFARMOVBP,SPMOVCX,[BP+6]MOVBX,[BP+4]XORAX,AXADN:ADDAL,[BX]ADCAH,0INCBXLOOPADNMOV[BX],AXRET4SUMENDPPROCEENDSENDSTART

(3)记录最后结果:SUM1,SUM2的段及偏移位置和它们的2.

[实验总结]

1.

2.

[附实验参考程序]

1.2.

RETPROCANDJNEMOVRETPUSHDECCALLPOPMULRETENDPENDPENDSEND

FACT

AL,ALIIAAL,1AXALFACTCXCL

IIA:X2:FACTMAINCODE

START

实验4中断程序设计实验

[实验目的]

1.熟悉PC机系列从中断请求到中断响应处理、中断返回的整个中断过程和详细流程;

2.熟悉掌握中断有关概念

3.了解8259的原理及使用方法

4.学会中断服务程序的编写、入口位置的设置和将用户中断源引入的方法

[实验重点和难点]

1.中断服务程序的编写

[实验课时]

2学时

[实验仪器]

联想启天2400微型计算机。

[实验原理]

1.中断向量的装入

中断向量并非常驻;关中断CLD;MOVES,AX;给ES赋值MOVDI,4*60H;中断向量指针->DI

MOVAX,OFFSET_INTR;中断服务程序偏移值->AXSTOSW;AX->[DI][DI+1]MOVAX,SEG_INTR;中断服务程序段基址->AX

STOSW;AX->[DI+2][DI+3]STI;开中断

(2)将中断服务程序的入口位置直接写入中断向量表

MOVAX,00HMOVES,AX

MOVBX,60H*4;中断号*4->BXMOVAX,006DH;中断服务程序偏移位置MOVES:[BX],AX;装入偏移位置

PUSHCSPOPAX;获取中断服务程序的段基址MOVES:[BX+2],AX;装入段基址

2.中断向量的修改

(1)保存原中断向量(例1CH)的入口位置

MOVAL,N

MOVAH,35HINT21HMOVOLD_INT_SEG,AX

MOVOLD_INT_OFF,BX;取原中断向量的入口位置并保存

(2)设置新的中断向量N的入口位置

MOVAL,N

MOVAH,25HMOVDX,SEGINT_PRMOVDS,DX

MOVDX,OFFSETINT_PRINT21H

(3)恢复原中断向量MOVAL,N

MOVAH,25HMOVDX,OLD_INT_PRMOVDS,DX

MOVDX,OLD_INT_PRINT21H3.主程序结构

CLI;关中断

„;初始化部分,保存原中断向量N的入口位置…;设置新的中断入口位置STI;开中断

„„;主程序的其它处理INTN;(调用中断)„„;主程序的其它处理

CLI;关中断;恢复原来的借用的中断向量STI;开中断

MOVAX,4C00H;退出程序,回到DOSINT21H

4.中断程序结构

INT-PRPROCFARCLI

„„保护现场SETI„„(中断主程序)

CLI„„恢复现场SETI

IRETINT-PRENDP

[实验msgdb"HelloWorld!",’$’

d_segendsc_segsegmentassumecs:c_seg,ds:d_seg

start:movax,d_segmovds,axmovcx,4

l1:movdx,offsetmsgmovah,9hint21h

deccxjzexit1jmpl1

exit1:movax,4c00hint21hc_segends

endstart

2.将上述显示部分功能写成子程序调用的方式,再调试运行

;用子程序的方式实现显示字符串d_segsegmentmsgdb"HelloWorld!",’$’

d_segendsc_segsegmentassumecs:c_seg,ds:d_seg

mainprocfarcalldispcalldisp

exit1:movax,4c00h

int21hmainendpdispprocnear

movax,d_segmovds,axmovdx,offsetmsg

movah,9hint21hret

dispendpc_segendsendmain3.将上述子程序写成中断程序如67H中断(系统为用户预留),并调试运行

;用中段的方式实现显示字符串movds,ax

d_segsegmentmovdx,offsetdispmsgdb"HelloWorld!",’$’movah,25hold_int_segdw0moval,67h

old_int_offdw0int21hd_segendsstis_segsegmentstackret

db250dup(0)init_intendps_segendsrestore_intprocnearc_segsegmentcli

assumecs:c_seg,ds:d_seg,ss:s_seg;movax,d_segmainprocfar;movds,axmovax,d_segmovdx,old_int_offmovds,axmovax,old_int_segcallinit_intmovds,axint67hmovah,25h

int67hmoval,67hint67hint21hcallrestore_intsti

exit1:movax,4c00hretint21hrestore_intendpmainendpdispprocnear

movax,d_seginit_intprocnearmovds,axclimovdx,offsetmsg

moval,67hmovah,9hmovah,35hint21hint21hiret

movold_int_off,bxdispendpmovold_int_seg,esc_segendsmovax,segdispendmain

4.修改系统的时钟中断1CH,编一中断处理程序,让系统每秒钟次显示一个字符串进行提示,共显示20次

参考源程序

;用1CH定时中段的方式实现每秒一个,显示10个字符串

d_segsegment;数据段msgdb"HelloWorld!",’$’old_int_segdw0;存储1ch中断入口的段位置

old_int_offdw0;存储1ch中断入口的偏移位置countdb0;次数,全局变量,在主程序和;中断子程序间通信

count1db0;18次为1秒d_segendss_segsegmentstack;堆栈段

db250dup(0)s_segendsc_segsegment;代码段

assumecs:c_seg,ds:d_seg,ss:s_segmainprocfar;主程序开始movax,d_seg

movds,ax;数据段初始化callinit_int;初始化中断l1:cmpcount,10;50次

jnel1callrestore_int;恢复原1ch中断入口

exit1:movax,4c00h;退出,回到DOSint21hmainendp;主程序结束init_intprocnear;初始化中断子程序开始cli

pushds;保存DS,因程序中修改了它moval,1chmovah,35h

int21hmovold_int_off,bx;保存原1ch的偏移位置movold_int_seg,es;保存原1ch的段位置movax,segdisp;安装新中断程序入口位置movds,axmovdx,offsetdisp

movah,25hmoval,1chint21h

popds;恢复DSstiret

init_intendp;初始化中断子程序结束restore_intprocnear;恢复原中断子程序开始cli

movdx,old_int_offmovax,old_int_segmovds,ax

movah,25hmoval,1chint21h

stiretrestore_intendp;恢复原中断子程序结束

dispprocnear;新的1ch中段程序开始climovax,d_seg;为确保访问到字符串,重新指定DSmovds,axmovdx,offsetmsgmovah,9h;显示字符串

inccount1cmpcount1,18jnelessthen1sec

inccountmovcount1,0int21h

lessthen1sec:stiiretdispendp;新的1ch中段程序结束c_segends;代码段结束endmain;程序结束

[本实验注意事项]

1.实验内容和步骤3、4为学生必做,1、2选做

[实验总结]

1.

2.

[附实验参考程序]

1.

2.

实验58279键盘显示接口实验

[实验目的]

1.学习8279A与微机8088系统的接口方法;

2.了解8279A用在译码扫描和编码扫描方式时的编程方法;

3.8088CPU用查询方式和中断方式对8279A进行控制的编程方法。

[实验重点和难点]

1.8279A的结构和用在译码扫描和编码扫描方式时的编程方法

[实验课时]

2学时

[实验仪器]

DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。

[实验原理]

1.8279的功能与结构

8279A是一种通用的可编程键盘/显示器接口器件,可对64个开关矩阵组成的键盘进行自动扫描,接收键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED自动扫描,使显示缓冲器的内容在LED上显示出来。

内部结构

(1)8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其他状态信息。内部还包含有N分频器,分频系数为N,由2~31之间任一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号(扫描时间为5.1ms,去抖动时间为10.3ms)。

(2)8279A内部的扫描计数器有两种工作方式:一是编码方式,计数器以二进制计数,4位计数器的状态直接从SL0~SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0~SL3上输出,作为4×8键盘和4位显示器的扫描信号,低电平有效。

(3)8279A在键盘工作时,由输入缓冲区锁存RL0~RL7上的信息,以确定键入情况,其内部有去抖动电路(10ms)。

(4)FIFO/传感器RAM:它是一个双功能8×8RAM,在键盘和选通输入方式中,它是一个先进的数据缓冲器。当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号,在传感方式中,8×8RAM用作传感器RAM,当检测到某个传感器发生变化时,IRQ上升为高电平。

(5)显示位置寄存器和显示RAM:用于存放CPU当前正在读写的显示RAM单元位置,以及正在显示的两个4位半字节位置。在选定了工作方式和位置后,CPU可直接读出显示RAM中的内容。

2.8279的编程

(1)键盘显示器方式设置命令

*RESET

后,设定为该种方式。

(2)扫描频率控制命令

(3)读FIFO前设置的读位置命令

FIFO中的数据格式(键盘数据格式):

(4)读显示RAM前设置的读位置命令

(5)写显示RAM前设置的写位置命令

(6)显示RAM写入禁止/消隐命令(BCD码显示用)

显示RAM的位与输出引脚的对应关系:

(7)清除FIFO状态字、显示RAM清除命令

说明:清除显示RAM约需160us,此时FIFO状态字最高位Du=1,表示显示无效,CPU不能向显示RAM写入数据。

(8)中断结束/出错方式设置命令

4、FIFO状态字

FIFO状态字由控制字口读入

FIFO中的数据格式:

[实验内容与步骤]

1.采用系统默认的工作方式和时钟分频模式,编写程序,将键盘的输入转换成显示字形码从8个LED上显示出来.

codesegment

assumecs:codecmd8279equ00dfhdata8279equ00deh

org01000hstart:jmpscankeyleddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h

;0-F的字形码;初始化工作方式,时钟分频的步骤省略,采用系统初始化好的方式;检测是否有键按下,如果有则读取之

scankey:movdx,cmd8279inal,dxtestal,07h

jzscankeymovdx,cmd8279moval,40h;读键值命令

outdx,almovdx,data8279inal,dx;得到的是什么格式?cntl,shift,sl2,sl1,sl0,r2,r1,r0

movbx,offsetledxlat;查表得字形almovbl,al;bl字形

movdx,cmd8279moval,90h;自增outdx,al

movdx,data8279moval,blmovcx,08h

l1:outdx,alloopnzl1jmpscankey

codeendsendstart

2.按照实验原理中所述,修改工作方式和执行其它命令,运行修改后的程序并记录实验结果.

[本实验注意事项]

1.如果采用单步调试运行,程序不能正确执行.

2.

[实验总结]

1.

2.

[附实验参考程序]

1.

2.

实验68253定时/计数器实验

[实验目的]

1.学习8253A可编程定时/计数器与8088CPU的接口方法;

2.了解8253A的工作方式;

3.掌握8253A在各种方式下的编程方法。

[实验重点和难点]

1.8253A在各种方式下的编程方法

[实验课时]

2学时

[实验仪器]

DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。

[实验原理]

1.8253A图6-11

2.计数器内部结构

如图6-11所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。门控端GATE用于控制计数开始和停止。当计数器计数值减到零时,OUT端输出标志信号。

3.8253A端口位置选择

表5-28253A端口位置选择

4.8253A功能

8253A既可作定时器又可作计数器:

(1)计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。

(2)定时:计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。

除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。5.8253A控制字

说明:

(1)8253A每个通道对输入CLK按二进制或二十进制从预置值开始减1计数,减到0时从OUT输入一个信号。

(2)8253A编程时先写控制字,再写时间常数。6、8253A工作方式

(1)方式0:计数结束产生中断方式

当写入控制字后,OUT变成低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

(2)方式1:可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。

(3)方式2:频率发生器方式

当初值装入时,OUT变为高,计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,强逼OUT变高,当GATE再变高时,便启动一次新的计数周期。

(4)方式3:方波发生器

当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。

(5)方式4:软件触发选通

当写入控制字后,OUT输出为高,装入初值且GATE为高时开始计数,当计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。

(6)方式5:硬件触发选通

在GATE上升沿启动计数器,OUT一直保持高电平;计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。

[实验内容与步骤]

1.电路连接

本实验原理图如图5-12所示,8253A的A0、A1接系统位置总线A0、A1,故8253A有四个端口位置,如端口位置表5-2所示。8253A的片选位置为48H~4FH。因此,本实验仪中的8253A四个端口位置为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。

四、实验线路连接

1、8253A芯片的CLK2引出插孔连分频输出插孔1MHZ。

2、8253A的GATE2接开关K1。

2.为各种工作方式编写测试程序,并用软件示波器观察输出波形,记录波形。

2.1方式0测试程序和所观察到的波形,修改置入T2定时器的初值,观察负脉冲的宽度如何变化。

2.2方式1测试程序和所观察到的波形,读取信号周期或脉冲宽度。

2.3方式2测试程序和所观察到的波形,读取信号周期或脉冲宽度。

2.4方式3测试程序和所观察到的波形,读取信号周期或脉冲宽度。

2.5方式4测试程序和所观察到的波形,读取信号周期或脉冲宽度。

2.6方式6测试程序和所观察到的波形,读取信号周期或脉冲宽度。

[本实验注意事项]

1.软件示波器的使用:用专用串行线将另一个串口连接到实验箱的J10,电源开关处的粗白线连接到WAVE插座,表笔一端插入电源指示灯处的红色插孔,另一端接触OUT2。(实验指导书中有点错,不使用0通道!)

2.根据工作方式不同,测试波形时操作方法略有不同。

[实验总结]

1.

2.

[附实验参考程序]

1.1方式0测试程序

CODESEGMENT

ASSUMECS:CODECON8253EQU004BHT2_8253EQU004AH

org1000hSTART:JMPfs0fs0:MOVDX,CON8253;方式010110000

MOVAL,10110000B;方式010110000OUTDX,ALMOVDX,T2_8253

MOVAL,0hOUTDX,AL;低8位初值MOVAL,0fH

OUTDX,AL;高8位初值calldelay;为了看到循环的波形,添加循环功能jmpfs0

delay:MOVCX,08fffHl1:LOOPl1ret

CODEENDSENDSTART

修改置入T2定时器的初值,观察负脉冲的宽度如何变化。

2.

实验78255并口可编程实验

[实验目的]

1.掌握并行接口芯片8255A和微机接口的连接方法。

2.掌握并行接口芯片8255A的工作方式及其编程方法。

[实验重点和难点]

1.8255A的工作方式及其编程方法。

2.

[实验课时]

2学时

[实验仪器]

DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。

[实验原理]

1.8255A结构

8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图5-6是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12位的两组:A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。

图5-68255A结构

引脚图如下所示:

2.8255A端口位置见表5-1

3.8255A工作方式

8255A芯片有三种工作方式:方式0、方式1、方式2。它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。

方式0:基本输入/输出

图5-7(a)图5-7(d)

如图5-7(a)所示。该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分为高4位(PC7~PC4)和低4位(PC3~PC0)两组,也有控制字决定其输入或输出。需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。

方式1:选通输入/输出

图5-7(b)图5-7(c)

如图5-7(b)、(c)所示。该方式又叫单向输入输出方式,它分为A、B组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的底4位组成。数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。

方式2:双向输入输出

如图5-7(d)所示。本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3~PC7)作为A口的控制位。

4.8255A控制字

(1)方式选择控制字

(2)PC口按位置/复位控制字

[实验内容与步骤]

1.实验原理图

如实验原理图5-8所示,PC口8位接8个开关K1~K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~K8,PB口上接的8个发光二极管L1~L8对应显示K1~K8的状态。

图5-8

2.编写程序实验1中的功能。

3.发挥部分:将K1设计为流水灯开关,即当K1为高电平时,L1~L8每三个灯亮,中间隔一个

灯亮,循环点亮。当K1为低电平时,K2~K8为1中的功能。

[本实验注意事项]

1.

2.

[实验总结]

1.

2.

[附实验参考程序]

1.

2.

CODESEGMENTASSUMECS:CODEIOCONPTEQU0073H

IOCPTEQU0072HIOBPTEQU0071HSTART:JMPIOLED

IOLED:MOVAL,89H;10001001B方式有效,AB输出,C输入MOVDX,IOCONPTOUTDX,AL

movcx,3hl1:loopl1IOLED1:MOVDX,IOCPT

INAL,DXMOVDX,IOBPTOUTDX,AL

MOVCX,0FFFFHDELAY:LOOPDELAYJMPIOLED1

CODEENDSENDSTART

实验8电子琴设计实验

[实验目的]

1.掌握模数转换芯片DAC0832的工作原理。

2.通过D/A转换器产生模拟信号,使实验系统作为一简单电子琴。

3.了解利用数模产生音乐的基本方法。

[实验重点和难点]

1.DAC0832的工作原理及编程方法

2.

[实验课时]

2学时

[实验仪器]

DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。

[实验原理]

1.DAC0832结构

DAC0832是用先进的CMOS/Si—Cr工艺制成的双列直插式单片8位D/A转换器。它可以直接和8088CPU相接口。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。而重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为8位,电流建立时间为1us,单一电源5V-15V支流供电,可双缓冲、单缓冲或支流数据输入。

DAC0832内部结构见图5-3。

图5-3

2.DAC0832引脚功能

*DI0~DI7:数据输入线,TTL电平,有效时间应大于90ns(否则锁存的数据会出错);

*ILE:数据锁存允许控制信号输入线,高电平有效;

*/CS:选片信号输入线,低电平有效;

*/WR1:输入锁存器写选通输入线,负脉冲有效(脉宽应大于500ns)。当/CS为“0”、ILE为“1”、/WR1为“0”时,DI0~DI7状态被锁存到输入锁存器。

*/XFER:数据传输控制信号输入线,低电平有效;

*/WR2:DAC寄存器写选通输入线,负脉冲(宽于500ns)有效.当/XFER为“0”且/WR2有效时,输入锁存器的状态被传送到DAC寄存器中;

*lout1:电流输入线,当输入为全1时lout1最大;

*lout2:电流输出线,其值和lout1值之和为一常数;

*Rfb:反馈信号输入线,改变Rfb端外接电容器值可调整转换满量程精度;

*Vcc:电源电压线,Vcc范围为+5V~+15V;

*VREF:基准电压输入线,VREF范围为-10V~+10V;

*AGND:模拟地;

*DGND:数字地

.

3.DAC0832工作方式

根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0382有如下三种工作方式:

(1)单缓冲方式

此方式适用与只有一路模拟量输出或几路模拟量非同步输出的情形。

方法是控制输入锁存器和DAC寄存器同时接数,或者只用输入锁存器而把DAC寄存器接成直通方式。

(2)双缓冲方式

此方式适用于多个DAC0832同时输出的情形

方法是先分别使这些DAC0832的输入锁存器接数,再控制这些DAC0832同时传递数据到DAC寄存器以实现多个D/A转换同步输出。

(3)直通方式

此方式宜于连续反馈控制线路中.

方式是使所有控制信号(/CS、/WR1、/WR2、ILE、XFER)均有效.

4.电流输出转换成电压输出

DAC0832的输出是电流,有两个电流输出端(lout1和lout2),它们的和为一常数.使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出.根据运放和DAC0832的连接方法,运放的电压输出可以分为单极型和双极型两种.图5-4是一种单极型电压输出电路.

图5-4中,DAC0832的lout2被接地,lout1接运放LM741的反相输入端,LM741的正相输入端接地.运放的输入电压Vout之值等于lout1与Rfb之积,Vout的极性与DAC0832的基准电压VREF极性相反.Vout=-(VREF×(输入数字量的十进制数))/256,如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路.

图5-4

2.

[实验org1000hstart:jmpl3

sindatadb128,150,172,192,210,226,238,248,254,255,254,248,238,226,210,192,172db150,128,106,84,64,46,30,18,8,2,1,2,8,18,30,46,64,84,106sincntequ$-sindata

;yinjiedb261,294,330,349,392,440,493;频率1234567yingjiedw207,183,164,154,137,123,109;送定时器的初值sindatapdw0ffffh

yingjiepdw05hdata0832equ000h

l3:xorbx,bxl2:incsindatapmovsi,sindatap

moval,cs:sindata[si]movdx,data0832outdx,al

xorcx,cxmovsi,yingjiep

;movcx,cs:yingjie[si]延时不够长movcx,8l4:deccx

pushcxl1:loopnzl1popcx

loopnzl4incbx

cmpbx,36jnel2movsindatap,0ffffh

jmpl3codeends

endstart

2.

实验8电子琴设计实验

[实验目的]

1.用实验箱的24键中的其中7键模拟电子琴的键盘,产生音阶信号,模拟电子琴。

2.进一步掌握8279和8253的使用方法

[实验重点和难点]

1.数字声音产生的基本方法

2.

[实验课时]

4学时

[实验仪器]

DVCC-8086JH十六位微机仿真实验系统、联想启天2400微型计算机。

[实验原理]

1.DAC0832结构

DAC0832是用先进的CMOS/Si—Cr工艺制成的双列直插式单片8位D/A转换器。它可以直接和8088CPU相接口。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。而重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为8位,电流建立时间为1us,单一电源5V-15V支流供电,可双缓冲、单缓冲或支流数据输入。

DAC0832WR2

有效时,输入锁存器的状态被传送到DAC寄存器中;

*lout1:电流输入线,当输入为全1时lout1最大;

*lout2:电流输出线,其值和lout1值之和为一常数;

*Rfb:反馈信号输入线,改变Rfb端外接电容器值可调整转换满量程精度;

*Vcc:电源电压线,Vcc范围为+5V~+15V;

*VREF:基准电压输入线,VREF范围为-10V~+10V;

*AGND:模拟地;

*DGND:数字地

.

3.DAC0832工作方式

根据对DAC0832的输入锁存器和DAC寄存器的不同的控制方法,DAC0382有如下三种工作方式:

(1)单缓冲方式

此方式适用与只有一路模拟量输出或几路模拟量非同步输出的情形。

方法是控制输入锁存器和DAC寄存器同时接数,或者只用输入锁存器而把DAC寄存器接成直通方式。

(2)双缓冲方式

此方式适用于多个DAC0832同时输出的情形

方法是先分别使这些DAC0832的输入锁存器接数,再控制这些DAC0832同时传递数据到DAC寄存器以实现多个D/A转换同步输出。

(3)直通方式

此方式宜于连续反馈控制线路中.

方式是使所有控制信号(/CS、/WR1、/WR2、ILE、XFER)均有效.

4.电流输出转换成电压输出

DAC0832的输出是电流,有两个电流输出端(lout1和lout2),它们的和为一常数.使用运算放大器,可以将DAC0832的电流输出线性地转换成电压输出.根据运放和DAC0832的连接方法,运放的电压输出可以分为单极型和双极型两种.图5-4是一种单极型电压输出电路.

图5-4中,DAC0832的lout2被接地,lout1接运放LM741的反相输入端,LM741的正相输入端接地.运放的输入电压Vout之值等于lout1与Rfb之积,Vout的极性与DAC0832的基准电压VREF极性相反.Vout=-(VREF×(输入数字量的十进制数))/256,如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路.

图5-4

5.音阶标称频率:

11

*xx为8253的初始值

音阶频率2*1024*1024

[实验2.

[附实验参考程序]

1.;在8253上产生12345671.2.3.4.5.6.7.的声音程序,单步运行;CODESEGMENTASSUMECS:CODE

TCONTROEQU004BHTCON2EQU004AHSTART

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论