微机原理与接口技术实验报告交大.docx

上传人:b****7 文档编号:10614919 上传时间:2023-02-21 格式:DOCX 页数:39 大小:689.64KB
下载 相关 举报
微机原理与接口技术实验报告交大.docx_第1页
第1页 / 共39页
微机原理与接口技术实验报告交大.docx_第2页
第2页 / 共39页
微机原理与接口技术实验报告交大.docx_第3页
第3页 / 共39页
微机原理与接口技术实验报告交大.docx_第4页
第4页 / 共39页
微机原理与接口技术实验报告交大.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术实验报告交大.docx

《微机原理与接口技术实验报告交大.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告交大.docx(39页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术实验报告交大.docx

微机原理与接口技术实验报告交大

微机实验报告

 

姓名:

章叶满

学号:

10214021

班级:

电子1001

时间:

2012年12月30日

 

实验一交通灯控制实验

一、实验目的

通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与接口技术”课程所学的X86汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软件编程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。

(1)掌握利用X86汇编语言技巧

(2)掌握X86微处理器与可编程并行接口芯片8255A硬件电路设计

(3)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。

二、实验内容

基本功能:

设计一个交通控制系统,该控制系统工作后,交通灯按照如下规律变化:

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

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

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

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

(5)返回

(1)依次循环。

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

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

红黄绿红黄绿

图5-1硬件连接示意图

三、参考流程图

四、源程序及注释

DATASEGMENT;定义数据段

XDB?

DATAENDS

STACK1SEGMENTSTACK;定义堆栈段

DW100HDUP(0)

STACK1ENDS

CODESEGMENT;定义段码段

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0EC0BH

MOVAL,10000000B;工作方式0,C口输出

OUTDX,AL

FIRST:

MOVDX,0EC0AH

MOVAL,00100100B

OUTDX,AL;南北绿灯亮,东西红灯亮,写入C口

MOVCX,0;送入初值65536

MOVAX,4000H;软件长延时

DELAY1:

DECAX

JNZDELAY1

LOOPDELAY1

MOVBL,4;控制黄灯亮的次数

SECOND:

MOVDX,0EC0AH

MOVAL,01000100B

OUTDX,AL;南北黄灯亮,东西红灯亮,写入C口

MOVCX,3000H

MOVAX,0100H

LI1:

DECAX

JNZLI1

LOOPLI1

MOVDX,0EC0AH;软件短延时

MOVAL,00000100B;南北黄灯灭,东西红灯亮,写入C口

OUTDX,AL

MOVCX,3000H

MOVAX,0100H

WEN1:

DECAX

JNZWEN1;软件短延时

LOOPWEN1

DECBL

JNZSECOND;黄灯闪烁4次

THIRD:

MOVDX,0EC0AH

MOVAL,10000001B

OUTDX,AL;南北红灯亮,东西绿灯亮,写入C口

MOVCX,0

MOVAX,4000H

DELAY2:

DECAX;软件长延时

JNZDELAY2

LOOPDELAY2

MOVBL,4;控制黄灯亮的次数

FORTH:

MOVDX,,0EC0AH

MOVAL,10000010B

OUTDX,AL;南北红灯亮,东西绿灯亮,写入C口

MOVCX,3000H

MOVAX,0100H

LI2:

DECAX

JNZLI2;软件短延时

LOOPLI2

MOVDX,0EC0AH

MOVAL,10000000B

OUTDX,AL;南北红灯亮,东西黄灯灭,写入C口

MOVCX,3000H

MOVAX,0100H

WEN2:

DECAX

JNZWEN2

LOOPWEN2

DECBL

JNZFORTH;黄灯闪烁4次

MOVDL,0FFH

MOVAH,06H

INT21H;执行键盘输入操作

JZFIRST

MOVAH,4CH

INT21H;返回操作系统

CODEENDS

ENDSTART

五、总结

本次实验为8255A并行接口实验,这次实验在代码编写阶段一开始找到了入手点。

我在程序中使用了软件延时,时长取决与循环次数和计算机的速度,一开始编制的程序中短延时采用了两层循环,由于自己没有实践经验,所以最后通过实验结果确定了最后的数据。

通过此次程序设计,我认识到画软件流程图的重要性,画好流程图后可以很清晰的看清逻辑,不仅加快了编写过程,而且有利于出错时查找问题所在。

虽然这次实验我是一步一步编程下来的,但是在调试结果时,仍发现了红灯错亮的问题,最后发现时写程序时的粗心所致。

实验二可编程定时器/计数器

一、实验目的

通过实验了解可编程定时器/计数器的本质是计数,学会再设计应用系统中如何用接口芯片实现计数和定时功能,通过实验思考并比较标准TTL集成电路实现计数和可编程定时器/计数器有什么不同,各有哪些特点?

思考计数器可以用哪些场合。

(1)掌握8253A与X86微机处理硬件连接原理

(2)掌握8253A计数定时应用编程

(3)熟悉掌握8253A在PC机系统中典型应用方法并思考如何应用在其他系统中。

二、实验内容

基本功能

(1)利用单脉冲发生器作为8253A可编程计数定时器时钟信号,实现N个脉冲后产生输出高电平信号

(2)利用8253A可编程计数定时器实现产生1S钟定时输出程序设计,输入1MHZ

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

图5-28253输入连线图

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

图5-38253输出连线图

(3)实验原理

8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。

8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。

本实验用到的是方式0—计数结束中断。

在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。

在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平,并且保持高电平。

三、参考流程图

四、源程及注释

(1)实现N个脉冲后产生输出高电平

DATASEGMENT

NEQU06H;计数器初值,

CHLDB0AH,0DH,'$';回车换行

DATAENDS

STACK1SEGMENTSTACK

DW100DUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0EC03H;控制寄存器地址

MOVAL,00010000B;计数器0,工作方式0,二进制

OUTDX,AL;写入控制字

MOVDX,0EC00H;计数器0地址

MOVAL,N

OUTDX,AL;写入计数初值

MOVCL,N

L0:

MOVAL,00H;计数器0锁存

MOVDX,0EC03H

OUTDX,AL

MOVDX,0EC00H

INAL,DX;读取当前端口的数值

CMPAL,CL

JNEL0;若AL不等于CL,则继续到L0循环

DECCL;CL减1来更改CL值

MOVDL,AL

CMPDL,09H;DL与9比较,小于9跳到L1

JLEL1

ADDDL,07H;DL大于9加7变成A-F之间的数

LI:

ADDDL,30H

MOVAH,02H;单字符输出计数器当前值

INT21H

MOVDX,OFFSETCHL;输出字符换行

MOVAH,09H

INT21H

MOVDL,0FFH;执行键盘输入操作

MOVAH,06H

INT21H

JZL0

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)计数器定时产生一秒的定时输出

