微机实验报告交大电信版.docx

上传人:b****6 文档编号:7022612 上传时间:2023-01-16 格式:DOCX 页数:34 大小:559.23KB
下载 相关 举报
微机实验报告交大电信版.docx_第1页
第1页 / 共34页
微机实验报告交大电信版.docx_第2页
第2页 / 共34页
微机实验报告交大电信版.docx_第3页
第3页 / 共34页
微机实验报告交大电信版.docx_第4页
第4页 / 共34页
微机实验报告交大电信版.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

微机实验报告交大电信版.docx

《微机实验报告交大电信版.docx》由会员分享,可在线阅读,更多相关《微机实验报告交大电信版.docx(34页珍藏版)》请在冰豆网上搜索。

微机实验报告交大电信版.docx

微机实验报告交大电信版

 

微机原理与接口技术

实验报告

 

学院:

电子信息工程学院

专业:

学号:

学生:

指导教师:

黄赞武

实验一交通灯控制实验

一、实验目的

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

二、实验内容

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

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

 

三、编程提示

1、8255地址分析:

控制寄存器地址:

0EC0BH

A口地址:

04EC08H

C口地址:

04EC0AH

2、十字路口交通灯的变化规律要求

(1)南北路口的绿灯、东西路口的红灯同时亮三秒;

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

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

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

(5)转

(1)重复。

 

3、程序设计流程图:

 

 

四、汇编语言程序清单

STACKSEGMENT

DB100DUP(0)

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVDX,0EC0BH

MOVAL,10010000B;A口方式0输入

OUTDX,AL

FIRST:

MOVDX,0EC0AH

MOVAL,00100100B

OUTDX,AL;南北绿,东西红

MOVCX,0

MOVAX,0;软件延时

LO:

DECAX;延时64K*64K个TCP

JNZLO

LOOPLO

MOVBL,6

SECOND:

MOVDX,0EC0AH

MOVAL,01000100B

OUTDX,AL;南北黄,东西红

MOVCX,0

MOVAX,1FFFH

LP1:

LOOPLP1

DECAX

JNZLP1

MOVDX,0EC0AH;延时64k*8K个Tcp

MOVAL,00000100B;南北黄灭

OUTDX,AL

MOVCX,0

MOVAX,1FFFH

LP2:

LOOPLP2

DECAX

JNZLP2;延时64k*8K个Tcp

DECBL

JNZSECOND;黄灯闪烁6次

THIRD:

MOVDX,0EC0AH

MOVAL,10000001B

OUTDX,AL;南北红,东西绿

MOVCX,0

MOVAX,0;软件延时

LI:

DECAX;延时64K*64K个TCP

JNZLI

LOOPLI

MOVBL,6

FORTH:

MOVDX,0EC0AH

MOVAL,10000010B

OUTDX,AL;南北红,东西黄

MOVCX,0

MOVAX,1FFFH

LY1:

LOOPLY1

DECAX

JNZLY1;延时64k*8K个Tcp

MOVDX,0EC0AH

MOVAL,10000000B

OUTDX,AL;东西黄灭

MOVCX,0

MOVAX,1FFFH

LY2:

LOOPLY2

DECAX

JNZLY2

DECBL

JNZFORTH;黄灯闪烁6次

MOVDL,0FFH;DOS6号功能调用,按任意键返回

MOVAH,06H

INT21H

JZFIRST

MOVAH,4CH

INT21H;返回操作系统

CODEENDS

ENDSTART

五、实验现象

(1)南北路口的绿灯、东西路口的红灯同时亮三秒;

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

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

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

(5)转

(1)重复。

六、主要问题及解决办法和心得体会

在做本实验的编程时,最大的困难是编程部分,对于之前的参考资料,进行学习后我发现,软件延时程序部分要亮三秒钟左右,因此要不断调整延迟的次数,才能保证交通灯点亮的时间满足要求。

我们可以知道,发光二极管是共阴极相连,所以若要其发亮应给高电平。

