人人范文网 范文大全

单片机实验 2

发布时间:2020-03-03 02:46:27 来源:范文大全 收藏本文 下载本文 手机版

单片微型计算机原理、应用及接口技术

实验报告

得分:

年级专业:

测控1303班

学生姓名/学号:崔振振

/201323030325 评阅教师:

提交时间:2015—2016学年第1学期

单片机实验1汇编语言程序设计实验

---- 存储器块清零或赋值

一.实验目的

1 熟悉存储器的读写方法,熟悉51汇编语言结构。 2 熟悉循环结构程序的编写。

1

3 熟悉编程环境和程序的调试。 二.实验内容

指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的100个字节内容清零或全部赋值为33H。 三.实验仪器

微机、WAVE6000编程环境软件,(单片机实验箱) 仿真器--仿真器设置-

Lab6000通用微控制器 MCS51实验 8031

√ 使用伟福软件模拟器 勾上

四、实验内容及步骤

1、运行WAVE 双击“WAVE”图标,进入仿真调试环境。最上行为提示行:伟福6000 软件模拟器(8***) [C:\WAVE\SAMPLES\***.PRJ]- [***- C:\WAVE\SAMPLES\***.ASM],其中,8***为要仿真的芯片,后面的.PRJ文件是你要调试的项目,最后一项是录入的源程序。(如果有项目文件,请点击菜单 文件-关闭项目)

2、仿真器设置

使用语言设置:点击“仿真器—— 仿真器设置”

仿真器设置:点击“仿真器—— 仿真器设置——语言”,选择“伟福汇编器”“混合

十、十六进制”;点击仿真器设置下的“仿真器”,选择 S51/S、POD8X5X、8751(或AT89C51);在“使用伟福软件模拟器”选项上打“√”,点击“好”。完成软件模拟仿真器环境设置。

3、程序录入

完成下列程序的录入(SY1.ASM)。(注意:录入源程序必须使用西文输入法) 录入步骤为:点击“文件”——点击“新建文件”,则显示器打开源程序录入窗口,文件名默认为NONAME1;将SY1.ASM录入并点击“文件”———点击“保存文件”。特别注意:保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径。

建立项目,点击新建项目,选择刚才新建的文件,下一步可不选择,然后填写项目名字

参考程序:

Block equ 4000h mov dptr, #Block ; 起始地址 mov r0, #10 ; 清10个字节 mov a, #33h ; Loop: movx @dptr, a inc dptr ; 指向下一个地址 djnz r0, Loop ; 记数减一 ljmp $ end

4、对录入的源程序SY1.ASM进行编译

编译步骤为:点击“项目———全部编译”

若编译完成,在左下角的“信息窗口”将显示生成两个文件SY1.HEX和SY1.BIN。 若源程序在格式上有错误,则在“信息窗口”中出现错误提示,请检查源程序,修改后再进行编译,直至编译成功。

窗口最下一行显示:执行时间和PC、DPTR、A、PSW、SP的当前值。

2

5、窗口介绍与练习(1)、左边窗口:为“项目窗口”和“观察窗口”: Project: 项目窗口;

REG: 工作寄存器和部分特殊功能寄存器窗口。 SFR: 51系列单片机特殊功能寄存器窗口。

另:此窗口最右边显示的是某个特殊功能寄存器(点击选中左边的某个寄存器)的位及对应的二进制的值。

(2)、左下角为“信息窗口”。 (3)、右下角为CODE(程序存储器)窗口和XDATA(片外数据存储器)窗口。 (4)、点击主菜单的“窗口——CPU窗口”,在右部窗口显示PC值、机器码和源程序。 (5)、点击主菜单的“窗口——数据窗口——DATA”:显示片内RAM窗口。

6、调试程序

点击 “执行—— 复位”:使程序指针指向第一条指令(CPU窗口指向0000H) 点击 “执行—— 单步”:使程序单步执行。

7、观察寄存器单元中的内容:

点击 窗口—— 数据窗口- DATA: 可以观看片内RAM 00H 到 FFH 中的内容,

