单片机实验报告概况.docx

上传人:b****4 文档编号:5405484 上传时间:2022-12-16 格式:DOCX 页数:12 大小:122.86KB
下载 相关 举报
单片机实验报告概况.docx_第1页
第1页 / 共12页
单片机实验报告概况.docx_第2页
第2页 / 共12页
单片机实验报告概况.docx_第3页
第3页 / 共12页
单片机实验报告概况.docx_第4页
第4页 / 共12页
单片机实验报告概况.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机实验报告概况.docx

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

单片机实验报告概况.docx

单片机实验报告概况

北京联合大学

单片机实验报告

 

学院:

自动化

专业:

班级:

学号:

姓名:

 

2012年12月29日

实验1 单片机实验系统硬软件环境认识

一.实验目的

了解单片机实验板、计算机和仿真器组的连接方法,了解WAVE仿真软件,学会单步、断点和全速运行的程序调试运行方法,学会察看各存储单元、特殊寄存器等参数变化情况。

二.实验设备

伟福通用微控制器实验系统一台,通用计算机一台,WAVE仿真软件

三.实验内容

1.编写计算1234H+0FE7H的程序(程序1),要求把和的高8位存入51H单元,和的低8位存入50H单元,并用WAVE仿真软件调试运行。

2.编写一个程序(程序2),实现将20H~29H内的数据由小到大的顺序排列。

四.实验步骤

1.观察了解通用微控制器实验系统的硬件组成,及其与通用计算机的连接;打开计算机可在桌面上看到WAVE仿真软件图标。

2.键入实验程序

(1)双击桌面上的“WAVE中文版”图标,打开开发环境,选择“模拟仿真”,点击“文件”新建一个汇编程序文件,并以.asm后缀保存。

(2)输入实验程序1。

程序1代码:

ORG0000H

LJMPMAIN

ORG0000H

MAIN:

MOVA,#34H

ADDA,#0E7H

MOV50H,A

MOVA,#12H

ADDCA,#0FH

MOV51H,A

END

(3)点击“项目管理”选择“编译”,注意观察编译结果有无错误。

若有错误打开文件进行修改,若无错误转向下一步。

3.运行程序

(1)编译无误后,点击“窗口/CPU窗口”以便在寄存器(或特殊寄存器)查看或送入必要的初始数据;点击“窗口/数据窗口”以便在RAM数据区DATA中查看或送入必要的初始数据。

点击”执行/复位”

(2)观察寄存器的值及PSW各位的初始状态。

(3)点击调试/单步(F8),单步运行各条指令,注意观察有关寄存器的值及PSW的数据变化。

(4)也可点击调试/全速运行(Ctrl+F9)连续运行程序。

(5)将运行结果填入表1。

表1:

程序1运行结果

地址

A

51H

50H

运行前

00

00

00

运行后

22

22

1B

4.将程序2输入,并在20H~29H单元中输入10个数据,

点击“执行”选择“全速运行”,并将相关结果记录在表2中。

程序2代码:

EXCH_FLAGBIT7FH

ORG0000H

CLRR0

MOV20H,#36

MOV21H,#01

MOV22H,#78

MOV23H,#23

MOV24H,#15

MOV25H,#05

MOV26H,#75

MOV27H,#89

MOV28H,#16

MOV29H,#07

LJMPMAIN

ORG0030H

MAIN:

MOVR1,#20H

MOVR5,#10

CLREXCH_FLAG

DECR5

MOVA,@R1

LOOP:

MOVR3,A

INCR1

CLRC

MOVA,@R1

SUBBA,R3

JNCNO_EXCH

SETBEXCH_FLAG

MOVA,R3

XCHA,@R1

DECR1

XCHA,@R1

INCR1

NO_EXCH:

MOVA,@R1

DJNZR5,LOOP

JBEXCH_FLAG,MAIN

SJMP$

END

表2:

程序2运行结果

地址

20H

21H

22H

23H

24H

25H

26H

27H

28H

29H

运行前

24

01

4E