黄灯闪烁是让其不断交替亮灭来实现,所以在编程时其亮和灭的时间要比正常点亮时短,因此延时次数要少。

通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。

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

一、实验目的

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

二、实验内容

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

 

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

 

三、编程提示

1、8253地址分析:

控制寄存器地址:

0EC03H

计数器0地址:

04EC00H

计数器1地址:

04EC01H

CLK0连接时钟:

1MHz。

2、程序参考流程图

 

四、汇编语言程序清单

1、实验内容一程序:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0EC03H;计数器0,方式0

MOVAL,00010000B

OUTDX,AL

MOVDX,0EC00H

MOVAL,0EH;送初值E

OUTDX,AL

MOVCL,1

READ:

INCCL;自加1

CMPCL,0

JZSTART

MOVDX,0EC00H;读计数器0口

INAL,DX

MOVDL,AL

MOVCL,AL

CMPAL,9

JGBIG

ADDDL,30H;0到9,显示ASCII数字

MOVAH,02H

INT21H

MOVDL,0DH

INT21H

JMPJUDGE

BIG:

ADDDL,37H;大于9,显示ASCII字母

MOVAH,02H

INT21H

MOVDL,0DH;加回车符,只显示一个符号

INT21H

JMPJUDGE

JUDGE:

MOVDL,0FFH;有键按下回DOS

MOVAH,06H

INT21H

JZREAD

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、实验内容二程序:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0EC03H;计数器0置控制字为工作方式3

MOVAL,00110110B

OUTDX,AL

MOVDX,0EC00H

MOVAX,1000;向计数器0送初值

OUTDX,AL;先送低字节后送高字节

MOVAL,AH

OUTDX,AL

MOVDX,0EC03H;计数器1置控制字为工作方式3

MOVAL,01110110B

OUTDX,AL

MOVDX,0EC01H;向计数器1送初值

MOVAX,1000;先送低字节后送高字节

OUTDX,AL

MOVAL,AH

OUTDX,AL

NEXT:

MOVDL,0FFH;DOS6号功能调用,按任意键返回

MOVAH,06H

INT21H

MOVAH,4CH;返回系统

INT21H

CODEENDS

ENDSTART

五、实验现象

1、实验内容一:

用手动逐个输入单脉冲,在屏幕上从计数器初值E开始显示,此时逻辑笔显示为低电平,单脉冲每输入一个,计数器值将会减1,同时在屏幕上显示,当计数器值减到0时,逻辑笔显示为高电平。

如果键盘上有键按下回到DOS系统。

如果没有的话,再输入单脉冲会重复以上现象。

2、实验内容二:

接通电路后,逻辑笔交替显示高低电平。

变化频率约为1Hz。

六、主要问题及解决办法和心得体会

在做本实验的编程时,首先遇见的第一个问题是对于调用显示的语句MOVDL,0DH;INT21H的理解,其结果显示的数值不是一个,而是一行一行不停显示。

通过现场老师的讲解,这个语句,加回车符,只显示一个符号,问题得以解决。

第二个问题就是用tpc2003在编译的时候,在黑屏后无法出来结果,我们查看了程序发现程序修改无误,最后在老师的帮助下,我们进入td界面进行底层调试,用F9运行,最后出现了所需要的结果。

经过此次上机实验,我掌握了上机调试的初步经验,编程能力也得到了一次验证,此外还加深了对课本理论知识的理解。

这为下面的实验打下了初步的基础。

实验三中断实验

一、实验目的

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个中断源:

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

52

IRQ8070H实时时钟

IRQ9071H用户中断

IRQ10072H保留

IRQ11O73H保留

IRQ12074H保留

IRQ13075H协处理器

IRQ14076H硬盘

IRQ15077H保留

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

2、实验内容

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

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

三、编程提示

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

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

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

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

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

3.在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就

53

无法做实验,这时需要将此选项修改为使用即插即用。

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,以关闭中断。

四、参考流程图

1、参考程序

程序名:

INT.ASM

;386以上微机适用

;纯dos下才能使用

;tasm4.1或以上编译

