单片机软件实验报告.doc

上传人:b****1 文档编号:178808 上传时间:2022-10-05 格式:DOC 页数:47 大小:1.94MB
下载 相关 举报
单片机软件实验报告.doc_第1页
第1页 / 共47页
单片机软件实验报告.doc_第2页
第2页 / 共47页
单片机软件实验报告.doc_第3页
第3页 / 共47页
单片机软件实验报告.doc_第4页
第4页 / 共47页
单片机软件实验报告.doc_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

单片机软件实验报告.doc

《单片机软件实验报告.doc》由会员分享,可在线阅读,更多相关《单片机软件实验报告.doc(47页珍藏版)》请在冰豆网上搜索。

单片机软件实验报告.doc

\

实验一内存操作

1.实验目的

①掌握数据传送指令;

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

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

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

2.预习要求

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

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

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

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

3.实验设备

计算机 1台;

4.基础型实验内容:

1.下列程序的功能是给外部XRAM8000H~80FFH的256个单元的内容赋值,赋值的内容取决于程序中A的赋值。

在Keil环境运行该程序,并观察寄存器及内存单元的变化。

ORG0000H

STARTEQU8000H;

MAIN:

MOVDPTR,#START;;起始地址

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

MOVA,#1H;

Loop:

MOVX@DPTR,A;

INCDPTR;;指向下一个地址

DJNZR0,Loop;;计数值减1

NOP;

SJMP$;

END

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

2.下列程序将外部XRAM3000H起始的256个字节存储块移动到外部XRAM4000H起始的256个字节存储块,在Keil环境运行如下程序,观察寄存器及存储单元的变化。

ORG0000H

MOVDPTR,#3000H

MOVA,#01H

MOVR5,#0H

LOOP:

MOVX@DPTR,A

INCDPTR

DJNZR5,LOOP

MOVR0,#30H

MOVR1,#00H

MOVR2,#40H

MOVR3,#00H

MOVR7,#0H

LOOP1:

MOVDPH,R0

MOVDPL,R1

MOVXA,@DPTR

MOVDPH,R2

MOVDPL,R3

MOVX@DPTR,A

INCR1

INCR3

DJNZR7,LOOP1

SJMP$

END

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

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

3在Keil环境运行如下程序,观察寄存器及内存单元的变化,将变化结果注释于右侧,并说明程序完成什么功能?

将程序中MOVA,@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:

MOVA,@R0

MOV@R1,A

INC R0

INC R1

DJNZ R2,L1

SJMP$

END

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

该程序将内部RAM30H开始的连续20H个存储单元中的内容复制到内部RAM50H开始的连续20H个存储单元中。

其中30H到4FH中的值在程序运行前自定义。

2.将程序中MOVA,@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

SJMP$

END

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

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

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

5.设计型实验

①在keil环境下,修改内部RAM30H~3FH的内容分别为#00H~#0FH,设计程序实现将内部RAM30H-3FH单元的内容复制到40H-4FH中。

ORG000H;

MOVR2,#10H;

MOVA,#0H;

MOVR1,#30H;

MOVR0,#40H;

LOOP:

MOV@R1,A;

INCR1;

INCA;

DJNZR2,LOOP;

MOVR1,#30H;

MOVR2,#10H;

LOOP2:

MOVA,@R1;

MOV@R0,A;

INCR1;

INCR0;

DJNZR2,LOOP2;

SJMP$;

END

②在keil环境下,修改内部RAM30H~3FH的内容分别为#00H~#0FH,设计程序实现将内部RAM30H~3FH单元的内容复制到片外1030H~103FH中。

ORG000H;

MOVR2,#10H;

MOVA,#0H;

MOVR1,#30H;

MOVDPTR,#1030H;

LOOP:

MOV@R1,A;

INCR1;

INCA;

DJNZR2,LOOP;

MOVR1,#30H;

MOVR2,#10H;

LOOP2:

MOVA,@R1;

MOVX@DPTR,A;

INCR1;

INCDPTR;

DJNZR2,LOOP2;

SJMP$;

END

③设计程序将外部64KB的XRAM高低地址存储内容互换;如0000H与0FFFFH,0001H与0FFFEH,0002H与0FFFDH,…….互换;互换数据个数为256。

ORG000H;

MOVDPTR,#0FFFFH;

MOVR1,DPL;保存当然DPTR低位

loop:

MOVDPL,R1;

MOVXA,@DPTR;

MOVR3,A;保存当前DPTR的内容

MOVR0,DPH;保存当然DPTR高位

MOVA,DPH;

CPLA;求得当前DPTR高位的反码

MOVDPH,A;

MOVA,R1;

CPLA;求得当前DPTR低位的反码

MOVDPL,A;求得当前DPTR反码

MOVXA,@DPTR;

MOVR4,A;保存当前DPTR对称码(反码)的内容

MOVA,R3;

MOVX@DPTR,A;将当前DPTR(原码)的内容存入对称码中

MOVDPH,R0;

MOVDPL,R1;还原DPTR

MOVA,R4;

MOVX@DPTR,A;将对称码的内容存入当前DPTR(原码)

DECR1;

CJNER1,#0FFH,LOOP;

SJMP$;

END

运行前:

运行后:

6.综合型实验

a)设计程序实现将外部XRAM0000H起始的512个字节数据传送到外部XRAM2000H起始的512个存储单元中。

ORG0000H;

MOVR3,#0H;

MOVDPTR,#0000H;

LOOP:

MOVXA,@DPTR;

MOVR0,DPL;

MOVDPH,#20H;

MOVX@DPTR,A;

INCR0;

MOVDPL,R0;

MOVDPH,#0H;

DJNZR3,LOOP;

SJMP$;

END

X:

0H至X:

0FFH的值是自定义的;运行程序后复制到X:

2000H至X:

20FFH;

b)若源块地址和目标块地址有重叠,程序该如何设计(用地址减1方法移动块)?

假设源块地址2000H,目标块地址2050H,移动块长度80H;试设计程序实现该功能。

思路:

先将由源块地址起始的数据块保存到非目标块地址中(防止覆盖目标地址),然后再复制到目标块地址;

ORG0000H;

MOVDPTR,#2000H;

MOVR3,#80H;

LOOP:

MOVXA,@DPTR;

MOVR0,DPH;

MOVR1,DPL;

MOVDPH,#30H;

MOVX@DPTR,A;

MOVDPH,R0;

INCR1;

MOVDPL,R1;

DJNZR3,LOOP;本循环实现将x:

2000H开始的80个单元中的内容复制到x:

3000H开始的80个单元中去

MOVDPTR,#3000H;

MOVR3,#80H;

MOVR4,#50H;

LOOP2:

MOVXA,@DPTR;

MOVR2,A;

MOVR0,DPH;

MOVR1,DPL;

MOVA,R4;

MOVDPH,#20H;

MOVDPL,A;

MOVA,R2;

MOVX@DPTR,A;

INCR4;

MOVDPH,R0;

INCR1;

MOVDPL,R1;

DJNZR3,LOOP2;本循环实现将x:

3000H开始的80个单元中的内容复制到x:

2050H开始的80个单元中去

SJMP$;

END

实验二数制及代码转换

1.实验目的

①了解微机系统中的数制与代码表示方法;

②掌握计算机中使用的各种代码转换方法;

③掌握实现分支、循环的指令及其程序的编写方法;

2.预习要求

①理

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1