您好,欢迎来到刀刀网。
搜索
您的当前位置:首页微机原理实验报告

微机原理实验报告

来源:刀刀网
 .

微型计算机原理及单片机

实验报告

班级: 学号: 姓名:

教育资料

.

实验一 汇编语言程序设计 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 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 JNE A1 DI←[DI]-1 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的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

教育资料

>N .

1.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 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, 06H ;控制端口地址06H送DX,因为8255的cs端口接I0Y1 对应的编址空间是00H—067FH,所以这里是06H。 MOV AL, 90H ;方式选择控制字送AL

教育资料

.

OUT DX, AL ;方式选择控制字输给8255A的控制端口,完成端口A 工 作在方式0 并作为输入口,端口B 工作在方式0 并作为输出口。 AA1: MOV DX, 00H ;控制端口A地址00H送DX

IN AL, DX ;将端口A连接的开关的对应状态送给AL TEST AL,80H ;检测AL的最高位

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

MOV DX, 02H ;控制端口A地址02H送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 ;填IRQ7的段地址矢量 CLI

POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 6FH ;OCW1 OUT 21H, AL ;8254

MOV DX, CON8254 MOV AL, 10H ;计数器0,方式0 OUT DX, AL MOV DX, A8254 MOV AL, 04H

.

AA1: IRQ7:

OUT DX, AL

STI JMP AA1

MOV DX, A8254 MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H

CODE

;显示字符M

MOV AX, 0120H

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

END START

;中断结束命令

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 集成开发环境,确认C51处于软件仿真状态。

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

进入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;

教育资料

t=0;num++;

TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; P2=0xc0; P0=0x82; while(1) {

if(t==10) {

.

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 集成开发环境,确认C51处于软件仿真状态。

完成程序的设计、编辑、编译、连接、生成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 集成开发环境,确认C51处于软件仿真状态。

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

进入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 实验结果

教育资料

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

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务