17

0F

05

4B

59

10

07

运行后

01

05

07

0F

10

17

24

4B

4E

59

5.改变20H~29H单元中的10个数据,调试运行程序将结果记录在表3中。

表3:

程序2运行结果

地址

20H

21H

22H

23H

24H

25H

26H

27H

28H

29H

运行前

21

01

19

17

59

3B

24

31

10

07

运行后

01

07

10

17

19

21

24

31

3B

59

五.思考与总结

1.要求数据1234H和0FE7H分别存入31H、30H和33H、32H单元(高字节在高地址单元),如何编写程序。

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOV30H,#34H

MOV31H,#12H

MOV32H,#0E7H

MOV33H,#0FH

END

2.在程序2中实现将20H~27H内的8个数据由大到小的顺序排列,应如何修改程序?

答:

LOOP中的JNCNO_EXCH改为JC_EXCH。

 

实验2 并行输入/输出接口P1

一.实验目的

巩固并行输入输出接口的基本知识,掌握P1口的使用方法。

理解CPU对P1口的操作可以是字节操作,也可以是位操作,每一位可以独立定义为输入输出。

熟悉汇编语言对P1口操作的编程方法。

二.实验设备

伟福通用微控制器实验系统一台,通用计算机一台,WAVE仿真软件

三.实验内容

1.按照图1将P1.0~P1.3接扳鍵开关,P1.4~P1.7接发光二极管。

依据P1.0~P1.3接扳鍵开关状态控制P1.4~P1.7发光二极管点亮。

图1 并行接口实验原理图

四.实验步骤

2.分别输入程序,调试并运行,记录实验现象。

程序代码:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOVP1,#0FFH

L1:

MOVA,P1

SWAPA

ORLA,#0FH

MOVP1,A

SJMPL1

END

3.将P1.0~P1.7全部接发光二极管,要实现如下功能:

开始P1.0、P1.1点亮,左移50次后,P1.6、P1.7点亮,右移30次,循环往复之。

试编制程序并实验之。

程序代码:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOVA,#03H

MOVR1,#50

LJMPZY1

MOVA,#0C0H

MOVR1,#30

LJMPYY1

LJMPMAIN

ZY1:

DJNZR1,ZY2

RET

ZY2:

DECR1

MOVP1,A

RLA

LJMPDL500MS

RET

YY1:

DJNZR1,YY2

RET

YY2:

DECR1

MOVP1,A

RRA

LJMPDL500MS

RET

DL500MS:

MOVR2,#100

DL1:

MOVR3,#10

DL2:

MOVR4,#250

DL3:

DJNZR4,DL3

DJNZR3,DL2

DJNZR2,DL1

RET

END

五.思考与总结

1.在实验程序2中,若要将循环次数分别改为100和60,应如何修改程序?

答:

可直接将程序相应指令的50和30改为100和60,也可以再主程序中分别调用2次左移和右移子程序

2.在实验程序2中,若要将循环方向改为先右循环再左循环,应如何修改程序?

答:

可将主程序中相应的左移和右移部分交换调用次序。

3.本次实验你有哪些收获?

答:

感觉自己学到的东西很有趣,很实用,能用自己的思维将功能要求通过程序转化为可以实际看到的,很有成就感。

 

实验3 定时器/计数器

一.实验目的

巩固定时器/计数器的基本知识,掌握定时器/计数器方式控制字的设定方法,会应用定时器/计数器实现定时和计数功能。

熟悉汇编语言对定时/计数器编程的方法。

二.实验设备

伟福通用微控制器实验系统一台,通用计算机一台,WAVE仿真软件

三.实验内容

按照图1将P1.7接发光二极管。

要求利用定时器控制使LED亮一秒停一秒,周而复始。

注意:

其中长时间延时利用内部计数器方式。

四.实验原理

原理图如图1:

图1 定时/计数器实验原理图

定时/计数器方式控制字:

定时器1:

方式2,计数方式,10次 初值:

F6H

定时器0:

方式1,定时方式,50ms 初值:

