微机接口实验报告.docx

上传人:b****1 文档编号:14057360 上传时间:2023-06-20 格式:DOCX 页数:30 大小:228.53KB
下载 相关 举报
微机接口实验报告.docx_第1页
第1页 / 共30页
微机接口实验报告.docx_第2页
第2页 / 共30页
微机接口实验报告.docx_第3页
第3页 / 共30页
微机接口实验报告.docx_第4页
第4页 / 共30页
微机接口实验报告.docx_第5页
第5页 / 共30页
微机接口实验报告.docx_第6页
第6页 / 共30页
微机接口实验报告.docx_第7页
第7页 / 共30页
微机接口实验报告.docx_第8页
第8页 / 共30页
微机接口实验报告.docx_第9页
第9页 / 共30页
微机接口实验报告.docx_第10页
第10页 / 共30页
微机接口实验报告.docx_第11页
第11页 / 共30页
微机接口实验报告.docx_第12页
第12页 / 共30页
微机接口实验报告.docx_第13页
第13页 / 共30页
微机接口实验报告.docx_第14页
第14页 / 共30页
微机接口实验报告.docx_第15页
第15页 / 共30页
微机接口实验报告.docx_第16页
第16页 / 共30页
微机接口实验报告.docx_第17页
第17页 / 共30页
微机接口实验报告.docx_第18页
第18页 / 共30页
微机接口实验报告.docx_第19页
第19页 / 共30页
微机接口实验报告.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机接口实验报告.docx

《微机接口实验报告.docx》由会员分享,可在线阅读,更多相关《微机接口实验报告.docx(30页珍藏版)》请在冰点文库上搜索。

微机接口实验报告.docx

微机接口实验报告

 

微机原理与接口技术

 

系别

专业

班级

姓名

学号

指导教师

 

学年第学期

实验一

1、实验目的:

寻找两个字符串中不同的字符

2、源程序代码:

datasegment//ds数据段data为段名

xdb“hello,world!

$”

dataends//data为段名

extrasegment

ydb“hello,world!

$”

extraends

codesegment//伪指令

assumecs:

code,ds:

data,es:

extra//cs与code关联,es与extra关联

start:

movax,data//符号地址送段寄存器

movds,ax//ds赋初值

movax,extra

moves,ax//将ax的内容送到es,es内容不变

leasi,x//取x的有效地址指向si

leadi,y//取y的有效地址指向di

movcx,0ch//cx=0ch

cld//df=0

repzcmpsb//如果ds:

si和es:

di所指向的两个字节相等,则继续比较。

所以如果相等的话,就停止循环。

jcxzexit//防止零作除数,即数组是空数组

decsi//si-1

decdi//di-1

print:

movdl,byteptr[si]//[si]以字节单位存入dl中

movah,02h

int21h//dos中断显示字符

movdl,byteptres:

[di]//将dl中的数据送入以es为基址,di为偏移量所指的地址中去,以字节为单位

movah,02h

int21h//dos中断显示字符

exit:

movah,4ch//返回dos

int21h

codeends//代码段结束

endstart//整个程序结束

 

3、实验流程图:

4、程序运行结果:

5、实验感想:

这个实验的关键是找两个字符串中的不同的字符,实验过程中需要定义两个不同的字符串。

 

实验二

1、实验目的:

灵活运用汇编语言

2、实验内容:

BCD码变量定义如下

XDB1234H

YDB5678H

ZDB

完成Z=X+Y,并显示X,Y,Z

3、

程序流程图:

4、源程序代码:

datasegment//ds数据段data为段名

XDW1234H

YDW5678H

ZDW?

dataends//data为段名

codesegment//伪指令

assumecs:

code,ds:

data

start:

movax,data//送符号地址送段寄存器

movds,ax//将通用寄存器ax的内容送入cpu的ds段寄存器

leasi,x//取x的有效地址指向si

leadi,y//取y的有效地址指向di

leabx,z//取x的有效地址指向bx

movcx,02h//(cx)=02h

clc/清除cf位

pushf//sp<-sp-2

lopx:

popf//sp<-sp+2

moval,byteptr[si]//[si]以字节单位存入al中

movdl,byteptr[di]//[di]以字节单位存入di中

adcal,dl//al+dl带单位存入al

