微机接口实验报告验证性实验.docx

上传人:b****8 文档编号:9778760 上传时间:2023-02-06 格式:DOCX 页数:21 大小:343.60KB
下载 相关 举报
微机接口实验报告验证性实验.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

微机接口实验报告验证性实验

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

一、实验目的

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

二、实验原理

本实验采用8253A作为技术芯片。

8253有三个独立的16位计数器,每个计数器都有六种不同的工作方式,均可由程序设置和改变。

8253计数器波希早写入控制字和技术初值后才启动工作,所以在编写程序的时候应分为两步,先写入控制字,再写入计数初字。

三、实验内容

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

图5-1

实验现象:

外无脉冲输入时,计数器值不变,屏幕也就不显示,当且仅当有脉冲输入,计数器计数值改变时才显示一次计数值,当输入N+1个脉冲后OUT变高电平。

实验程序流程图:

实验程序:

DATASEGMENT

TISHIDB0DH,0AH,'IFPRINT',0DH,0AH,'$'

IOPORTEQU0C400H-0280H

IO8253EQUIOPORT+283H

IO8253AEQUIOPORT+280H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,0C403H

MOVAL,00010000B

OUTDX,AL;计数器0,方式0,二进制

MOVDX,0C400H

MOVAL,N

OUTDX,AL;计数器赋值

MOVBL,N

LOP:

MOVDX,0C403H

MOVAL,0;锁存

OUTDX,AL

MOVDX,0C400H;读计数器0

INAL,DX

ANDAL,0FH

CMPBL,AL;判断计数值是否改变

JZLOP2

MOVBL,AL;改变将AL赋给BL

CMPAL,9;判断是否大于9

JLELOP1;小于等于9跳转LOP1,加30H变为ASCII码

ADDAL,7;大于9加37H变为其ASCII码

LOP1:

ADDAL,30H

MOVDL,AL

MOVAH,02H;显示

INT21H

MOVDL,0DH;回车

MOVAH,02H

INT21H

MOVDL,0AH;换行

MOVAH,02H

INT21H

lop2:

MOVDL,0FFH;判断是否有键按下

MOVAH,6

INT21H

JZLOP

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

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

图5-2

 

实验现象:

本实验是个分频器,运行程序,通过观察试验箱的LED逻辑笔交替闪亮,可发现由OUT1口输出的信号是被分频之后的脉冲信号。

实验程序流程图:

实验程序:

A0EQU04C00h

A1EQU04C01h

A2EQU04C02h

A3EQU04C03h;8253端口地址

NEQU1000;计数初值

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,A3

MOVAL,00110110B;计数器0控制字,方式3

OUTDX,AL

MOVDX,A0

MOVAX,N

OUTDX,AL;写计数初值低字节

MOVAL,AH

OUTDX,AL;写计数初值高字节

MOVDX,A3

MOVAL,01110110B;计数器1控制字,方式3

OUTDX,AL

MOVDX,A1

MOVAX,N

OUTDX,AL;写计数初值低字节

MOVAL,AH

OUTDX,AL;写计数初值高字节

MOVAH,01H

CMPAL,03H;CTR-C结束

JZOUTER

JMPL

OUTER:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

实验中遇到问题及解决办法:

本次实验,第二个实验的基本原理比较简单,编译程序过程中基本没遇到大问题,但是在实验中发现在屏幕显示效果不够理想,具体为屏幕上重复的显示一个数字当输入令一个脉冲时屏幕上全屏显示令一个数字。

所以我在程序上更改了下,具体是首先将初始值赋值给BL,再读计数器0值判断是否和BL相等,如相等再重新读计数器值直到计数器值和BL值不相等(也就是输入一个脉冲时)再显示计数器值,同时将AL值赋值给BL。

如此就能解决在屏幕上全屏显示计数器值的缺陷。

实验也圆满完成。

 

实验二交通灯控制实验

一.实验目的

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

二.实验内容

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

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

图5-3

实验程序流程图:

实验现象:

通过对8255并行接口输入不同的控制指令来实现交通灯的相互转换,具体现象如下所示

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

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

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

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

(5)转

(1)重复。

实验程序:

A0EQU04C08h

A1EQU04C09h

A2EQU04C0Ah

A3EQU04C0Bh;8255端口地址

D1EQU0005h

D2EQU0FFFFh;调整闪烁时间

CODESEGMENT

ASSUMECS:

CODE

L:

MOVDX,A3

MOVAL,10000000B;控制字,C口方式0

OUTDX,AL