DATASEGMENT

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

08H-0FH,中断8-15的向量为:

70H-77H

55

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;设置新中断向量

56

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

57

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

六、主要问题及解决办法和心得体会

本次实验的程序在实验电脑中已经写好,我们所需要做的工作是理解弄懂他们,在看过程序后,我们主要发现了几个问题,一个是在开头就有的关于两个端口的设置,因为前四位是没有要求的,但是最后还是有了四个1。

在咨询了老师之后我们发现,如此是为了在后面与两个字处理进行相与和相或,使其保持原来的一致性,最后我们不得不佩服设计程序者的聪明的头脑了。

实验四模/数转换器

一、实验目的

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

二、实验内容

1、实验原理图如下所示。

通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。

 

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

 

三、编程提示

1、0809地址分析:

IN0口地址:

0EC18H

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

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

movdx,口地址;启动转换

outdx,al

;延时

inal,dx;读取转换结果放在AL中

4、程序设计流程图

四、汇编语言程序

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,0

MOVDX,0EC18H

OUTDX,AL;启动

MOVDX,0FFFH

MOVCX,0

DELATE:

LOOPDELATE

DECDX

JNZDELATE;延时

WP:

MOVDX,0EC18H

INAL,DX;读IN0口

MOVDL,AL

MOVCL,4

SHRDL,CL;右移4位

CMPDL,9

JGBIG

ADDDL,30H;ASCII显示0~9,并显示

MOVAH,06H

INT21H

JMPNEXT

BIG:

ADDDL,37H;ASCII码A~F,并显示

MOVAH,06H

INT21H

JMPNEXT

NEXT:

MOVDX,0EC18H;读IN0口

INAL,DX

MOVDL,AL

ANDDL,00001111B;屏蔽高4位

CMPDL,9

JGBIGS

ADDDL,30H;ASCII显示0~9,并显示

MOVAH,06H

INT21H

JMPJUDGE

BIGS:

ADDDL,37H;ASCII码A~F,并显示

MOVAH,06H

INT21H

JMPJUDGE

JUDGE:

MOVDL,0DH;加回车符,只显示一个两位数字

INT21H

MOVDL,0FFH

MOVAH,06H

INT21H

JZSTART;有键按下返回DOS

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

五、实验现象:

敲入:

DEBUG

-0EC180

-IEC18

显示读取的结果,两位16进制数。

启动程序,转动实验台左下角电位器RW1,计算机屏幕上显示连续的两位十六进制码,这就是输入IN0口的模拟电压转换的数字量。

六、主要问题及解决办法和心得体会

这个实验不需要初始化,因此最关键的部分是显示功能的设计,同时也是最难的。

开始时我没有想到一种好的方法,通过参考其他同学的程序,我采用了循环移位显示高位,屏蔽高位显示低位的方法。

并且忘了区分1-9和A-F在转为ASCII符号时区别,当调高电压时并不显示A-F,后来分情况讨论,改正了这个问题。

但是在调试过程中,出现了精度不准,采样速度过于满等问题,我们通过调整延时,改变了精度,调用换行符实现了数据保存后显示。

实验五PC机串行通讯实验

一、实验目的

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

2、掌握串行接口芯片8250的基本原理和编程方法

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

二、实验内容

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

按照PC机串口自发自收的连接方法(将RS232C的DB9的电缆插头第2脚和第3脚短接)连线。

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

从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。

2、2台PC间RS-232串口通信:

按照PC机RS-232串口直接互连的方法连接两台PC机。

编写PC机直接互连串行通信程序;要求:

由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。

当键入感叹号“!

”,结束收发过程。

三、编程提示

1、地址分析:

PC机自带两个串口,分别为COM1和COM2,本实验选用COM1,地址为3F8H-3FFH。

2、程序设计流程图:

自发自收:

 

 

双机通信:

发送程序:

 

 

接收程序:

 

四、汇编语言程序

程序1——自发自收:

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,80H;初始化

MOVDX,

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

当前位置:首页 > 总结汇报

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

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