1、微机原理实验报告25756微型计算机原理及单片机实验报告班级:学号: 姓名:实验一 汇编语言程序设计1 分支程序设计实验1.1.1 实验目的1. 掌握分支程序的结构。2. 掌握分支程序的设计、调试方法。1.1.2 实验设备PC机一台,TD-PITE实验装置一套。1.1.3 实验内容设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。(a) (b) (c)图1.1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图1.1(a),数据的传送从数据块的首地址开始,
2、或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址目的块首地址时,从数据块末地址开始传送数据,如图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
3、 CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, SI MOV DI, AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL, SI MOV DI, AL INC SI INC DI DEC CX JNE A2 A3: JMP A3 CODE ENDS END START1.1.5 实验步骤1. 按流程图编写实验程序,经编译、链接无误后装入系统。2. 用E命令在以SI为起始地址的单元中填入16个数。3. 运行程序,待程序运行停止。4. 通过D命令查看DI为起始地址的单元
4、中的数据是否与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 实验内容计算S1233445N(N1),直到N(N1)项大于200为止。编写实验程序,计算上式的结果,参考流程图如图1.6所示。1.2.4 实验程序SSTACK SEGMENT STACK DW 64 DUP(?) 图1.6 程序流程图S
5、STACK 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.2.5 实验步骤(1)编写实验程序,编译、链接无误后装入系统。 (2)运行程序,待程序运行停止。 (3)运算结果存储在寄存器DX中,查看结果是否正确。(4)可以改变N(N1)的条件来验证程序功能是否正确,但要注意,结果若大于0FF
6、FFH将产生数据溢出。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芯片编
7、程来实现输入输出功能。具体实验步骤如下述:(1)实验接线图如图2.1所示,按图连接实验线路图。(2)编写实验程序,经编译、连接无误后装入系统。(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。图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对应的编址空间是0640H067FH,所以这里是0646H。MOV AL, 90H ;
8、方式选择控制字送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
9、CX, 0F00H AA2: PUSH AX POP AX LOOP AA2 POP CX RET CODE ENDS END START2.6 实验结果实验三. 8254定时/计数器应用实验3.1 实验目的1. 掌握8254的工作方式及应用编程。2. 掌握8254典型应用电路的接法。3.2 实验设备PC机一台,TD-PITE实验装置一套。3.3 实验内容计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动KK15次后,产生一次计数中断,并在屏幕上显示学号末两位。3.4 实验单元电路图8254实验单元电路图如下图所示:图3.1 8254实验电路原理图3.5 实验程序
10、实验程序清单(A82541.ASM)A8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACK DW 32 DUP(?)SSTACK ENDSCODE SEGMENT ASSUME CS:CODE, SS:SSTACKSTART:PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址 MOV SI, 003EH M
11、OV 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 OUT DX, AL STIAA1: JMP A
12、A1IRQ7: MOV DX, A8254 MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H ;显示字符M MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRETCODE ENDS END START3.6 实验结果实验四. 数据采集实验4.1 实验目的1. 掌握8254的工作方式及应用编程。2. 掌握8254典型应用电路的接法。4.2 实验设备PC机一台,TD-PITE实验装置一套。4.3 实验内容要求实现三角波的产生,并且用示波器查看波形。4.4 硬件连线图4.5 实验程序IOYO EQU
13、 0600HDA0832 EQU IOYO+00H*2STACK SEGMENT STACK DW 32 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART :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
14、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区20H29H单元;结果存放在片内RAM区30H,31H区。5.4 实验程序#includevoid main()int i,sum=0;for(i=0;i10;i+)sum+=DBYTE0x20+i;DBYTE0x30
15、=sum/256;DBYTE0x31=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环
16、境下定时中断、并行接口及LED的显示方法。6.2 实验设备PC机一台6.3 实验内容60S倒计时器,利用LED显示秒数。6.4 实验电路图6.5 实验程序#includeunsigned 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=(
17、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=tablenum;if(num=1)P0=table1n;n+; if(n=6)if(num=0)while(1);void exter0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;t+;6.6 实验步骤开机启动Keil C51软件进入Vision2 集成开发环境,确认89C51处于软件仿真状态。完成程序的设计、编辑、编译
18、、连接、生成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=P20;s
19、bit s2=P21;sbit s3=P22;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;j60;j+); void display(int num) unsigned char bitge,bitshi; int ge,shi; shi=num%100/10; ge=num%10; bitshi=tableshi; bitge=tablege; s1=0;s2=1; P
20、1=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
21、.3 实验目的1. 进一步熟悉单片机仿真实验软件Keil C51 调试硬件的方法。2. 掌握单片机系统中存储器扩展的方法。3. 掌握单片机内部RAM 和外部RAM 之间数据传送的特点。8.4 实验内容根据实验平台的单元电路,构建一个硬件系统,并编写实验程序实现如下功能:在单片机内部一段连续RAM 空间30H3FH 中写入初值00H0FH,然后将这16 个数传送到RAM 的0000H000FH 中,最后再将外部RAM 的0000H000FH 空间的内容传送到片内RAM 的40H4FH 单元中。传送结果通过Keil C51 软件观察。8.5 实验单元电路及连线8.6 实验程序#include sf
22、r AUXR=0x8E;void main() unsigned char i; AUXR=0x02; for(i=0;i=15;i+) DBYTE0x30+i=38; for(i=0;i=15;i+) XBYTE0x0000+i=DBYTE0x30+i; for(i=0;i=15;i+) DBYTE0x40+i=XBYTE0x0000+i; while(1);8.7 实验步骤1. 打开存储器观察窗口,在存储器1 的Address 中输入D:0x30,在存储器2 的Address 中输入X:0x0000 来监视存储器空间。2. 可单步运行程序,观察存储器内容的变化,或在伪停机指令和处设置断点再运行程序,验证实验功能。8.8 实验结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1