单片机汇编语言程序设计实验报告Word格式文档下载.docx

上传人:b****2 文档编号:14243187 上传时间:2022-10-20 格式:DOCX 页数:21 大小:218.83KB
下载 相关 举报
单片机汇编语言程序设计实验报告Word格式文档下载.docx_第1页
第1页 / 共21页
单片机汇编语言程序设计实验报告Word格式文档下载.docx_第2页
第2页 / 共21页
单片机汇编语言程序设计实验报告Word格式文档下载.docx_第3页
第3页 / 共21页
单片机汇编语言程序设计实验报告Word格式文档下载.docx_第4页
第4页 / 共21页
单片机汇编语言程序设计实验报告Word格式文档下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

单片机汇编语言程序设计实验报告Word格式文档下载.docx

《单片机汇编语言程序设计实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机汇编语言程序设计实验报告Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。

单片机汇编语言程序设计实验报告Word格式文档下载.docx

2查看存储器菜单使用:

窗口---数据窗口---XDATA观察存储器内容

3查看SFR:

窗口---CPU窗口查看CPU寄存器SFR

4单步执行:

执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

编译器默认设置:

程序框图

 

参考例程序:

Blockequ4000h

movdptr,#Block;

起始地址

movr0,#10;

清10个字节

mova,#33h;

将33H赋值给a

Loop:

movx@dptr,a将a写入外部RAM

incdptr;

指向下一个地址

djnzr0,Loop;

记数减一

ljmp$;

$当前程序指针相当于一直执行自己;

ljmp$

end

说明:

$:

是当前语句的程序指针(地址)相当于一直执行自己:

ljmp$,程序死循环

要求赋值数据为10,9,8,7,6,5,4,3,2,1

则以上程序该如何改动?

自己修改程序实现。

修改后的程序:

mova,#0ah;

将0ah赋值给a

movx@dptr,a;

将a写入外部RAM

deca;

a值减一

单片机实验2存储块移动

1熟悉51汇编语言程序结构。

2熟悉循环结构程序的编写,进一步熟悉指令系统。

将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

需要先对3000H开始的源数据块赋值为10,9,8.......1。

3.实验仪器微机、WAVE6000软件,(单片机实验箱)

在编程环境中,可以通过软件仿真,观察程单片机运行情况。

参考程序与流程图

参考程序

移动3000H-->

3050H,10字节

由于源地址和目的地址的内容都一样(FF),调试时看不到内容的变化,所以需要给源地址内容赋值。

如要求赋值内容为10,9,8,7,6,5,4,3,2,1。

有多种赋值方式,如以下两种分别独立完成:

1在搬移循环体内赋值一个搬移一个,请在参考程序1的?

处补充程序

2循环体外赋值,先全部赋值再搬移,请在参考程序2的?

处添加赋值程序。

参考程序1

movr0,#30h

movr1,#00h

movr2,#30h

movr3,#50h

movr7,#10

Loop:

movdph,r0;

将dptr高八位给r0

movdpl,r1;

将dptr低八位给r1

mova,r7;

将r7的值赋给a

movx@dptr,a;

将a写入RAM/IO口

movxa,@dptr;

读外部RAM/IO口

decr7;

r7减一

movdph,r2;

将dptr高八位给r2

movdpl,r3;

将dptr低八位给r3

incr1;

r1加一

incr3;

r3加一

djnzr7,Loop;

计数减一

ljmp$;

参考程序2

movr0,#30h

movr3,#50h

Blockequ3000h

Movdptr,#Block;

起始地址

movr4,#10;

清10个字节

mova,#0ah;

将oah赋值给a

Next:

指向下一个地址

deca;

a旳值减一

djnzr4,Next;

计数减一

movdph,r0;

movdpl,r1;

movxa,@dptr;

movdpl,r3;

incr3;

单片机实验3数据排序

1了解数据排序的常用算法,掌握冒泡算法。

2进一步熟悉编程环境和调试方法。

3熟悉汇编程序设计。

使用冒泡算将法50H开始的10个随机数按从小到大的顺序排列。

三.实验仪器

微机、WAVE6000编程环境

由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:

窗口---数据窗口---DATA找到50H开始的10个2位16进制数,双击,修改其数值如(6,2,9,4,3,7,1,5,8,0)之后编译(下载),单步执行,查看排序执行过程

冒泡算法(两层循环,以下是内层循环开始……)。

6,2,9,4,3,7,1,5,8,0

前大后小交换位置如下:

2,6,9,4,3,7,1,5,8,0

前小后大不交换位置如下;

2,6,9,4,3,7,1,5,8,0

前大后小交换位置如下;

2,6,4,9,3,7,1,5,8,0…第一次内层循环结束顺序如下:

最大的数9先冒出来

2,6,4,3,7,1,5,8,0,9接着开始第二次内层循环……

参考程序:

Sizeequ10;

数据个数

Arrayequ50h;

数据起始地址,需要自己设置10个比较数的值

Changeequ0;

交换标志

Sort:

;

外层循环

movr0,#Array

movr7,#Size-1

clrChange;

清零Change

Goon:

内层循环

mova,@r0

movr2,a

incr0

movB,@r0

cjnea,B,NotEqual;

比较a,B不相等转移

sjmpNext;

跳转到Next

NotEqual:

jcNext;

前小后大,不交换

setbChange;

前大后小,置交换标志;

排序是否结束标志?

xcha,@r0;

交换

decr0;

r0减一

incr0;

r0加一

djnzr7,Goon;

jbChange,Sort;

直接寻址位=1,则转移

$:

当前程序指针相当于一直执行自己;

考虑效率问题,每次从外层循环进入内层循环(Goon),相邻数两两比较的次数可以少一次,理论上提高效率一倍。

参考程序如下:

数据起始地址

movr0,#Array

mova,r7

movr6,a

clrChange;

清零Change

前小后大,不交换

前大后小,置交换标志

r0减一

incr0;

djnzr6,Goon;

decr7;

$当前程序指令指针

单片机实验4P1口输入输出实验

1.熟悉P1口的功能。

2.熟悉延时子程序或定时中断程序的编写和使用。

3.初步熟悉单片机软硬件设计方法。

二.实验内容(两内容分开做)

1.P1口做输出口接八只发光二极管,编写程序,使发光二极管循环亮灭。

实验箱(LAB6000)的发光二级管LED是高电平点亮,低电平灭。

2.P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管。

编写程序读取开关状态,将此状态在发光二极管上显示出来。

微机,WAVE6000/VW编程环境、实验箱

硬件实验需要连接硬件仿真器,连接方式如下:

实验箱的仿真器/仿真器设置:

选择仿真器选择仿真头选择CPU

LAB6000通用微控制器/LAB8000MCS51实验8031/51

当P1口用作输入口时,必须先对它置”1”。

编程时应注意P1.0,P1.1作为输入时应先置1,才能正确读入值。

(1)流程图:

(2)实验程序及注释:

注:

实验箱LED灯1亮0灭

内容1参考程序:

mova,#01h(0FEH)将01H赋值给累加器A

movr2,#8将常数8赋值给给R2

Output:

输出函数子程序

movP1,a将A中01H在p1口输出

rla将累加器A的值左移一位

callDelay调用延时子程序延时

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

当前位置:首页 > 法律文书 > 辩护词

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

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