121331邹环宇单片机实验报告.docx
- 文档编号:29852903
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:20
- 大小:702.24KB
121331邹环宇单片机实验报告.docx
《121331邹环宇单片机实验报告.docx》由会员分享,可在线阅读,更多相关《121331邹环宇单片机实验报告.docx(20页珍藏版)》请在冰豆网上搜索。
121331邹环宇单片机实验报告
哈尔滨理工大学
实验报告
课程名称:
单片机原理及应用
学院:
自动化
专业班级:
电技12-3
学生姓名:
邹环宇
学号:
1212020331
指导教师:
王宏民
实验一
课程名称
单片机原理及应用
时间
2014.10.22
实验名称
KeilμVision2基本操作实验
地点
B302
姓名
邹环宇
学号
1212020331
班级
电技12-3
同实验者
学号
班级
一.实验目的
1.熟悉KeilμVision2集成开发环境
2.初步掌握KeilμVision2的使用方法
二.实验内容
KeilμVision2使用方法介绍
1、KeilμVision2启动
从桌面上直接双击KeilμVision2的图标来启动软件。
KeilμVision2启动后,在程序窗口的左边有一个工程管理窗口,该窗口有3个标签,分别是Files、Regs和Books,这三个标签分别显示当前项目的文件结构、CPU寄存器和部分特殊功能寄存器的值(只有在调试的时候才出现)和所选CPU的附加说明文件,如果是第一次启动KeilμVision2,这三个标签都是空的。
2、源文件的建立
使用菜单“File→New”或点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入以下汇编语言源程序,
ORG 0000H
MOV A,#0FEH
MAIN:
MOV P1,A
RL A
LCALLDELAY
AJMP MAIN
DELAY:
MOV R7,#255
DL:
MOV R6,#255
DJNZ R6,$
DJNZ R7,DL
RET
END
保存该文件,注意必须加上扩展名(汇编语言源程序一般使用asm或a51为扩展名,假如是C语言源程序,扩展名为*.c),这里假定文件保存为text1.asm,
3、新建一个工程
首先点击“Project→NewProject…”菜单,出现一个如图1-1所示的对话框,你可以在编辑框中输入一个名字(如dpj1),不需要扩展名,点击保存出现第二个对话框如图1-2所示,要求选择CPU,我们选择Atmel公司的89C51芯片,点击“确定”软件会弹出提示框如图1-3:
问你是否添加默认代码,我们不需要所以选择否。
这样一个工程就建立好了。
图1-1新建一个工程
图1-2选择CPU芯片
图1-3起动代码
此时在工程窗口的文件页中,出现了“Target1”,前面有“+”,点击“+”展开,可以看到下一层的“SourceGroup1”,这时工程还是一个
空的工程,需要将刚才新建的源程序添加进去,点击“SourceGroup1”,然后右击,出现一个下拉菜单,如图1-3所示,选择其中的“AddfiletoGroup‘SourceGroup1’”。
点击后就会出现一个对话框要求寻找源文件。
图1-3添加文件
注意:
该对话框下面的“文件类型”默认为Csource(*.c),也就是说以C为扩展名的文件,而我们是以asm为扩展名的文件,所以在列表框中找不到text1.asm,要将文件类型改掉,点击对话框中“文件类型”后面的下拉列表,并找到选中“AsmSourceFile(*.a51,*.asm)”,这样就可以找到text1.asm文件了。
4、工程的详细设置
工程建立以后,还要对工程进行进一步的设置,以满足要求。
首先点击左边Project窗口的Target1,然后使用菜单“Project→Optionfortarget‘target1’”即出现工程设置的对话框,这个对话框非常复杂,共有8个页面,要全部搞清非常不易,但一般只需默认设置即可。
(1)设置对话框中Target页面,如图1-4所示,Xtal后面的数值是晶振频率值,该数值与最终产生的目标代码无关,仅用于软件模拟调试显示程序执行时间。
正确设置该数值可使显示时间与实际时间一致,一般将其设置成与你的硬件所用晶振频率相同,一般我们设置为12,其他默认设置。
图1-4Target页面
(2)设置OutPut页面,如图1-5所示,这里也有多个选择项,其中“CreateHexfile”用于生成可执行代码文件(可以用编程器写入单片机芯片的Hex格式文件,文件的扩展名必须是.HEX)默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项。
其他选择默认设置即可
图1-5 设置OutPut页面
5、编译、连接
在工程设置好后,即可进行编译、连接。
选择菜单“Project→Buildtarget”,对当前工程进行连接,如果当前文件已修改,软件会先对文件进行编译,然后再连接产生目标代码,编译过程信息将出现在输出窗口中的Build页中如图1-6所示,如果程序出现语法错误,会有错误报告出现,双击改行就可以定位到出错的位置,修改即可,然后重新编译,直至没有问题。
图1-6 正确编译、连接后的结果
3.实验过程描述
成绩评定:
指导教师:
实验二
课程名称
单片机原理及应用
时间
2014.10.22
实验名称
汇编程序设计实验
地点
B302
姓名
邹环宇
学号
1212020331
班级
电技12-3
同实验者
学号
班级
一.实验目的
1.掌握汇编语言简单程序设计
2.掌握程序执行过程
3.掌握KeilμVision2软件调试方法
2.实验内容
1.KeilC程序调试相关知识
(1)常用调试命令
对于工程成功进行汇编、连接以后,使用菜单debug→Start/StopDebugSession或者按Ctrl+F5即可进入调试状态。
进入调试状态后,界面与编辑状态相比没有明显的变化,debug菜单项中原来不能用的命令现在可以用了,工具栏会多出一个用于运行和调试的工具条,如图2-1所示,从左到右依次是复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮命令等。
图2-1运行和调试工具条
(2)在线汇编
在进入Keil的调试环境以后,如果发现程序有错,可以直接对源程序进行修改,但是要修改后的代码起作用,必须先退出调试环境、重新进行编译、连接后再次进行调试,如这样的修改只是临时修改,这样做就太麻烦了。
为此Keil软件提供了在线汇编能力,将光标定位于要修改的程序行上,用菜单Debug→InlineAssembly...即可出现图2-2的对话框,在EnterNew后直接输入需要更改的程序语句。
图2-2 在线汇编窗口
(3)断点设置
程序调试时,一些程序行必须满足一定的条件才能被执行到,这些条件往往是异步发生或难以预先设置的,此时就需要进行断点设置。
设置方法如下:
用菜单Debug→Inset/RemoveBreakPoint设置或移除断点(用鼠标双击该行也可以实现同样的功能)。
(4)程序调试时的常用窗口
Keil软件在调试程序时提供了多个窗口,主要包括输出窗口、观察窗口、存储器窗口、反汇编窗口、串行窗口等,进入调试模式后,可以通过菜单View下的相应命令打开或关闭这些窗口。
2.实验程序1
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVA,#0FEH
MOVB,#100
DIVAB
MOVR0,#21H
MOV@R0,A
DECR0
MOVA,#10
XCHA,B
DIVAB
SWAPA
ADDA,B
MOV@R0,A
SJMP$
3.实验程序2(设系统频率为12MHz)
ORG0000H
LP:
MOV P1, #81H
LCALL DELAY
MOV P1, #42H
LCALL DELAY
MOV P1, #24H
LCALL DELAY
MOV P1, #18H
LCALL DELAY
MOV P1, #24H
LCALL DELAY
MOV P1, #42H
LCALL DELAY
SJMP LP
DELAY:
MOV R2, #64H
L1:
MOV R3, #0C8H
L2:
DJNZ R3, L2
DJNZ R2, L1
RET
3.实验过程描述
成绩评定:
指导教师:
实验三
课程名称
单片机原理及应用
时间
2014.11.5
实验名称
在线编程脱机运行实验
地点
B302
姓名
邹环宇
学号
1212020331
班级
电技12-3
同实验者
学号
班级
一.实验目的
1、熟悉S51E单片机用户板的基本组成;
2、初步掌握单片机在线编程,脱机运行流程;
二.实验内容及设计流程
一、
S51E单片机用户板介绍
a)实验程序
(1)输出口控制程序
ORG 0000H
MOV A,#0FEH
MAIN:
MOV P1,A
RL A
LCALLDELAY
AJMP MAIN
DELAY:
MOV R7,#255
DL:
MOV R6,#255
DJNZ R6,$
DJNZ R7,DL
RET
END
(2)输入口控制输出口程序
keybitp3.3
ORG0000H;伪指令
LJMPMAIN;跳转到单片机的主程序
ORG0100H;伪指令,单片机主程序的开始
MAIN:
MOVP1,#0FFH;将P1口上的灯全部关掉
MOVP2,#0FFH
clrkey;将键盘列线拉低
MOVA,P2;从P2口上读出按键状态
ANLA,#11111100B;选出状态位置
CJNEA,#01111100B,M_01;比较键值,是第一个键吗
LJMPM_001;是的
M_01:
CJNEA,#10111100B,M_02;是第二个键吗
LJMPM_002;是第二个键
M_02:
CJNEA,#11011100B,M_03;是第三个键吗
LJMPM_003;是第三个键
M_03:
CJNEA,#11101100B,M_04;是第四个键吗
LJMPM_004;是第四个键
M_04:
CJNEA,#11110100B,M_05;是第五个键吗
LJMPM_005;是第五个键
M_05:
CJNEA,#11111000B,M_06;是第六个键吗
LJMPM_006;是第六个键
M_06:
LJMPMAIN;无键,跳回去重新判断
M_001:
CLRP1.0;打开第一个灯
LCALLDEL;调延时子程序
SETBP1.0;关闭第一个灯
LJMPMAIN;跳回去重新判断
M_002:
CLRP1.1;打开第二个灯
LCALLDEL
SETBP1.1
LJMPMAIN
M_003:
CLRP1.2;打开第三个灯
LCALLDEL
SETBP1.2
LJMPMAIN
M_004:
CLRP1.3;打开第四个灯
LCALLDEL
SETBP1.3
LJMPMAIN
M_005:
CLRP1.4;打开第五个灯
LCALLDEL
SETBP1.4
LJMPMAIN
M_006:
CLRP1.5;打开第六个灯
LCALLDEL
SETBP1.5
LJMPMAIN
DEL:
MOVR6,#0FFH;延时子程序
DEL_1:
MOVR7,#0FFH
DEL_0:
NOP
NOP
DJNZR7,DEL_0
DJNZR6,DEL_1
RET
END
三.仿真结果及分析
成绩评定:
指导教师:
实验五
课程名称
单片机原理及应用
时间
2014.11.12
实验名称
C51简单程序设计实验
地点
B302
姓名
邹环宇
学号
1212020331
班级
电技12-3
同实验者
学号
班级
一.实验目的
1、掌握KeilC软件调试过程
2、掌握简单C语言执行过程
二.实验内容及设计流程
实验程序:
#include
voidmsec(unsignedint);
voidmain()
{
unsignedchararray[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
inti;
while
(1)
{P1=0xFF;
for(i=0;i<=7;i++)
{P1=array[i];
msec(200);
}
}
}
voidmsec(unsignedintx)
{unsignedcharj;
while((x--)!
=0){
for(j=0;j<125;j++)
{;}
}
}
三.仿真结果及分析
成绩评定:
指导教师:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 121331 环宇 单片机 实验 报告