daa//将al的内容调整为2位组合型的二进制

pushf//sp<-sp-2

movbyteptr[bx],al//al存入bx中并强制转换为字符单元

incsi//si跳转到下一个字符

incdi//di跳转到下一个字符

incbx//bx跳转到下一个字符

looplopx//cx减1

leasi,z//取z的有效地址指向si

movdx,[si]//[si]送入dx

movbx,04h//(bx)=04h

movcl,0ch//(cl)=0ch

print:

rordx,cl//dx循环右移cl

movbp,dx//dx送入bp

anddx,000fh//有0为0

adddx,30h//将dx加上30h并传入dx

movah,02h

int21h//dos中断显示字符

movdx,bp//bp送入dx

decbx//bx-1

jnzprint//bx不等于0时继续输出

exit:

movah,4ch

int21h//返回DOS

codeends//代码段结束

endstart//整个程序结束

5、程序运行结果:

6、实验感想:

这个实验没什么复杂的地方,把书上的原理搞懂了问题也就不大了。

实验三

1、实验目的:

流水灯

2、源程序代码:

inportequ0ff00h-280h

inportaequinport+288h

inportctequinport+28bh

codesegment

assumecs:

code

start:

xorax,ax

xordx,dx

moval,80h

movdx,inportct

outdx,al

moval,00h

stc

movdx,inporta

lop:

rclal,1

outdx,al

calldelay

jmplop

delayprocnear

movbx,03fffh

x2:

movbp,0ffffh

x1:

decbp

jnzx1

decbx

jnzx2

ret

delayendp

movah,4ch

int21h

codeends

endstart

3、实验内容:

灯循环依次点亮

4、接口连接:

红绿灯接线:

电源输出J5与开关上的J0相接

J8与计数器上的J0相接

32JHP上的JD2与计数器上的JD相连

计数器上的PA与开关上的JL1相接

计数器上的PB与开关上的JK相接

复位RST与计数器RST相接

计数器32JHP

A0A0

A1A1

8255CSY1

/WRIOW

/RDIOR

5、心得体会:

通过分析引脚来进行连线,就能清楚地了解接口之间如何接

 

实验四

一、实验目的

  通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

  

二、实验内容

  1.如图16-1,L8、L7、L6作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通灯变化规律亮灭。

2.L0对应东西路口绿灯,L1对应东西路口黄灯,L2对应东西路口红灯;L6对应南北路口绿灯,L7对应南北路口黄灯,L8对应南北路口红灯。

  

三、编程提示

1.十字路口交通灯的变化规律要求:

