单片机软件实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一内存操作

1.实验目的

①,

②掌握数据传送指令;

③掌握各种数据传送指令的寻址方式;

④熟练运用keil 环境对汇编程序进行调试;

⑤掌握数据传送、复制等程序的设计与调试方法。

2.~

3.预习要求

①理解数据传送指令和循环指令的使用;

②理解如何对内部寄存器、内部RAM、外部XRAM(外部数据存储器)的读写;

③理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式;

④认真预习本实验内容,自行编写程序,填写实验报告。

4.实验设备

计算机1台;

>

4.基础型实验内容:

1.下列程序的功能是给外部XRAM 8000H~80FFH的256个单元的内容赋值,赋值的内容

取决于程序中A的赋值。在Keil环境运行该程序,并观察寄存器及内存单元的变化。ORG 0000H

START EQU 8000H;

>

MAIN: MOV DPTR,#START;;起始地址

MOV R0,#0H;;设置256字节计数值

MOV A,#1H;

Loop: MOVX @DPTR,A;

INC DPTR;;指向下一个地址

DJNZ R0,Loop;;计数值减1

NOP;

SJMP $;

END

|

寄存器A为1H,DPTR递增到8100H,奇偶校验位由于A的内容是1H,所以p也是1.

2.下列程序将外部XRAM 3000H起始的256个字节存储块移动到外部XRAM 4000H起始的

256个字节存储块,在Keil环境运行如下程序,观察寄存器及存储单元的变化。

ORG 0000H

MOV DPTR,#3000H

-

MOV A,#01H

MOV R5,#0H

LOOP: MOVX @DPTR,A

INC DPTR

DJNZ R5,LOOP

(

MOV R0,#30H

MOV R1,#00H

MOV R2,#40H

MOV R3,#00H

MOV R7,#0H

|

LOOP1: MOV DPH,R0

MOV DPL,R1

MOVX A,@DPTR

MOV DPH,R2

MOV DPL,R3

~

MOVX @DPTR,A

INC R1

INC R3

DJNZ R7,LOOP1

SJMP $

END

实现了将3000H开始的256个单元的内容复制到以4000H开头的外部RAM存储单元中。

>

R0的值为30H;R2的值变为40H;寄存器A中赋值为1H,对栈指针sp初始化为07H,其最大值亦为07H,DPTR中最后递增到40ffH,psw中只有奇偶校验位p是1H

3在Keil环境运行如下程序,观察寄存器及内存单元的变化,将变化结果注释于右侧,并说明程序完成什么功能将程序中MOV A,@R0改成MOVX A,@R0,将MOV @R1,A改成MOVX @R1,A,运行如下程序,观察寄存器及相应地址RAM、XRAM地址单元存储内容的变化。

1.

ORG 0000H;程序从000H开始

MOV R0,#30H;

MOV R1,#50H

MOV R2,#20H

L1: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,L1

END

R0的值递增到50H,R1的值递增到70H,A中的值是4FH中的值,即FFH(程序运行前自己设定的)

该程序将内部RAM 30H开始的连续20H个存储单元中的内容复制到内部RAM 50H开始的连续20H个存储单元中。其中30H到4FH中的值在程序运行前自定义。

2.将程序中MOV A,@R0改成MOVX A,@R0,将MOV @R1,A改成MOVX @R1,A

ORG 0000H

MOV R0,#30H

|

MOV R1,#50H

MOV R2,#20H

L1: MOVX A,@R0

MOVX @R1,A

INC R0

$

INC R1

DJNZ R2,L1

END

寄存器A中的数值没有发生过任何变化,R0和R1同未改变前一样,一直递增到50H和70H

虽然设定了外部RAM 30H到4FH中的值,但是并没有复制到50H到6FH存储单元中。

原因是初始化后P口都为#FFH,而使用MOVX A,@Ri 要求P2口为#00H,所以只要在程序前加MOV P2,#00H就能实现和原来一样的功能了

>

5.设计型实验

①在keil环境下,修改内部RAM 30H ~3FH的内容分别为#00H ~#0FH,设计程序实现

将内部RAM 30H-3FH单元的内容复制到40H-4FH中。ORG 000H;

MOV R2,#10H;

MOV A,#0H;

MOV R1,#30H;

MOV R0,#40H;

LOOP: MOV @R1,A;

INC R1;

{

INC A;

DJNZ R2,LOOP;

MOV R1,#30H;

MOV R2,#10H;

LOOP2:MOV A,@R1;

MOV @R0,A;

INC R1;

INC R0;

DJNZ R2,LOOP2;

{

SJMP $;

END

相关文档
最新文档