点击 窗口—— 数据窗口- CODE: 可以观看程序存储器 0000H —— FFFFH 中的机器码。 点击 窗口—— 数据窗口—— XDATA: 可以观看片外RAM 数据 0000H— FFFFH 点击 窗口—— 数据窗口—— DATA: 可以观看RAM 数据00H— FFH 参考程序与流程图

实验心得:

通过实验能够让我更了解单片机内部工作的原理,能够更深一层次的帮助我理解各个语句命令的功能

单片机实验2存储块移动 一.实验目的

1 熟悉51汇编语言程序结构。 2 熟悉循环结构程序的编写,进一

3 步熟悉指令系统。

3 熟悉编程环境和程序的调试。 二.实验内容

将指定源地址(3000H)和长度(100字节)的存储块移动到目的地址(4000H)。 三.实验步骤

同实验一项目文件建立过程,然后录入代码 四.代码内容

mov

r0, #30h mov

r1, #00h mov

r2, #40h mov

r3, #00h

mov

r7, #10 Loop: movdph, r0 movdpl, r1 movx a, @dptr movdph, r2 movdpl, r3 movx @dptr, a inc

r1 inc

r3 djnz r7, Loop ljmp $

实验心得:

试验中当时挺迷惑dph和dpl的,最终查书才知道是dptr的另一种表达方式,从这可以看出有时候实验是检验自己学习不足的好方法,从而加深对本质的理解

单片机实验3数据排序

一.实验目的

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

4 2 进一步熟悉编程环境和调试方法。 3 熟悉汇编程序设计。 二.实验内容

将 50H开始的10个随机数按从小到大的顺序排列。 三.实验仪器微机、WAVE6000编程环境

试验中由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:窗口---数据窗口---DATA 找到50H开始的10个2位16进制数,双击,修改其数值如(6,2,4,9,3,7,1,5,8,0)之后编译(下载),单步执行,查看排序执行过程

四.实验步骤:同实验一,值得注意的地方就是修改数据

参考程序:

Size

equ

; 数据个数

Array equ

50h

; 数据起始地址

Change equ

0

; 交换标志 Sort:

mov

r0, #Array

mov

r7, #Size-1

clr

Change Goon:

mov

a, @r0

mov

r2, a

inc

r0

mov

B, @r0

cjne a, B, NotEqual

sjmp Next NotEqual:

jc

Next

; 前小后大, 不交换

setb Change

; 前大后小, 置交换标志

xch

a, @r0

; 交换

dec

r0

xch

a, @r0

inc

r0 Next:

djnz r7, Goon

jb

Change, Sort

ljmp $

end

实验心得:

其实有时候挺疑惑伪代码到底是干什么的,因为程序在执行中,不像c语言一样调用子函数能够让人很理解,但究其最终的的过程,还是和c语言是一样的,具有同样的思想

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

一.实验目的

1.熟悉P1 口的功能。

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

5 3.初步熟悉单片机软硬件设计方法。 二.实验内容(两内容分开做)

注意:硬件实验小实验箱的仿真器设置:

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

POD51

8031

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

注意:小实验箱(G2010)的发光二级管LED是低电平亮,高电平灭;

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

2.P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管。编写程序读取开关状态,将此状态在发光二极管上显示出来。 三.实验仪器

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

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

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

S0,S1就是实验箱上K0,K1 键

实 验 说 明

1 . P1 口 是 准 双 向 口 , 它 作 为 输 出 口 时 与 一 般 的 双 向 口 使 用 方 法 相 同 。 由 准 双 向 口 结构 可 知 当 P1 口 用 为 输 入 口时, 必 须 先 对 它 置 “ 1 ” 。 若 不 先 对 它 置 “ 1 ” , 读 入 的 数 据 是 不 正 确 的 。 内容1大实验箱参考程序:

rl

a Loop:

call Delay mov

a, #01h

djnz r2, Output mov

r2, #8

ljmp Loop Output:

Delay: mov

P1, a

mov

r6, #0

6 mov

r7, #0 DelayLoop: djnz r6, DelayLoop djnz r7, DelayLoop ret end 内容2大实验箱参考程序 KeyLeftequ P1.0 KeyRightequ P1.1 LedLeftequ P1.2 LedRightequ P1.3 SETB

KeyLeft 实验心得:

SETB

KeyRight Loop:

MOV

C, KeyLeft MOV

