单片机实验报告概况.docx
《单片机实验报告概况.docx》由会员分享,可在线阅读,更多相关《单片机实验报告概况.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机实验报告概况.docx](https://file1.bdocx.com/fileroot1/2022-12/16/95606076-d8c9-448f-af7d-ce9c87e41bb0/95606076-d8c9-448f-af7d-ce9c87e41bb01.gif)
单片机实验报告概况
北京联合大学
单片机实验报告
学院:
自动化
专业:
班级:
学号:
姓名:
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