当前位置:文档之家› 微机原理实验报告材料

微机原理实验报告材料

微型计算机原理及单片机实验报告班级:学号::实验一 汇编语言程序设计 1 分支程序设计实验1.1.1 实验目的1. 掌握分支程序的结构。

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

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

1.1.3 实验容设计一数据块间的搬移程序。

设计思想:程序要求把存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。

源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。

源数据块目的数据块0HFFFFFH 源数据块目的数据块0HFFFFFH 源数据块目的数据块0HFFFFFH(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 Array MOV DI, 7000HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1: MOV AL, [SI]MOV [DI], ALDEC SIDEC DIDEC CXJNE A1JMP A3A2: MOV AL, [SI]MOV [DI], ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND START1.1.5 实验步骤1. 按流程图编写实验程序,经编译、无误后装入系统。

2. 用E命令在以SI为起始地址的单元中填入16个数。

3. 运行程序,待程序运行停止。

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

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

1.1.6 实验结果图1 图2图3 图4图52.循环程序设计实验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 STACKDW 64 DUP(?) 图1.6 程序流程图CODE SEGMENTASSUME CS:CODESTART: MOV DX,0001HMOV BL,02HA1: MOV AL,BLINC BLMUL BLADD DX,AX ;结果存于DX中CMP AX,00C8H ;判断N(N+1)与200的大小JNA A1A2: JMP A2CODE ENDSEND START1.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显示,验证程序功能。

图2.1 8255基本输入输出实验接线图2.5 实验程序SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOVDX, 0646H ;控制端口地址0646H送DX,因为8255的cs端口接I0Y1对应的编址空间是0640H—067FH,所以这里是0646H。

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

AA1: MOV DX, 0640H ;控制端口A地址0640H送DXIN AL, DX ;将端口A连接的开关的对应状态送给ALTEST AL,80H ;检测AL的最高位JZ AA1 ;如果为0则跳到AA1CALL DELAYMOV DX, 0642H ;控制端口A地址0642H送DXOUT DX, AL ;将AL的数据送到8255的端口B,从而使其连接的LED的灯发光JMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2: PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START2.6 实验结果实验三. 8254定时/计数器应用实验3.1 实验目的1. 掌握8254的工作方式及应用编程。

2. 掌握8254典型应用电路的接法。

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

3.3 实验容计数应用实验。

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

3.4 实验单元电路图8254实验单元电路图如下图所示:图3.1 8254实验电路原理图3.5实验程序实验程序清单(A82541.ASM)A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACK START:PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV [SI], AX ;填IRQ7的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV [SI], AX ;填IRQ7的段地址矢量CLIPOP DS ;初始化主片8259 MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, AL;8254MOV DX, CON8254MOV AL, 10H ;计数器0,方式0OUT DX, ALMOV DX, A8254MOV AL, 04HOUT DX, ALSTIAA1: JMP AA1IRQ7: MOV DX, A8254MOV AL, 04HOUT DX, ALMOV AX, 014DHINT 10H ;显示字符MMOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中断结束命令IRETCODE ENDSEND START3.6 实验结果实验四. 数据采集实验4.1 实验目的1. 掌握8254的工作方式及应用编程。

2. 掌握8254典型应用电路的接法。

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

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

4.4 硬件连线图4.5 实验程序IOYO EQU 0600HDA0832 EQU IOYO+00H*2 STACK SEGMENT STACKDW 32 DUP(?) STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK START :MOV AX,00HMOV DX,DA0832mov al,00h AA1:OUT DX,ALCALL DELAYINC ALCMP AL,0FFHJZ AA2JMP AA1AA2:OUT DX,ALCALL DELAYDEC ALCMP AL,00HJZ AA1JMP AA2DELAY:PUSH CXMOV CX,03FFH AA3:PUSH AXPOP AXLOOP AA3POP CXRETCODE ENDSEND START4.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> 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窗口实验结果。

相关主题