(1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。

(4)南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次。

(5)转

(1)重复。

2.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法见《用户手册》第五章节5.3第10~12点中的介绍。

下面的程序JTD.ASM(在文件夹“ASM_汇编例程”中)是需要用户自己根据查找到的DVCC卡的I/O基址替换到程序中带下划线的位置。

四、实验流程图

 

五、实验代码

datasegment

ioportequ0ff00h-0280h

io8255aequioport+288h

io8255bequioport+289h

io8255cequioport+28ah

io8255ctequioport+28bh

dataends

codesegment

assumecs:

code,ds:

data

start:

xorax,ax

xordx,dx

movax,data

movds,ax

movdx,io8255ct

moval,80h

outdx,al

movdx,io8255c;全红

moval,24h

outdx,al

movdx,io8255a

moval,09h

outdx,al

calldelay

ok:

movdx,io8255c;东西绿,南北红

moval,64h

outdx,al

movdx,io8255a

moval,02h

outdx,al

calldelay

movdx,io8255c;东西黄,南北红

moval,0a4h

outdx,al

movdx,io8255a

moval,02h

outdx,al

calldelay

movdx,io8255c;东西红,南北绿

moval,09h

outdx,al

movdx,io8255a

moval,09h

outdx,al

calldelay

movdx,io8255c;东西红,南北黄

moval,12h

outdx,al

movdx,io8255a

moval,09h

outdx,al

calldelay

jmpok

delayprocnear

movbp,0aff0h

x2:

movbx,0ffffh

x1:

decbx

jnzx1

decbp

jnzx2

ret

delayendp

codeends

endstart

 

六、心得体会

了解了芯片的引脚构造组成,在连接电路图时遇到的了麻烦,没有试验指导书对引脚连线还是不会的,通过老师的示范有所了解,自己动手能连接电路并且实现了端口灯的控制这一应用。

 

实验五

1.实验内容:

交通灯

2.实验分析:

全红L11L10L9L8L7L6L5L4L3L2L1L0

100100100100

C口:

24H

A口:

09H

东西绿南北红

L11L10L9L8L7L6L5L4L3L2L1L0

101001100100

C口:

64H

A口:

02H

东西黄南北红

L11L10L9L8L7L6L5L4L3L2L1L0

001010100110

C口:

0A4H

A口:

02H

东西红南北绿

L11L10L9L8L7L6L5L4L3L2L1L0

100100001001

C口:

09H

A口:

09H

东西红南北黄

L11L10L9L8L7L6L5L4L3L2L1L0

100100010010

C口:

12H

A口:

09H

3实验代码

datasegment

ioportequ0ff00h-0280h

io8255cequioport+28ah

io8255kequioport+28bh

portc1db24h,44h,04h,44h,04h,44h,04h;六个灯可能

db81h,82h,80h,82h,80h,82h,80h;的状态数据

db0ffh;结束标志

dataends

codesegment

assumecs:

code,ds:

data

start:

movcx,3000

delay:

loopdelay

movax,data

movds,ax

movdx,io8255k

moval,80h

outdx,al

movdx,io8255c

re_on:

movbx,0

on:

moval,portc1[bx]

cmpal,0ffh

jzre_on

outdx,al

incbx

movcx,2000h

testal,21h

jzde1

movcx,0ffffh

de1:

movdi,0ffffh

de0:

decdi

jnzde0

loopde1

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzon

exit:

movah,4ch;返回

int21h

codeends

endstart

4.电路连线:

(常用门电路)RST——(8255并行接口8253定时/计数器)RST

(DVCC-32JHP)IOR——(8255并行接口8253定时/计数器)/RD

(DVCC-32JHP)IOW——(8255并行接口8253定时/计数器)/WR

(DVCC-32JHP)A0——(8255并行接口8253定时/计数器)A0

(DVCC-32JHP)A1——(8255并行接口8253定时/计数器)A1

(DVCC-32JHP)Y1——(8255并行接口8253定时/计数器)8255CS

(DVCC-32JHP)JD1——(8255并行接口8253定时/计数器)JD

(电源输出)J8——(8255并行接口8253定时/计数器)J0

(电源输出)J5——(开关量)J0

(开关量)L8——(8255并行接口8253定时/计数器)PA0

(开关量)L9——(8255并行接口8253定时/计数器)PA1

(开关量)L10——(8255并行接口8253定时/计数器)PA4

(开关量)L11——(8255并行接口8253定时/计数器)PA3

(开关量)JL1——(8255并行接口8253定时/计数器)PC

5.心得体会:

通过这次实验了解到交通灯的控制原理,首先必须计算出在全红、东西绿南北红、东西黄南北红、东西红南北绿、东西红南北黄的几种情况下,C口与A口的值,再编写源代码,然后连接电路图,此次电路图也比前两次的复杂一点,要更细心。

 

实验六

一、实验目的

  了解数/模转换器的基本原理,掌握DAC0832芯片的技术参数和使用方法。

  

二、实验内容

  1.按图接线,DAC0832采用单缓冲方式,具有单双极性输出端(图中的DOUT1、DOUT),利用输出指令OUTDX,AL,编写一个小程序,然后单步运行,输出数据给DAC0832,用万用表测量单极性输出端DOUT1及双极性输出端DOUT的电压,验证数字量与电压之间的线性关系。

2.编程从DOUT输出产生正弦波,用示波器观察。

三、编程提示

1.8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:

DOUT1=-Uref×N/256

DOUT=2×Uref×N/256-5

其中,Uref表示参考电压,就是0832第8脚上的电压为+5V,由外部输入。

N表示输入到DA0832的数字量。

3.产生正弦波可根据正弦函数建一个正弦数字量表,取值范围为一个周期,表中数据个数在16个以上。

4、实验流程图

5、实验代码

inportequ0ff00h-280h

da0832equinport+288h

codesegment

assumecs:

code

start:

xorax,ax

xordx,dx

movdx,da0832

ok:

moval,00h

outdx,al

calldelay

moval,0feh

outdx,al

calldelay

jmpok

delayprocnear

movbx,0f000h

x2:

movbp,0f000h

x1:

decbp

jnzx1

decbx

jnzx2

ret

delayendp

codeends

endstart

6、实验体会

芯片0832能实现D/A数模转换,它和D/A转换不同。

它主要是将计算机的数字信号转换为外部设备中连续变化的模拟信号。

而且0832芯片两级缓冲寄存器,利用双缓冲功能,D/A寄存器保持当前要转换的数据,而在输入寄存器中保存下一次要转换的数据。

 

实验七

一、实验目的

  了解模/数转换的基本原理,掌握ADC0809的使用方法。

  

二、实验内容

  1.按图接线。

编写实验程序,用ADC0809完成模拟信号到数字信号的转换,输入的模拟量由系统板上一可调电位器产生0~5V,由Vout插孔和J11同时引出,将此电压送入ADC0809通道0(即IN0),IN0由J1插座引出。

启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字量的关系。

注意:

ADC0809通道IN1~IN7由插座J2~J8引出。

  2.编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。

  3.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法见《用户手册》第五章节5.3第10~12点中的介绍。

下面的程序AD_1.ASM(在文件夹“ASM_汇编例程”中)是需要用户自己根据查找到的DVCC卡的I/O基址替换到程序中带下划线的位置(0C400H)。

三、实验提示

  1.ADC0809包括一个8位的逐次逼近式的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑。

用它可以直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等领域应用非常广泛。

 2.IN0单极性输入电压与转换后数字量的关系为:

N=256×Ui/Uref

其中Ui为输入电压,Uref为参考电压,这里的参考电压为+5V。

3.一次A/D转换的程序可以为:

MOVAL,通道地址

MOVDX,0809片选地址

OUTDX,AL;启动转换

…;延时

INAL,DX;读取转换结果放在AL中

4、实验流程图

五、实验代码:

ioportequ0ff00h-0280h

io0809aequioport+289h

codesegment

assumecs:

code

start:

movdx,io0809a;启动A/D转换器

moval,0h

outdx,al

movcx,0ffh;延时

delay:

loopdelay

inal,dx;从A/D转换器输入数据

movbl,al;将AL保存到BL

movcl,4

shral,cl;将AL右移四位

calldisp;调显示子程序显示其高四位

moval,bl

andal,0fh

calldisp;调显示子程序显示其低四位

movah,02

movdl,20h;加回车符

int21h

movdl,20h

int21h

pushdx

movah,06h;判断是否有键按下

movdl,0ffh

int21h

popdx

jestart;若没有转START

movah,4ch;退出

int21h

dispprocnear;显示子程序

movdl,al

cmpdl,9;比较DL是否>9

jleddd;若不大于则为'0'-'9',加30h为其ASCII码

adddl,7;否则为'A'-'F',再加7

ddd:

adddl,30h;显示

movah,02

int21h

ret

dispendp

codeends

endstart

6、实验感想

模/数转换是将模拟电压或电流转换成数字量,它的过程和原理与用天平称重物体十分相似。

 

实验八

一、实验目的

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

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

二、实验内容

1.按连接好电路,其中8253用于产生8251发送和接收时钟,TXD和RXD连在一起。

  2.编程:

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

显示的内容是:

前一个字符为键盘上输入的字符,后一个是键盘上输入字符的ASCII码加1后字符。

如键入的字符是A,显示的是AB。

3.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法见《用户手册》第五章节5.3第10~12点中的介绍。

下面的程序D8251.ASM(在文件夹“ASM_汇编例程”中)是需要用户自己根据查找到的DVCC卡的I/O基址替换到程序中带下划线的位置(0C400H)。

三、实验提示

1.图示电路8251的片选地址为2B8H,8253的片选地址为280H。

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

3.收发采用查询方式。

四、实验流程图

 

五、实验代码:

datasegment

ioportequ0FF00h-0280h

io8251aequioport+288h

io8251bequioport+289h

mes1db'youcanplayakeyonthekeybord!

',0dh,0ah,24h

mes2ddmes1

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

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;是,从键盘上读

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2