3CB0H

五.实验步骤

1.根据实验内容要求设计程序并实验之。

程序代码:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOVTMOD,#61H

MOVTH1,#0F6H

MOVTL1,#0F6H

SETBTR1

LOOP:

MOVTH0,#3CH

MOVTL0,#0B0H

SETBTR0

T3_10:

JBCTF0,T3_20

SJMPT3_10

T3_20:

CPLP1.0

NOP

JBCTF1,T3_30

SJMPLOOP

T3_30:

CPLP1.7

SJMPLOOP

END

2.若要使LED亮0.5秒停0.5秒循环,应如何修改程序?

实验之。

答:

子程序LOOP改为

LOOP:

MOVTH0,#9EH

MOVTL0,#58H

SETBTR0

六.思考与总结

1.定时器的方式控制字TMOD应如何确定,其值是多少?

答:

61H=01100001B

2.T1、T0的初值是如何刷新的?

答:

T1没有进行刷新,T0由定时1s后重新进入LOOP重装T0初值

3.若要用R7做计数器计定时器0溢出次数实现1秒钟定时,应当怎样修改程序?

答:

ORG0000H

LJMPMAIN

ORG0030H

MAIN:

MOVTMOD,#01H

MOVR7,#10

LOOP:

MOVTH0,#3CH

MOVTL0,#0B0H

SETBTR0

T3_10:

JBCTF0,T3_20

SJMPT3_10

T3_20:

CPLP1.0

NOP

DECR7

DJNZR7,T3_30

SJMPLOOP

T3_30:

MOVR7,#10

CPLP1.7

SJMPLOOP

END

4.本次实验你遇到了哪些问题?

是如何解决的?

答:

试验中定时器的初值计算和试验箱的晶振周期不清楚,出现了LED灯亮灭时间不符合要求,最后请教老师解决了。

 

实验4 中断的使用

一.实验目的

进一步理解中断的概念,掌握使用中断功能的一般方法,识记中断服务程序的入口地址。

理解中断服务程序的编程方法。

二.实验设备

伟福通用微控制器实验系统一台,通用计算机一台,WAVE仿真软件

三.实验内容

由中断信号

控制P1.7,并连接发光二极管LED,使其亮灭交替变换。

四.实验原理

如图1:

图1中断实原理图

五.实验步骤

1.根据实验内容要求设计程序并实验之。

程序代码:

ORG0000H

LJMPMAIN

ORG0003H;外部中断0入口地址

LJMPEX0_INT

ORG001BH;定时器T1中断入口地址

LJMPT1_INT

ORG0030H

MAIN:

MOVSP,#5FH

SETBP3.2;初始化P3.2即外部中断口

CLRIT1;初始化定时器1中断

CLRPX0;初始化外部0中断优先

SETBEX0;外部中断0允许

SETBEA;中断总允许

SJMP$

ORG1000H

EX0_INT:

MOVTMOD,#10H;外部中断0

MOVTH1,#0DCH;定时器1初值

MOVTL1,#00H

SETBTR1;启动T1

SETBET1;允许T1中断

SETBPT1;T1优先

MOVR7,#100;计数100次

JNBP3.2,$;无外部中断

CLRTR1;由外部中断,停止计时

RETI

ORG2000H

T1_INT:

MOVTH1,#0DCH;T1初值

MOVTL1,#00H

DJNZR7,BREAK;R7计满100次,跳转BREAK返回

MOVR7,#100

CPLP1.7;脉冲取反

BREAK:

RETI

END

六.思考与总结

1.外部中断0、定时器1的中断处理程序入口地址分别是多少?

答:

0003H,001BH

2.给实验程序写出注释。

答:

注释如上。

3.修改程序使LED亮1秒灭1秒并实验之。

4.若要使LED灯在开关SB打开时总是处于灭的状态,试修改程序并实验之。

答:

EX0_INT中JNBP3.2,$之后加一句CLRP1.7

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

当前位置:首页 > 解决方案 > 学习计划

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

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