单片机数据传送实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竭诚为您提供优质文档/双击可除单片机数据传送实验报告
篇一:单片机数据传送实验报告
实验名称:数据传送实验
实验类型:设计性实验
姓名:袁志生
时间:04.17第五六节课
一、实验目的与要求
实验目的:1、掌握单片机的汇编指令系统及汇编语言程序设计方法。
2、掌握单片机的存储器体系结构。
3、熟悉keil软件的功能和使用方法。
4、掌握单片机应用程序的调试方法。
实验要求:1、实现单片机内部RAm之间,外部RAm之间以及内部RAm与外部RAm之间的数据传送。
2、利用Keil软件编辑、汇编、调试、运行实验程序并
记录实验数据。
二、设计要求
1、编写程序将00h~0Fh16个数据分别送到单片机内部RAm30h~3Fh单元中。
2、编写程序将片内RAm30h~3Fh的内容传送至片内RAm40~4Fh单元中。
3、编写程序将片内RAm40h~4Fh单元中的内容传送到外部RAm4800h~480Fh单元中。
4、编写程序将片外4800h~480Fh单元内容送到外部RAm5800h~580Fh单元中。
5、编写程序将片外RAm5800h~580Fh单元内容传送回片内RAm50h~5Fh单元中。
三、实验程序流程框图和程序清单.
程序清单:
oRg0000h
sTART:moVR0,#30h
moVDpTR,#Qw1
moVR5,#0
Loop:
Qw1:
Qw2:
Loop1:
Loop2:
Loop3:
R7,#16A,R5A,@A+DpTR@R0,AR0IncR5R7,LoopQw200h,01h,02 h,03h,04h,05h,06h,07h08h,09h,0Ah,0bh,0ch,0Dh,0eh,0F hR0,#30hR1,#40hmoVR5,#16A,@R0@R1,AR0R1R5,Loop1R1,#4 0hmoVDpTR,#4800hR5,#16A,@R1@DpTR,AR1DpTRR5,Loop2moV sp,#60h11h,#48h10h,#58hR2,#00hDpL,R210h11hDphmoVxA, @DpTRmoVmoVmoVcmoVIncDJnZLJmpDbDbmoVmoVmoVmoVIncInc DJnZmoVmoVmoVmoVxIncIncDJnZmoVmoVmoVmoVpushpushpop pop
moVx
Inc
cJne
moV
moV
moV
Loop4:moVx
moV
Inc
Inc
DJnZ
enD
四,实验小结
Dph@DpTR,AR2R2,#10h,Loop3R1,#50hDpTR,#5800hR5,#16A, @DpTR@R1,AR1DpTRR5,Loop4
1通过本次实验熟悉了keil软件的功能和使用方法.
2掌握单片机的数据传送类和循环类汇编指令系统,学会了各种数据传送形式的程序设计方法.
3掌握了单片机的调试方法。为以后的实验开了个好头.
五、思考题
1、说明mcs-51系列单片机对片内RAm和片外RAm存贮器各有哪些寻址方式?答:片内RAm寻址方式有:寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,位寻址方式,立即数寻址。片外RAm寻址方式:寄存器间接寻址。
2、说明指令moVA,20h和moVc,20h中的20h含义有什么不同?传送指令中的助记符moV,moVx,moVc各适用于访问哪个存储器空间?
答:(1)moVA,20h的含义是字节地址,moVc,20h的含义是位地址。
(2)助记符moV适用于访问片内RAm,助记符moVx适用于访问外部RAm,助记符moVc适用于访问程序存储空间。
篇二:单片机数据传送实验报告
实验三数据传送实验报告
㈠实验目的
1.进一步掌握程序的编辑、汇编及调试方法;
2.掌握单片机内部RAm和外部RAm的数据操作;
3.了解单片机系统地址分配概念。
㈡实验器材
1.2.3.4.
g6w仿真器一台mcs—51实验板一台pc机一台电源一台㈢实验内容及要求
1.以数据表格形式在Rom中建立一个含有正数和负数的表格,数据长度
为16个字节,要求放置八个正数、八个负数,正、负数应离散随机放置,不允许三个以上同类型数据连续放置,数据的具体内容自行确定;2.编制程序,将数据表格中的数据读出并按正、负数归类,正数送入首地
址为40h的内部RAm中;负数送入首地址为0b000h的外部RAm中;3.将首地址为0b000h的外部RAm中的数据取出并求其绝对值,然后送
入内部RAm的48h~4Fh单元。
程序如下:
oRg0000hAJmpmAInoRg0060hmAIn:
moVA,#10h;数据长度放入了累加器A中
moVR1,#0b0h;负数所需送入的首地址高位放入R1
moV20h,#00h;负数所需送入的首地址低位放入20h单元中moVR0,#40h;正数所需送入的首地址40h放到R0中去moVDpTR,#0A00h;将表格开始的位置放入DpTR;以上为初始化的全部内容pushDphpushDpLpushAsTART:popApopDpL popDph
pushA;将A压栈,保护里面存储的数据长度
10hmoVA,#00h
moVcA,@A+DpTR;读表头地址moV20h,A
IncDpTR;DpTR指针加1,以读取表格中下一个数
pushDph;为了保护DpTR中存储的表格地址,压栈以便于放入0b000h,存储负数pushDpLJuDge:
moVA,20hRLcA
JcnegATIVe;opposITe:moVA,20h
moV@R0,A;IncR0;popDpLpopDphpopA
DecA;pushDphpushDpLpushA
JnZsTART;sJmpenD1;negATIVe:
moVA,20hmoVDph,R1moVDpL,20hmoVx@DpTR,A
IncDpTR;0b000hmoV20h,DpLmoVR1,DphpopDpLpopDphpopADe cA
pushDphpushDpLpushA