您的当前位置:首页正文

微机原理实验报告

2023-03-24 来源:意榕旅游网


微型计算机原理及单片机

实验报告

班级: 学号: 姓名:

实验一 汇编语言程序设计 1 分支程序设计实验

1.1.1 实验目的

1. 掌握分支程序的结构。

2. 掌握分支程序的设计、调试方法。

1.1.2 实验设备

PC机一台,TD-PITE实验装置一套。

1.1.3 实验内容

设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。

0H0H源数据块目的数据块0H源数据块目的数据块目的数据块源数据块FFFFFHFFFFFHFFFFFH

(a) (b) (c)

图1.1 源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图1.1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.14(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.14(c)所示。

实验程序流程图如图1.5所示。

1.1.4 实验程序如下

SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START:

MOV CX, 0010H图1.5 程序流程图 MOV SI, 6000H 开 始 MOV DI, 7000H CMP SI, DI 源数据块首地址→SI 源数据块首地址→SI JA A2

搬移字节数→CX ADD SI, CX ADD DI, CX >[SI]>[DI]? DEC SI DEC DI

DI←[(SI)] SI←[SI]+[CX]-1A1: MOV AL, [SI]

DI←[DI]+[CX]-1 MOV [DI], AL

SI←[SI]+1 DEC SI DI←[DI]+1DI←[(SI)] DEC DI DEC CX CX←[CX]-1 SI←[SI]-1 DI←[DI]-1 JNE A1

JMP A3

[CX]=0?CX←[CX]-1A2: MOV AL, [SI]

Y MOV [DI], AL

N INC SI [CX]=0? INC DI Y DEC CX

结 束 JNE A2 A3: JMP A3 CODE ENDS END START

1.1.5 实验步骤

1. 按流程图编写实验程序,经编译、链接无误后装入系统。 2. 用E命令在以SI为起始地址的单元中填入16个数。 3. 运行程序,待程序运行停止。

4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。

5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

>N1.1.6 实验结果

图1 图2

图3 图4

图5

2.循环程序设计实验

1.2.1 实验目的

1. 加深对循环结构的理解。

2. 掌握循环结构程序设计的方法以及调试方法。

1.2.2 实验设备

PC机一台,TD-PITE实验装置一套。

1.2.3 实验内容

计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。 编写实验程序,计算上式的结果,参考流程图如图1.6所示。

1.2.4 实验程序

SSTACK SEGMENT STACK

DW 64 DUP(?) 图1.6 程序流程图 SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX,0001H MOV BL,02H A1: MOV AL,BL INC BL MUL BL

ADD DX,AX ;结果存于DX中

CMP AX,00C8H ;判断N(N+1)与200的大小 JNA A1 A2: JMP A2 CODE ENDS END START

开始1→DX2→BL[BL]→AL[BL]+1→BL[AL]×[BL]→AX[DX]+[AX]→DX[AX]>200?

结束1.2.5 实验步骤

(1)编写实验程序,编译、链接无误后装入系统。 (2)运行程序,待程序运行停止。 (3)运算结果存储在寄存器DX中,查看结果是否正确。 (4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于0FFFFH将产生数据溢出。

1.2.6 实验结果

实验二 8255并行接口实验

2.1 实验目的

1. 学习并掌握8255的工作方式及其应用。 2. 掌握8255典型应用电路的接法。

2.2 实验设备

PC机一台,TD-PITE实验装置一套。

2.3 实验内容

查询式输入输出实验。编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求将一开关设为总开关,由此开关来决定数据灯的显示是否随开关相应改变。

2.4 实验步骤

查询输入输出实验

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:

(1)实验接线图如图2.1所示,按图连接实验线路图。 (2)编写实验程序,经编译、连接无误后装入系统。

(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

XD0D0......PA0K0......IOW#IOR#IOY1WRRDCSPB78255单元...D7系统总线...K7D0XD7D7开关及LEDPA7XA1XA2A0A1PB0显示单元 图2.1 8255基本输入输出实验接线图

2.5 实验程序

SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS

CODE SEGMENT ASSUME CS:CODE

START: MOVDX, 0646H ;控制端口地址0646H送DX,因为8255的cs端口接I0Y1 对应的编址空间是0640H—067FH,所以这里是0646H。 MOV AL, 90H ;方式选择控制字送AL

OUT DX, AL ;方式选择控制字输给8255A的控制端口,完成端口A 工 作在方式0 并作为输入口,端口B 工作在方式0 并作为输出口。 AA1: MOV DX, 0640H ;控制端口A地址0640H送DX IN AL, DX ;将端口A连接的开关的对应状态送给AL TEST AL,80H ;检测AL的最高位

JZ AA1 ;如果为0则跳到AA1 CALL DELAY

MOV DX, 0642H ;控制端口A地址0642H送DX

OUT DX, AL ;将AL的数据送到8255的端口B,从而使其连接的LED的灯发光 JMP AA1

DELAY: PUSH CX MOV CX, 0F00H AA2: PUSH AX POP AX LOOP AA2 POP CX RET

CODE ENDS END START

2.6 实验结果

实验三. 8254定时/计数器应用实验

3.1 实验目的

1. 掌握8254的工作方式及应用编程。 2. 掌握8254典型应用电路的接法。

3.2 实验设备

PC机一台,TD-PITE实验装置一套。

3.3 实验内容

计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’5次后,产生一次计数中断,并在屏幕上显示学号末两位。

3.4 实验单元电路图

8254实验单元电路图如下图所示:

XD0D04.7KVCCGATE0...XD7...D7系统总线CLK0XA1XA2A0A1OUT0IOW#IOR#IOY3WRRDCSKK1+单次脉冲单元8254单元MIR7 图3.1 8254实验电路原理图

3.5 实验程序

实验程序清单(A82541.ASM)

A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H

SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS

CODE SEGMENT ASSUME CS:CODE, SS:SSTACK START:PUSH DS

MOV AX, 0000H MOV DS, AX

MOV AX, OFFSET IRQ7;取中断入口地址 MOV SI, 003CH ;中断矢量地址 MOV [SI], AX ;填IRQ7的偏移矢量

MOV AX, CS MOV SI, 003EH MOV [SI], AX CLI

POP DS MOV AL, 11H OUT 20H, AL MOV AL, 08H OUT 21H, AL MOV AL, 04H OUT 21H, AL MOV AL, 01H OUT 21H, AL MOV AL, 6FH OUT 21H, AL ;8254

MOV DX, CON8254

;段地址

;填IRQ7的段地址矢量 ;初始化主片8259 ;ICW1 ;ICW2 ;ICW3 ;ICW4 ;OCW1

AA1: IRQ7: MOV AL, 10H

OUT DX, AL MOV DX, A8254 MOV AL, 04H OUT DX, AL STI JMP AA1

MOV DX, A8254 MOV AL, 04H OUT DX, AL

;计数器0,方式0

CODE MOV AX, 014DH

INT 10H MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL IRET ENDS

END START

;显示字符M

;中断结束命令

3.6 实验结果

实验四. 数据采集实验

4.1 实验目的

1. 掌握8254的工作方式及应用编程。 2. 掌握8254典型应用电路的接法。

4.2 实验设备

PC机一台,TD-PITE实验装置一套。

4.3 实验内容

要求实现三角波的产生,并且用示波器查看波形。

4.4 硬件连线图

4.5 实验程序

IOYO EQU 0600H

DA0832 EQU IOYO+00H*2 STACK SEGMENT STACK DW 32 DUP(?) STACK ENDS CODE SEGMENT

ASSUME CS:CODE,SS:STACK START :MOV AX,00H MOV DX,DA0832 mov al,00h

AA1:OUT DX,AL CALL DELAY INC AL

CMP AL,0FFH JZ AA2 JMP AA1 AA2:OUT DX,AL CALL DELAY DEC AL CMP AL,00H

JZ AA1 JMP AA2 DELAY:PUSH CX

MOV CX,03FFH AA3:PUSH AX POP AX

LOOP AA3 POP CX RET CODE ENDS END START

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 void main() {

int i,sum=0;

for(i=0;i<10;i++) {

sum+=DBYTE[0x20+i]; }

DBYTE[0x30]=sum/256; DBYTE[0x31]=sum%256; while(1); }

5.5 实验步骤

开机启动Keil C51软件进入μVision2 集成开发环境,确认89C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接。

进入DEBUG方式,打开存储器Memory 1窗口,在窗口Address栏键入D:20H;点击鼠标右键,选择最后一项Modify Memory ,输入十个加数。 调试和运行程序并记录存储器Memory 1,D:30H窗口实验结果。

5.6 实验结果

实验六. 基于PROTEUS的60S倒计时器设计

6.1 实验目的

1.熟悉PROTEUS的软件使用环境及单片机C51语言编程; 2. 掌握C51环境下定时中断、并行接口及LED的显示方法。

6.2 实验设备

PC机一台

6.3 实验内容

60S倒计时器,利用LED显示秒数。

6.4 实验电路图

6.5 实验程序

#include

unsigned char num,t,n; unsigned char code;

table[]={0xc0,0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9}; unsigned char code table1[]={0x92,0x99,0xb0,0xa4,0xf9,0xc0};

void main() {

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)

{

t=0;num++;

if(num==10)num=0; P2=table[num]; if(num==1) {

P0=table1[n];n++; } }

if(n==6) {

if(num==0) while(1); } } }

void exter0() interrupt 1 {

TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; }

6.6 实验步骤

开机启动Keil C51软件进入μVision2 集成开发环境,确认89C51处于软件仿真

状态。

完成程序的设计、编辑、编译、连接、生成HEX文件。 启动ISIS软件链接仿真电路图,下载HEX文件,进行仿真。

6.7 实验结果

实验七.外中断实验

7.1 实验目的

1. 掌握外中断的工作方式及应用编程。

2. 掌握并行接口及LED显示器的典型应用电路。

7.2 实验设备

PC机一台,TD-PITE实验装置一套。

7.3 实验内容

要求实现外部按键一次(利用KK1按键),LED显示器的值加1。

7.4 实验程序

#include #include unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int num=0; sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2; void delay();

void display(int num);

void main() {

IT0=1; EA=1; EX0=1; s3=1; while(1) { display(num); } }

void delay()

{

unsigned char j; for(j=0;j<60;j++); }

void display(int num) {

unsigned char bitge,bitshi; int ge,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;//个位

delay(); }

void break_timer() interrupt 0 {

num=num+1; }

7.6 实验步骤

开机启动Keil C51软件进入μVision2 集成开发环境,确认89C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接。

进入DEBUG方式,按几次KK1按键,观察LED显示器的值。

7.7 实验结果

实验八. 静态存储器扩展实验

8.1 实验要求

1. 复习单片机扩展外部数据存储器的方法。 2. 复习常用数据存储器芯片的引脚功能。

8.2 实验设备

PC机一台,TD-PITE实验装置一套。

8.3 实验目的

1. 进一步熟悉单片机仿真实验软件Keil C51 调试硬件的方法。 2. 掌握单片机系统中存储器扩展的方法。

3. 掌握单片机内部RAM 和外部RAM 之间数据传送的特点。

8.4 实验内容

根据实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:在单片机内部一段连续RAM 空间30H~3FH 中写入初值00H~0FH,然后将这16 个数传送到RAM 的0000H~000FH 中,最后再将外部RAM 的0000H~000FH 空间的内容传送到片内RAM 的40H~4FH 单元中。传送结果通过Keil C51 软件观察。

8.5 实验单元电路及连线

8.6 实验程序

#include sfr AUXR=0x8E; void main() {

unsigned char i;

AUXR=0x02;

for(i=0;i<=15;i++) DBYTE[0x30+i]=38; for(i=0;i<=15;i++)

XBYTE[0x0000+i]=DBYTE[0x30+i]; for(i=0;i<=15;i++)

DBYTE[0x40+i]=XBYTE[0x0000+i]; while(1); }

8.7 实验步骤

1. 打开存储器观察窗口,在存储器#1 的Address 中输入D:0x30,在存储器#2 的Address 中输入X:0x0000 来监视存储器空间。

2. 可单步运行程序,观察存储器内容的变化,或在伪停机指令和处设置断点再运行程序,验证实验功能。

8.8 实验结果

因篇幅问题不能全部显示,请点此查看更多更全内容