DATASEGMENT

XDB100DUP(?

DATAENDS

STACK1SEGMENTSTACK

DW100HDUP(0)

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0EC03H

MOVAL,00110110B;计数器0,工作方式3,二进制

MOVDX,AL;写入控制口

MOVDX,0EC00H

MOVAX,1000;计数值1000

OUTDX,AL;写入计数器0低字节

MOVAL,AH

OUTDX,AL;写入计数器0高字节

 

MOVDX,0EC03H

MOVAL,01110110B;计数器1,工作方式3,二进制

MOVDX,AL;写入控制口

MOVDX,0EC01H

MOVAX,1000;计数值1000

OUTDX,AL;写入计数器1低字节

MOVAL,AH

OUTDX,AL;写入计数器1高字节

CODEENDS

ENDSTART

五、总结

通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。

实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。

实验三可编程中断控制器

一、实验目的

通过实验了解中断是计算机系统最重要的工作方式之一,理解中断能实现系统协调工作,了解中断在操作系统,工业控制中的应用。

通过实验可学会可编程中断控制器8259的结构、中断申请、中断响应、中断处理、中断返回等中断原理,掌握中断系统的编程与应用。

(1)掌握PC机8259A可编程中断控制器中断基本原理

(2)掌握中断源、中断处理过程、中断向量表的建立、DOS的使用

(3)熟悉主程序、中断服务程序编写,了解中断相应过程

二、实验内容

(1)学习PC机系统中断原理

(2)利用手动产单脉冲作为中断请求信号,要求每按一次开关产生一次中断在屏幕上显示一次“TPCpcicardInterrupt”中断10次后程序退出。

实验电路图如下

在DOS系统下查得中断源地址为000BH,对应的中断源IRQ11,所对应的中断变量类型号为73H。

9054的I/O起始地址为0E800H。

8259A主片端口地址为20H、21H

8259A从片端口地址为A0H、A1H

(3)编程提示

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

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

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

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

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

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

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的偏移是关于中断使能的寄存器地址,设置含义如下:

程序退出前还要关闭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,以关闭中断。

三、参考流程图

流程图如下:

四、源程及注释

DATASEGMENT

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

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

70h-77h

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

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

IOPORT_CENTEQU0E800H;TPC卡中9054芯片的io地址

CSREGDW?

IPREGDW?

;旧中断向量保存空间

IPR_TIMESDW10H;中断计数

MSG1DB0DH,0AH,'TPCpcicardInterrupt',0DH,0AH,'$'

MSG2DB0DH,0AH,'Pressanykeytoexit!

',0DH,0AH,'$'

MSG3DB0DH,0AH,'PressDMCtointerrupt10timesandexit!

',0dh,0ah,'$'

DATAENDS

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

;EnableLocalInterruptInput

.386

CLI

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

MOVDX,IOPORT_CENT+68H;设置tpc卡中9054芯片io口,使能中断

INAX,DX

ORAX,0900H

OUTDX,AX

MOVAL,INT_VECT;保存原中断向量

MOVAH,35H;35H功能调用

INT21H

MOVAX,ES

MOVCSREG,AX

MOVIPREG,BX

MOVAX,SEGINT_PROC;设置新中断向量

MOVDS,AX;中断服务程序入口段地址送DS

MOVDX,OFFSETINT_PROC;中断服务程序入口偏移地址送DX

MOVAL,INT_VECT;IRQ11的中断类型号送AL

MOVAH,25H;25H功能调用

INT21H

INAL,21H;设置中断掩码,读IRM

ANDAL,IRQ_MASK_2_7;允许主片请求中断

OUT21H,AL;写中断屏蔽字OCW1

INAL,0A1H;设置中断掩码,读IRM

ANDAL,IRQ_MASK_9_15;允许从片请求中断

OUT0A1H,AL;写中断屏蔽字OCW1

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMSG2

MOVAH,09H;9号功能,输出给定字符串

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_MZSK_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,0E7FFH

OUTDX,AX

MOVAX,4C00H;结束,返回DOS

INT21H

INT_PROCPROCFAR;中断服务程序

PUSHAX;保护现场

PUSHDX

PUSHDS

DECIRQ_TIMES

MOVAX,DATA;中断处理,输出给定字符串

MOVDS,AX

MOVDX,OFFSETMSG1

MOVAH,09H

INT21H

MOVAL,20H;写OCW2,送中断结束命令EOI

OUT0A0H,AL

OUT20H,AL

POPDS

POPDX

POPAX

STI

IRET

INT_PORCENDP

CODEENDS

ENDSTART

五、总结

做实验之前,我预习实验指导书,通过课本第六章的例题6-3,我大体知道怎么样才能实现,但不知道怎样设置TPCK卡的中断使能,不知道什么叫做中断掩码,以致编写程序有些困难,通过老师的讲解我明白了中断使能的编写,中断掩码就是编写82599A的0CW1。

通过实验,学会了8259A芯片初始化,掌握8259A基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。

实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。

实验四模/数转换器ADC0809

一、实验目的

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

二、实验内容

1、实验电路原理图如图下。

通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)

