KeiluVision2等软件使用.docx
《KeiluVision2等软件使用.docx》由会员分享,可在线阅读,更多相关《KeiluVision2等软件使用.docx(18页珍藏版)》请在冰豆网上搜索。
KeiluVision2等软件使用
实验一KeiluVision2等软件使用(2学时)
一.实验目的
1.熟悉KeiluVision2软件的使用方法;
2.熟悉仿真器的用法;
3.熟悉烧录芯片的过程。
二.实验设备
1.KeilKeiluVision2开发系统一台;
2.+5V电源一台;
3.仿真器一条;
4.单片机实验仪一台。
三.实验内容及步骤
(一)KeiluVision2软件的实验步骤:
1.点击桌面快捷图标,可以直接进入主画面:
2.新建的工程要起个与工程项目意义一致的名字,可以是中文名;我们这里的程序是实验测试程序,所以起的名字为Test,并将Test工程“保存”到C:
\Keil下:
3.Keil环境要求我们为Test工程选择一个单片机型号;我们选择Atmel公司的89C51(虽然我们使用的是89S51,但由于89S51与89C51内、外部结构完全一样,所以这里依然选择“89C51”)。
“确定”后工程项目就算建立了。
4. 点击“文件”中的“新建”,新建一个空白文档;这个空白文档就是让我们编写单片机程序的场所。
在这里你可以进行编辑、修改等操作。
movp0,#01010101B ;将01010101二进制代码送P0口
ajmp$ ;程序在此原地踏步
end ;程序结束标志
5.保存文件,保存文件时,其文件名最好与前面建立的工程名相同(当然这里为Test了),其扩展名必须为.Asm!
“文件名”中一定要写全,如:
Test.Asm;
6.将Asm文件添加到工程中。
具体做法如下:
(见下图)
鼠标右键点击“SourceGroup1”,在弹出的菜单中选“增加文件到组SourceGroup1”:
在接下来出现的窗口中,选择“文件类型”为“Asm源文件(*.a*,*.src)”(由于我们使用的是汇编语言,所以选择Asm源文件),选中刚才保存的Test.Asm,按“Add”,再按“关闭”,文件就添加到了工程中。
7.设置目标属性:
向工程添加了源文件后,鼠标右键点击“TarGet1”,在弹出的菜单中选“目标Target1属性”,如下图:
在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E生成HEX文件”选项前要打勾,按“确定”退出。
最后,从菜单的“工程”中执行“R重新构造所有目标”(或者按下图红圈中的按钮),汇编、连接、创建Hex文件一气呵成;在工程文件的目录下就会生成与工程名相同的一些文件,其中大部分文件我们并不必关心,而生成的Hex文件是我们需要的!
它是要烧写到单片机中的最终代码,也就是单片机可以执行的程序。
这里生成的是Test.HEX,稍后就写入。
若在下面的状态窗中有错误提示,就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。
直至没有错误。
8.模拟调试:
在没有语法错误的情况下,按下图红圈中的按钮就可以进行模拟调试:
下面是调试窗。
由于我们的程序是让P0口8个脚隔一个输出0,隔一个输出1,所以要从菜单的“外围设备”中打开“Prot0”P0口窗:
单击“单步运行”,在P0窗中就可以看到我们原先设想的效果:
(二)、系统仿真软件的设置
1.target
(1)晶振选12MHZ,
(2)不选生成.HEX文件
(3)输出startdebugging
(4)Debug点右边
(5)波特率选38400
二、烧录芯片
1.EA/VPP接+5V电源
2.SF1(VCC)打开(单片机最小系统)
3.自动打开,选.HEX文件
4.拔掉下载线
5.相应模块连接线
实验二MCS-51单片机指令学习(2学时)
一.实验目的
1.在Keil软件平台下学习常用指令的特点;
2.写出下面二实例各条指令的含义;
3.写出各实例实现的功能;
二.实验设备
1.KeilKeiluVision2开发系统一台;
2.+5V电源一台;
3.仿真器一条;
4.单片机实验系统一台。
三.实验内容及步骤
实例一指令的含义机器操作代码
MOVPSW,#08H
MOV30H,#25
MOVR0,#30H
MOVA,@R0
MOVDPTR,#0006H
MOVA,#35H
MOVX@DPTR,A
MOVA,R0
MOVX@DPTR,A
MOVCA,@A+DPTR
SJMP$
功能:
1、将程序输入Keil编辑器,保存文件名为MOV.ASM
2、对源程序进行编译,修改语法错误
3、打开窗口写出每条指令的机器操作代码。
4、写出R0在数据存储单元中的地址,执行到SJMP时R0.、DPTR、A的内容
实例二指令的含义机器操作代码AP0
ORG0000H
MOVA,#34H
MOVP0,#56H
MOVB,#12H
LCALLPP
SJMP$
PP:
pusha
pushp0
mova,#78h
movp0,a
popp0
popa
RET
END
1、将程序输入编辑器,保存文件名为STACK.ASM
2、对源程序进行编译,修改语法错误
3、打开窗口写出每条指令的机器操作代码。
4、打开CPU窗口、单步执行写出每条指令A.P0的值。
四、实验报告要求
1、写出上述两试验程序各条指令的含义(与预习时相比是否一致),整理试验一试验二的结果。
2、区分实例一个条传输指令的不同。
3、写出指令在执行调用时堆栈SP的变化过程和堆栈在堆栈区所保存内容。
实验三I/O口简单实验(2学时)
一.实验目的
学习89S52单片机的32根I/O口的基本输出功能,以P1口为例,P0,P1,P3口道理均相同。
学习延时子程序的编程和应用。
二.实验设备
1.KeilC开发系统一台;
2.+5V电源一台;
3.仿真电缆一条;
4.单片机实验系统一台。
三.实验内容
1.使8个LED发光二极管循环闪亮,时间间隔为0.5秒;
2.使8个LED发光二极管同时亮、灭,时间间隔为1秒。
四.实验步骤
1.将短路子组DZ2的8个短路子短接,其余路子不短接。
2.给TMD-1加电,运行程序。
五.分析程序
1.8个发光二极管循环闪亮,时间间隔为1秒
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVA,#01H
LOOP:
MOVP1,A
LCALLDELAY
RLA
SJMPLOOP
DELAY:
MOVR0,#10
DELY0:
MOVR7,#100
DELY1:
MOVR6,#250
DJNZR6,$
DJNZR7,DELY1
DJNZR0,DELY0
RET
END
2.使8个LED发光二极管同时亮、灭,时间间隔为1秒。
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#60H
MOVA,#0FFH
LOOP:
MOVP1,A
LCALLDELAY
CPLA
SJMPLOOP
DELAY:
MOVR0,#10
DELY0:
MOVR7,#100
DELY1:
MOVR6,#250
DJNZR6,$
DJNZR7,DELY1
DJNZR0,DELY0
RET
END
三、实验报告要求
1、写出上述实验程序各条指令的含义(与预习时相比是否一致),整理实验的结果。
2、试分析改变A的值将影响什么?
3、试分析改变R7、R6的值将影响什么?
实验四单片机内部定时器实验(2学时)
一.实验目的
1.通过实验了解MCS-51单片机中定时/计数器的基本结构、工作原理和工作方式,掌握工作在定时器和计数器两种不同方式下的编程方法。
2.学习蜂鸣器的使用。
二.实验设备
1.KeilC开发系统一台;
2.+5V电源一台;
3.仿真电缆一条;
4.单片机实验系统一台。
三.实验内容及步骤
1.定时器实验1:
编写定时16秒的程序,1秒、2秒、3秒……的变化由数码管体现,到16秒时间到时,停止计数,蜂鸣器报警。
2.定时器实验2:
使用晶振12MHZ的条件下,用定时器0产生100ms定时,由P1口作为输出口,将累加器A的内容送到发光二极管上显示出来。
四.程序调试
五.调试结果分析
在实验报告上写出来。
实验五数码管显示实验(2学时)
一.实验目的
1.掌握数码管显示数据的原理;
2.掌握查表指令的用法;
3.熟悉7段数码管的共阳极连接和共阴极连接方法。
二.实验设备
1.KeilC开发系统一台;
2.+5V电源一台;
3.仿真电缆一条;
4.单片机实验系统一台。
三.实验内容及步骤
1.学习共阴极数码管的用法,将十六进制的数0到F送给数码管循环显示,时间间隔是1秒,延时要求用两种方法(估算法和精确法);
2.调试课本例题6.1(P159)的程序,并且在试验箱上演示结果。
四.参考程序
例6.1源程序
ORG0000H
ALMPMAIN
ORG0030H
MAIN:
MOVTMOD,#10H ;定时器T1工作在方式1
MOVTH1,#3CH ;T1置50ms计数初值
MOVTL1,#0B0H
SATRT:
MOVR1,#00H ;计数显示初始化
MOVDPTR,#TAB
DISP:
MOVA,R1
MOVCA,@A+DPTR ;查表得显示的字型码
MOVP1,A ;数码管显示0
ACALLDELAY1S ;延时1s
INCR1 ;计数值加1
CJNER1,#10,DISP ;秒值不到10,继续
;显示;否则清0
MOVR1,#00H ;计数值清0
SJMPDISP
TAB:
DB 0C0H,0F9H,0A4H;0,1,2
DB0B0H,99H,92H;3,4,5
DB82H,0F8H,80H;6,7,8
DB90H;9
;———————————1s延时子程序————————
DEALY1S:
MOVR3,#14H;置50ms计数循环初值
SETBTR1 ;启动T1
LP1:
JBCTF1,LP2 ;查询计数溢出
SJMPLP1 ;未到50ms继续计数
LP2:
MOVTH1,#3CH;重新置定时器初值
MOVTL1,#0B0H
DJNZR3,LP1;未到1s继续循环
RET ;返回主程序
END