MOVDX,A2

MOVAL,00000000B;清零,灯全灭

OUTDX,AL

L1:

MOVAL,00101000B;南北路口绿灯亮,东西路口红灯亮

OUTDX,AL

CALLDELLAY1;延时3秒左右

MOVCX,D1

L2:

MOVAL,01001000B;南北路口黄灯亮,东西路口红灯亮

OUTDX,AL

CALLDELLAY2

MOVAL,00001000B;南北路口黄灯灭,东西路口红灯亮

OUTDX,AL

CALLDELLAY2

LOOPL2;形成闪烁

L3:

MOVAL,10000001B;南北路口红灯亮,东西路口绿灯亮

OUTDX,AL

CALLDELLAY1

L4:

MOVAL,10000010B;南北路口红灯亮,东西路口黄灯亮

OUTDX,AL

CALLDELLAY2

MOVAL,10000000B;南北路口红灯亮,东西路口黄灯灭

OUTDX,AL

CALLDELLAY2

LOOPL4;形成闪烁

MOVAH,01H

CMPAL,03H;CTR-C结束

JZOUTER

JMPL1

OUTER:

MOVAX,4C00H

INT21H

DELLAY1PROC

PUSHCX

PUSHAX

MOVCX,0FFFFh

T10:

LOOP$

MOVCX,00FFh

T11:

MOVAX,00FFh

T12:

DECAX

JNZT12

LOOPT11

POPAX

POPCX

RET

DELLAY1ENDP

DELLAY2PROC

PUSHAX

MOVAX,D2

T21:

DECAX

JNZT21

POPAX

RET

DELLAY2ENDP

CODEENDS

ENDL

 

实验中遇到问题及解决办法:

本实验在原理上不难,但在编译过程中需要头脑清醒,运行程序时过,程序经常出现死循环,主要是因为在写程序时过分相信自己的记忆力了,没有写注释,以后要注意!

而且在实现黄灯闪亮的时候遇到困难,在程序设计时,我是以为时钟频率是1.8432MHZ所以我以两重循环,内层0FFFFH,外层3CH次刚好能使延时达到3秒,但是实验证明,时钟频率不是1.8432MHZ所以我增加了外层循环次数,使得长延时基本上在三秒左右,段延时在0.3秒左右,经过多次计算和调试终于通过调用合适的短延时来实现黄灯的闪亮,并实现了最后的实验效果。

 

实验三竞赛抢答器

一、实验目的

1.了解抢微机化竞赛答器的基本原理。

2.进一步学习使用并行接口。

二、实验内容

图5-4为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。

在七段数码管上将其组号(0~7)显示出来,并使喇叭响一下。

从键盘上按空格键开始下一轮抢答,按其它键程序退出。

图5-4

实验程序流程图:

实验现象:

设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。

根据读取数据可判断其组号,从键盘上按空格键开始下一轮抢答,按其它键程序退出。

运行程序,当随机按下电路板上0—7的数字时,与之相对应的LED会发亮并且微机喇叭会响一下,当想进行下一轮抢答时,必须按空格键。

实验程序:

A0EQU04C00h

A1EQU04C01h

A2EQU04C02h

A3EQU04C03h;8255端口地址

DATASEGMENT

LISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;显示表数据

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

L:

MOVDX,A3

MOVAL,10001001B;控制字,A口输出,C口输入

OUTDX,AL

MOVDX,A2

INAL,DX;读C口

MOVBX,OFFSETLIST

MOVCX,0

L2:

CMPAL,CX;C口输入是否为零

JZL2

L3:

PUSHAX

SHRAL,1

INCCX

CMPAL,0

JNZL3;求出组号,存入CL

POPAX

L4:

DECCX

ADDBX,CX

MOVAL,[BX];查出显示段码

MOVDX,A0

OUTDX,AL

CALLDELLAY1

MOVDL,7;响铃功能

MOVAX,0200H

INT21H

MOVAH,01H

CMPAL,'';是否为空格

INT21H

JNZOUTER;退出

JZL5

L5:

MOVAL,11111111B

MOVDX,A0

OUTDX,AL;清除显示

CALLDELLAY1

JMPL;重新开始

OUTER:

MOVAX,4C00H

INT21H

CODEENDS

ENDL

DELLAY1PROC

PUSHCX

PUSHAX

MOVCX,0FFFFh

T11:

MOVAX,0FFFFh

T12:

DECAX

JNZT12

LOOPT11

POPAX

POPCX

RET

DELLAY1ENDP

