微机原理实验报告25756Word文档格式.docx
《微机原理实验报告25756Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告25756Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
DECDI
A1:
MOVAL,[SI]
MOV[DI],AL
DECSI
DECCX
JNEA1
JMPA3
A2:
INCSI
INCDI
JNEA2
A3:
CODEENDS
ENDSTART
1.1.5实验步骤
1.按流程图编写实验程序,经编译、链接无误后装入系统。
2.用E命令在以SI为起始地址的单元中填入16个数。
3.运行程序,待程序运行停止。
4.通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。
5.通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
1.1.6实验结果
图1图2
图3图4
图5
2.循环程序设计实验
1.2.1实验目的
1.加深对循环结构的理解。
2.掌握循环结构程序设计的方法以及调试方法。
1.2.2实验设备
1.2.3实验内容
计算S=1+2×
3+3×
4+4×
5+…+N(N+1),直到N(N+1)项大于200为止。
编写实验程序,计算上式的结果,参考流程图如图1.6所示。
1.2.4实验程序
SSTACKSEGMENTSTACK
DW64DUP(?
)图1.6程序流程图
MOVDX,0001H
MOVBL,02H
MOVAL,BL
INCBL
MULBL
ADDDX,AX;
结果存于DX中
CMPAX,00C8H;
判断N(N+1)与200的大小
JNAA1
JMPA2
ENDSTART
1.2.5实验步骤
(1)编写实验程序,编译、链接无误后装入系统。
(2)运行程序,待程序运行停止。
(3)运算结果存储在寄存器DX中,查看结果是否正确。
(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于0FFFFH将产生数据溢出。
1.2.6实验结果
实验二8255并行接口实验
2.1实验目的
1.学习并掌握8255的工作方式及其应用。
2.掌握8255典型应用电路的接法。
2.2实验设备
2.3实验内容
查询式输入输出实验。
编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。
要求将一开关设为总开关,由此开关来决定数据灯的显示是否随开关相应改变。
2.4实验步骤
查询输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
具体实验步骤如下述:
(1)实验接线图如图2.1所示,按图连接实验线路图。
(2)编写实验程序,经编译、连接无误后装入系统。
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
图2.18255基本输入输出实验接线图
2.5实验程序
DW32DUP(?
MOVDX,0646H;
控制端口地址0646H送DX,因为8255的cs端口接I0Y1
对应的编址空间是0640H—067FH,所以这里是0646H。
MOVAL,90H;
方式选择控制字送AL
OUTDX,AL;
方式选择控制字输给8255A的控制端口,完成端口A工
作在方式0并作为输入口,端口B工作在方式0并作为输出口。
AA1:
MOVDX,0640H;
控制端口A地址0640H送DX
INAL,DX;
将端口A连接的开关的对应状态送给AL
TESTAL,80H;
检测AL的最高位
JZAA1;
如果为0则跳到AA1
CALLDELAY
MOVDX,0642H;
控制端口A地址0642H送DX
将AL的数据送到8255的端口B,从而使其连接的LED的灯发光
JMPAA1
DELAY:
PUSHCX
MOVCX,0F00H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
2.6实验结果
实验三.8254定时/计数器应用实验
3.1实验目的
1.掌握8254的工作方式及应用编程。
2.掌握8254典型应用电路的接法。
3.2实验设备
3.3实验内容
计数应用实验。
编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示学号末两位。
3.4实验单元电路图
8254实验单元电路图如下图所示:
图3.18254实验电路原理图
3.5实验程序
实验程序清单(A82541.ASM)
A8254EQU06C0H
B8254EQU06C2H
C8254EQU06C4H
CON8254EQU06C6H
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
SSTACK
PUSHDS
MOVAX,0000H
MOVDS,AX
MOVAX,OFFSETIRQ7;
取中断入口地址
MOVSI,003CH;
中断矢量地址
MOV[SI],AX;
填IRQ7的偏移矢量
MOVAX,CS;
段地址
MOVSI,003EH
MOV[SI],AX;
填IRQ7的段地址矢量
CLI
POPDS;
初始化主片8259
MOVAL,11H
OUT20H,AL;
ICW1
MOVAL,08H
OUT21H,AL;
ICW2
MOVAL,04H
ICW3
MOVAL,01H
ICW4
MOVAL,6FH;
OCW1
OUT21H,AL
;
8254
MOVDX,CON8254
MOVAL,10H;
计数器0,方式0
OUTDX,AL
MOVDX,A8254
MOVAL,04H
STI
JMPAA1
IRQ7:
MOVDX,A8254
MOVAX,014DH
INT10H;
显示字符M
MOVAX,0120H
INT10H
MOVAL,20H
OUT20H,AL;
中断结束命令
IRET
CODEENDS
ENDSTART
3.6实验结果
实验四.数据采集实验
4.1实验目的
4.2实验设备
4.3实验内容
要求实现三角波的产生,并且用示波器查看波形。
4.4硬件连线图
4.5实验程序
IOYOEQU0600H
DA0832EQUIOYO+00H*2
STACKSEGMENTSTACK
DW32DUP(?
STACKENDS
CODESEGMENT
CODE,SS:
STACK
START:
MOVAX,00H
MOVDX,DA0832
moval,00h
AA1:
OUTDX,AL
CALLDELAY
INCAL
CMPAL,0FFH
JZAA2
JMPAA1
AA2:
DECAL
CMPAL,00H
JZAA1
JMPAA2
DELAY:
PUSHCX
MOVCX,03FFH
AA3:
PUSHAX
POPAX
LOOPAA3
POPCX
RET
CODEENDS
ENDSTART
4.6实验步骤
4.7实验结果
实验五.求和程序设计
5.1实验目的
1.熟悉KEIL的软件使用环境及单片机C51语言编程;
2.掌握C51环境下内存地址的访问方法及循环程序的实现方法。
5.2实验设备
PC机一台
5.3实验内容
内容:
编写十个字节求和程序。
要求:
十个加数在片内RAM区20H~29H单元;
结果存放在片内RAM区30H,31H区。
5.4实验程序
#include<
absacc>
voidmain()
{
inti,sum=0;
for(i=0;
i<
10;
i++)
sum+=DBYTE[0x20+i];
}
DBYTE[0x30]=sum/256;
DBYTE[0x31]=sum%256;
while
(1);
5.5实验步骤
开机启动KeilC51软件进入μVision2集成开发环境,确认89C51处于软件仿真状态。
完成程序的设计、编辑、编译、连接。
进入DEBUG方式,打开存储器Memory1窗口,在窗口Address栏键入D:
20H;
点击鼠标右键,选择最后一项ModifyMemory,输入十个加数。
调试和运行程序并记录存储器Memory1,D:
30H窗口实验结果。
5.6实验结果
实验六.基于PROTEUS的60S倒计时器设计
6.1实验目的
1.熟悉PROTEUS的软件使用环境及单片机C51语言编程;
2.掌握C51环境下定时中断、并行接口及LED的显示方法。
6.2实验设备
6.3实验内容
60S倒计时器,利用LED显示秒数。
6.4实验电路图
6.5实验程序
reg52.h>
unsignedcharnum,t,n;
unsignedcharcode;
table[]={0xc0,0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9};
unsignedcharcodetable1[]={0x92,0x99,0xb0,0xa4,0xf9,0xc0};
voidmain()
num=0;
t=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
P2=0xc0;
P0=0x82;
while
(1)
{
if(t==10)
num++;
if(num==10)num=0;
P2=table[num];
if(num==1)
P0=table1[n];
n++;
if(n==6)
if(num==0)
voidexter0()interrupt1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
6.6实验步骤
完成程序的设计、编辑、编译、连接、生成HEX文件。
启动ISIS软件链接仿真电路图,下载HEX文件,进行仿真。
6.7实验结果
实验七.外中断实验
7.1实验目的
1.掌握外中断的工作方式及应用编程。
2.掌握并行接口及LED显示器的典型应用电路。
7.2实验设备
7.3实验内容
要求实现外部按键一次(利用KK1按键),LED显示器的值加1。
7.4实验程序
#include<
absacc.h>
SST89x5x4.h>
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
intnum=0;
sbits1=P2^0;
sbits2=P2^1;
sbits3=P2^2;
voiddelay();
voiddisplay(intnum);
{
IT0=1;
EX0=1;
s3=1;
{
display(num);
}
voiddelay()
unsignedcharj;
for(j=0;
j<
60;
j++);
voiddisplay(intnum)
unsignedcharbitge,bitshi;
intge,shi;
shi=num%100/10;
ge=num%10;
bitshi=table[shi];
bitge=table[ge];
s1=0;
s2=1;
P1=bitshi;
//10位
delay();
s1=1;
s2=0;
P1=bitge;
//个位
voidbreak_timer()interrupt0
num=num+1;
7.6实验步骤
进入DEBUG方式,按几次KK1按键,观察LED显示器的值。
7.7实验结果
实验八.静态存储器扩展实验
8.1实验要求
1.复习单片机扩展外部数据存储器的方法。
2.复习常用数据存储器芯片的引脚功能。
8.2实验设备
PC机一台,TD-PITE实验装置一套。
8.3实验目的
1.进一步熟悉单片机仿真实验软件KeilC51调试硬件的方法。
2.掌握单片机系统中存储器扩展的方法。
3.掌握单片机内部RAM和外部RAM之间数据传送的特点。
8.4实验内容
根据实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:
在单片机内部一段连续RAM空间30H~3FH中写入初值00H~0FH,然后将这16个数传送到RAM的0000H~000FH中,最后再将外部RAM的0000H~000FH空间的内容传送到片内RAM的40H~4FH单元中。
传送结果通过KeilC51软件观察。
8.5实验单元电路及连线
8.6实验程序
sfrAUXR=0x8E;
unsignedchari;
AUXR=0x02;
for(i=0;
=15;
DBYTE[0x30+i]=38;
XBYTE[0x0000+i]=DBYTE[0x30+i];
DBYTE[0x40+i]=XBYTE[0x0000+i];
while
(1);
8.7实验步骤
1.打开存储器观察窗口,在存储器#1的Address中输入D:
0x30,在存储器#2的Address中输入X:
0x0000来监视存储器空间。
2.可单步运行程序,观察存储器内容的变化,或在伪停机指令和处设置断点再运行程序,验证实验功能。
8.8实验结果