LedLeft, C MOV

C,KeyRight MOV

Ledright,C LJMP

Loop END

当进行实验时,我一直不明白,为什么可以用OX0000H这样的值赋给dptr单片机就知道是对P0 P2操作,P1能不能这样使用呢,在实验中我们看到对单个引脚操作时是直接进行赋值的,但最终还是通过看书得以理解。

实验五计数器实验

一.实验目的

1 熟悉计数器的使用方法。

7 2 熟悉计数器的硬件电路连接。 3 熟悉计数器的软件设计。 二.实验内容

注意:硬件实验 小实验箱的仿真器设置:

选择仿真器 选择仿真头 选择CPU G6W POD51 8031 8031内部定时计数器0,按计数器模式和工作方式1工作,对P3.4(计数器0计数脉冲输入T0)引脚进行计数。将其计数数值按二进制数用P1口驱动LED灯显示出来。

说明

实 验 中 内 计 数 器 起 计 数 器 的 作 用 , 外 部 事 件 计 数 冲 由 P3.4 引 入 定 时 器T0。单 片 机 在 每 个 榌 器 周 期 采 样 一 次 输 入 波 形 。 因 此 单 片 机 至 少 需 要 两 个 机 器 周 期 才 能 椧 到 一 次 跳 变 。 这 就 要 求 被 采 样 电平至 少 维 特 一 个 完 整 的 机 器 周 期。 以 保 证 电平在 变 化 之 前 即 被 采 样 。 同 时 这 就 决 定 了 输 入 波 形 的 率 不 能 超 过 机 器 周 期 。

三.实验仪器

微机、WAVE6000编程环境,伟福6000实验箱 注意:P3.4接单次脉冲 实验连线如图:

大实验箱单次脉冲

程序流程:

程序

8

mov

TMOD, #00000101b

; 方式1,记数器 mov

TH0, #0 mov

TL0, #0 setb TR0

; 开始记数

Loop: mov

P1, TL0

; 将记数结果送P1口 ljmp

Loop end 实验心得:

对于程序的过程我没有太多的疑问,能够更好地理解书中概念性的知识。

实验六外部中断实验

一.实验目的

1 熟悉外部中断的硬件电路,中断技术的基本使用方法。 2 熟悉外部中断的软件设计。

9 二.实验内容

注意:硬件实验小实验箱的仿真器设置:

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

POD51

8031

利用实验箱上的单脉冲按键和发光二极管实现:用单次脉冲申请中断,在中断服务程序中对输出信号进行翻转(对每当输出一个单次脉冲时(产生低电平一个脉冲),发光二极管(L0)亮灭变化)。

三.实验仪器

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

连线:P1.0连接L0

INT0连接低电平单次脉冲。 实验电路及连线如下:小实验箱低电平脉冲见上页图示。

注意

中断服务程序(ISR)关键:

1 保护进入中断时的现场,并在退出中断之前恢复现场;中断重入的设置中断相关寄存器的设置:中断寄存器IE,中断触发罚方式的设置。本例中保护CPU状态寄存器PSW等。

2 中断程序和子程序的区别。中断程序不是程序调用的,中断发生时,CPU就执行相应中断服务程序。程序流程图:

10

参考程序:

LED equ P1.0 LEDBufequ 0 ljmp Start org 3 Interrupt0: push PSW ; 保护现场 cplLEDBuf ; 取反LED mov c, LEDBuf mov LED, c pop PSW ; 恢复现场 reti Start: clrLEDBuf clr LED mov TCON, #01h ; 外部中断0下降沿触发

mov IE, #81h ; 打开外部中断允许位(EX0)及总中断允许位(EA) ljmp $ end 实验心得:

刚开始一直在疑惑单片机进入中断是怎样进行的,是通过主函数调用还是怎样执行的,以前一直不明白为什么主函数没有调用但是函数执行了,通过实验知道对于中断服务子函数是不需要通过主函数调用的。

11

单片机实验2

单片机实验

单片机实验

单片机实验四总结报告 2(优秀)

单片机实验心得体会

单片机实验教案

单片机液晶显示实验

单片机实验小结

单片机实验感想

单片机实验一

单片机实验 2
《单片机实验 2.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档