2、将JP3的1、2短接,使IN2处于双极性工作方式,并给IN1输入一个低频交流信号(幅度为±5V),编程采集这个信号数据并在屏幕上显示波形。

3、实验提示:

ADC0809的IN0口地址为298H,IN1口地址为299H。

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

其中Ui为输入电压,UREF为参考电压,这里的参考电压为PC机的+5V电源。

、一次A/D转换的程序可以为

MOVDX,口地址

OUTDX,AL;启动转换

;延时

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

三、参考流程图

主程序

显示子程序

四、源程及注释

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0EC18H;启动A/D转换器

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,02H;2号功能

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

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

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

ASCII:

ADDDL,30H;显示

MOVAH,02H

INT21H

RET

DISPENDP

CODEENDS

ENDSTART

五、总结

实验中,开始显示的是满屏数据据,通过在空格符前加MOVDL,0AH;MOVDL,0DH;即回车换行控制命令,实现了一列显示。

通过实验,基本掌握了ADC0809基本工作原理。

实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。

实验五双机串行通讯

一、实验目的

1、进一步了解串行通信的基本原理。

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

3、熟悉PC机串行口的基本连接方法。

二、实验内容

1、PC机RS-232串口自发自收。

按照PC机串口自发自收的连接方法连线。

编写PC机自发自收串行通信程序,要求:

从键盘输入一个字符,将

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

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

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

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