单片机的实验报告
- 格式:doc
- 大小:1.11 MB
- 文档页数:26
.
. 单片机实验报告
实验一:存储器块清零或赋值
一、实验目的
1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容
指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:
1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容
3 查看SFR:窗口---CPU窗口 查看CPU寄存器SFR
4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器
微机、VW,WAVE6000编程环境软件,(单片机实验箱) .
. Lab6000/Lab6000通用微控制器 MCS51实验
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)
2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):
单步执行程序,观察SFR中外部地址指针的变化;
全速执行程序,可以看到外部数据存储器已赋值33H: .
.
五、实验结果
可以看到外部数据存储器已赋值33H:
六、问题讨论
本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动
.
. 一、实验目的
1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容
将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
注意:在编程环境中,可以通过软件仿真,观察程单片机运行情况。
由于源地址和目的地址的内容都一样(FF),调试时看不到内容的变化,所以需要给源地址内容赋值。有多种赋值方式(比如在搬移循环体内,赋值一个搬移一个,请在空白处添加相应程序)。 如要求赋值内容为10,9,8,7,6,5,4,3,2,1呢?如何修改程序?
三、实验仪器
微机、VW,WAVE6000编程环境软件,(单片机实验箱)
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)
2、编写程序和调试过程。
A.给源地址内容赋值
首先,给3000H赋值10,9,8,7,6,5,4,3,2,1。 .
.
CPU寄存器SFR的变化和外部数据存储器(3000H为首地址的10个字节)中赋值结果:
寄存器SFR变化:
赋值结果:
B.存储块移动。将3000H为首地址的10个字节内容移到以3050H为首地址的存储空.
. 间;
存储空间中数据块的移动结果:
可以看到外部数据存储器3050H-3059H地址中的内容和3000H-3009H的内容相同。
五、实验结果
可以看到外部数据存储器3050H-3059H地址中的内容和3000H-3009H的内容相同。
六、问题讨论 .
. 本次实验更加清楚地了解对于外部存储器中数据的移动和赋值过程,51系列单片机与外部数据存储器交换数据时只能借助 MOVX 指令,程序中需要在读取和写入时再次赋值地址,同时,查看每条语句涉及到的寄存器和存储器内容的变化结果。
实验三:数据排序
一、实验目的
1 了解数据排序的常用算法,掌握冒泡算法。
2 进一步熟悉编程环境和调试方法。。
3 熟悉汇编程序设计。
二、实验内容
将 50H开始的10个随机数按从小到大的顺序排列。
注意:
由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:
窗口---数据窗口---DATA 找到50H开始的10个2位16进制数,双击,修改其数值
如(6,2,4,9,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 接着开始第二次内层循环……
三、实验仪器
微机、VW,WAVE6000编程环境软件,(单片机实验箱)
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)
2、编写程序和调试过程。
A.手动给源地址内容赋值 .
.
B.编写程序;
存储空间中数据排序过程:
执行到光标处,把数据取出来,交换。
第一次交换,6和2交换位置; .
.
第二次交换,9大,9向后移动;
一轮循环,将最大的数9,移到最后;
五、实验结果
最终排序结果:
六、问题讨论
本次实验更加清楚地了解对于内部存储器中数据的排序过程,同时,查看每条语句涉及到的寄存器和存储器内容的变化结果,了解排序过程中,数据移动情况。
.
.
实验四:P1口输入输出实验
一、实验目的
1 熟悉P1 口的功能。
2 熟悉延时子程序或定时中断程序的编写和使用。
3 初步熟悉单片机软硬件设计方法。
二、实验内容
硬件实验需要连接硬件仿真器,连接方式如下:
菜单: 仿真器/仿真器设置:
选择仿真器 选择仿真头
LAB8000/ LAB6000通用微控制器 MCS51实验
1.P1口做输出口接八只发光二极管,编写程序,使发光二极管循环亮灭。
实验箱的发光二级管LED是高电平点亮,低电平灭。
2.P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管。编写程序读取开关状态,将此状态在发光二极管上显示出来。
三、实验仪器
微机,WAVE8000编程环境、实验箱
注意:当P1口用作输入口时,必须先对它置”1”。 .
. 编程时应注意P1.0,P1.1作为输入时应先置1,才能正确读入值。
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)
2、编写程序和调试过程。
A.跑马灯程序 .
.
单步执行时,
从最低位到高位,一次点亮;(软件模拟仿真图)
一次循环,直到最高位点亮; .
.
全速执行时,
可以看到LED灯一次循环点亮;
B.输入开关状态,在发光二极管显示出来
输入程序,打开端口,查看P1.0,P1.1,P1.2,P1.3状态: .
.
运行程序,手动开关状态模拟输入,P1.0和P1.1为0:
执行程序后,查看结果,P1.2和P1.3都变成低电平了;
五、实验结果
LED灯如上图所示,不停地循环点亮。具体情况参照实验步骤当中灯的变化情况。 .
.
六、问题讨论
在编写跑马灯程序,可以设计多种跑马灯效果,也可以实现二进制加法等效果。本次实验需要注意读取数据时需要先置“1”。对于mcs-51,在读入数据时,要先输入1,防止对实验结果产生影响。
实验五:计数器实验
一、实验目的
1 熟悉计数器的使用方法。
2 熟悉计数器的硬件电路连接。
3 熟悉计数器的软件设计。 .
. 二、实验内容
硬件实验需要连接硬件仿真器,连接方式如下:
菜单: 仿真器/仿真器设置:
选择仿真器 选择仿真头
LAB8000/LAB6000通用微控制器 MCS51实验
8031内部定时计数器0,按计数器模式和工作方式2工作,对P3.4(计数器1计数脉冲输入T1)引脚进行计数。
脉冲次数的计数数值按二进制数用P1口驱动LED灯显示出来。例程中每计满10次将P2.0位取反,然后重新开始计数,这样的话所以最多可以计数10。
自己可以修改计满次数,计算对应的计数初值,相应修改程序。最大256次 ?
三、实验仪器
微机、WAVE8000编程环境,伟福8000实验箱
注意:P3.4接单次脉冲。
实验连线如图:
四、实验步骤
1、新建工程文件。(注意:文件不要用中文名称保存时不要用中文路径)