实验中遇到问题及解决办法:

本实验从原理上讲跟上以实验基本相同,在区分组数的时候遇到了一些问题,最初我开始设置的CX为8,从C口输入的数据同8比较,后来发现设置成0就简单了很多。

 

实验四PC机串行通讯实验

一、实验目的

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

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

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

二、实验内容

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

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

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

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

2、两台PC机间RS-232串口通信。

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

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

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

当键入感叹号“!

”,结束收发过程。

实验现象:

单机通信时,运行程序,当键盘输入一个字符时,比如按“A”,屏幕上显示“AA?

”,实现自发自收功能。

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

当键入感叹号“!

”,结束收发过程。

实验程序:

1.单机通信

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,80H

MOVDX,3FBH

OUTDX,AL

MOVAL,0CH

MOVDX,3F8H

OUTDX,AL

MOVAL,00H

MOVDX,3F9H

OUTDX,AL

MOVAL,0AH

MOVDX,3FBH

OUTDX,AL

MOVAL,00H

MOVDX,3FCH

OUTDX,AL

MOVAL,0

MOVDX,3F9H

OUTDX,AL

WAIT_FOR:

MOVDX,3FDH

INAL,DX

TESTAL,00011110B

JNZERROR

TESTAL,00000001B

JNZRECEIVE

TESTAL,00100000B

JZWAIT_FOR

MOVAH,1

INT21H

MOVDX,3F8H

OUTDX,AL

JMPWAIT_FOR

RECEIVE:

MOVDX,3F8H

INAL,DX

ANDAL,01111111B

CMPAL,03H

JNZCHAR

MOVAX,4C00H

CHAR:

PUSHAX

MOVDL,AL

MOVAH,2

INT21H

POPAX

JMPWAIT_FOR

ERROR:

MOVDX,3FDH

INAL,DX

MOVDL,'?

'

MOVAH,02H

JMPWAIT_FOR

CODEENDS

ENDSTART

 

双机通信:

A8EQU2F8h

A9EQU2F9h

AAEQU2FAh

ABEQU2FBh

ACEQU2FCh

ADEQU2FDh

AEEQU2FEh;发送8251端口地址,COM2

BODEVEQU0030H;除数寄存器初值(1.8432Mhz)

CODESEGMENT

ASSUMECS:

CODE

START:

;发送8251初始化

MOVAL,80h;置DLAB=1

MOVDX,AB

OUTDX,AL

MOVDX,A8

MOVAX,BODEV

OUTDX,AL;写除数寄存器低字节

INCDX

MOVAL,AH

OUTDX,AL;写除数寄村器高字节

MOVAL,0Ah

MOVDX,AB

OUTDX,AL;写线路控制寄存器,7位数据,1位停止,奇校验

MOVAL,03h

MOVDX,AC

OUTDX,AL;写MODEM控制寄存器

MOVAL,0

MOVDX,A9

OUTDX,AL;写中断允许寄存器,屏蔽全部中断

WAIT1:

MOVDX,AD

INAL,DX

TESTAL,00100000B;发送寄存器为空

JZWAIT1

MOVAH,01h

INT21H

MOVDX,A8

OUTDX,AL

JMPWAIT1

CODEENDS

ENDSTART

 

实验中遇到问题及解决办法:

在本次实验过程中,首先调试的是串口通信,串口通信相对简单,书上都以个基本一样的例题,只是将MODEM控制寄存器自检改成非自检就可以实现功能了。

在是实现双机通信时,本来我是打算可以两台机器同时发送和接受,但是如果甲机发送数据乙机的按个键才能接受,应为他开始程序奇偶,一值呆在,读键盘那步骤,后来一想,放弃了,直接以台机器发送,一台机器接受就能满足实验要求了。

所以我分开编写程序,接受的机器只管接受,发送的机器只管发送,按照这种思想,实验要求所要求的功能就实现了。

 

实验感想:

本次实验是一次硬件、软件联合在一起的综合性实验,对我们更透彻地掌握书本上的内容有很大的帮助,实验用的8253、8255、8250等芯片都是在通信领域中最基本的功能芯片,透彻掌握这些芯片的原理和使用方法对我们将来的学习帮助不言而喻,特别是在自己编译程序的过程中,对自己的编译水平会有重新的把握和认识,还有在自己连接电路的过程中,对电路的构造也会有更深的认识。

在自己一遍遍调试过程中,锻炼了我们发现问题、解决问题的能力。

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

当前位置:首页 > 求职职场 > 简历

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

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