SIAS51单片机实验指导书C语言Word格式文档下载.docx
《SIAS51单片机实验指导书C语言Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SIAS51单片机实验指导书C语言Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
![SIAS51单片机实验指导书C语言Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/3/1533ac55-3540-4ad3-9256-78137266c1d9/1533ac55-3540-4ad3-9256-78137266c1d91.gif)
1.正确安装KeilC与Proteus及连调驱动。
2.设置KeilC的选项。
在KeilC下创建一个项目,加入KeilC源程序。
单击“Project菜单/OptionsforTarget”选项或者点击工具栏的“OptionForTarget”按钮
,在弹出窗口上点击“Debug”按钮,选中对话框右栏上部的下拉菜单中的“ProteusVSMMonitor”,点击“Use”表明选中。
出现如图所示。
KeilCμVision3选项设置
点击“Setting”按钮,设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址。
在“Port”后面添加“8000”,如图(a)所示,点击“OK”按钮。
将工程编译,进入调试状态。
a)b)
选项设置
a)KeilC通信接口设置b)Proteus选项设置
3.Proteus的设置
打开ProteusISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,如图(b)所示,便可实现KeilC与Proteus连接调试。
4.KeilC与Proteus连接仿真调试
在KeilC开发环境Debug下点击单步、断点、连续运行,可在Proteus上清楚地观察到电路中每一个引脚的电平变化及闪烁灯的亮灭变化。
实验3流水灯实验
一、实验目的
学习Proteus和keilc软件的使用,掌握单片机原理图的绘图方法,熟悉μVision4编译软件、掌握C51编程与调试方法
二、实验原理
实验原理如2.3节所述,电路如图A-1所示。
编程实现流水灯功能,每两个显示状态间隔0.5秒,循环显示。
图A-1流水灯实验电路图
三、实验内容
1、参照教材图2-17及附表A-1,用ProteusISIS完成实验一电路原理图的绘制;
观察ProteusISIS软件的模块结构,熟悉菜单栏、工具栏、对话框等基本单元功能;
2、学会选择元件、画导线、画总线、修改属性等基本操作;
3、学会可执行文件加载及程序仿真运行方法;
4、编写汇编语言(或C51)程序;
5、练习μVision4程序动态调试方法,实现P0口8个LED灯轮流点亮功能:
P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.0无限循环;
6、观察仿真结果,完成实验报告。
四、实验要求
提交的实验报告中应包括:
1、完成的电路图(含绘图过程简述);
2、编写的源程序(含程序简要说明);
3、使用的程序调试方法;
4、实现的仿真效果(含运行截图与文字说明);
五、实验小结(结论与体会)。
附表A-1实验1的元件清单
实验4指示灯/开关控制实验
实验电路如图A-1所示。
1、用ProteusISIS完成如图A-2电路原理图的绘制;
5、练习μVision4程序动态调试方法,实现P0口的4个按键对P2口的4个LED灯控制点亮功能:
当K1键及K3键按下时点亮的顺序P2.0→P2.1→P2.2→P2.3;
当K2键按下时灯熄灭,当K1键和K4键按下时,点亮的顺序P2.3→P2.2→P2.1→P2.0;
无限循环;
5、实验小结(结论与体会)。
图A-2指示灯/开关控制电路图
实验5计数器显示实验
学习51单片机的基本输入/输出应用,Proteus软件的使用,掌握单片机原理图的绘图方法,熟悉μVision4编译软件、掌握C51编程与调试方法。
实验电路如图A-3所示。
编程实现如下计数功能:
可统计按键BUT的按压次数,并将按压结果以十进制数形式显示出来;
当显示值达到99后可以自动从1开始,无限循环。
1、用ProteusISIS完成如图A-3电路原理图的绘制;
5、练习μVision4程序动态调试方法。
四、实验步骤
1、提前阅读实验4相关的内容;
2、参考图A-4和表A-2,在ISIS中完成电路原理图的绘制;
3、在KeilμVision4中编写和编译C51程序,生成可执行文件;
4、在KeilμVision4中启动ISIS的仿真,并进联机调试。
五、实验要求
六、实验小结(结论与体会)。
实验6指示灯/数码管的中断控制实验
掌握外部中断原理,学习中断编程与程序调试方法。
实验电路如图A-4所示。
图中按键K1和K2分别接在P3.2和P3.3,发光二极管D1接在P0.6,共阴极数码管LED1接在P2口。
时钟电路、复位电路,片选电路忽略。
程序启动后,D1、LED1处于熄灭状态,单击K1,可使D1亮灯状态反转一次;
单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。
1、用ProteusISIS完成如图A-4电路原理图的绘制;
2、完成实验4要求的C51编程;
3、练习μVision4与ISIS联机仿真方法;
2、参考图A-4和表A-2,在ISIS中完成电路
原理图的绘制;
3、在KeilμVision4中编写和编译C51程序,
生成可执行文件;
图A-4指示灯/数码管的中断控制电路
表A-2实验4的元件清单
【阅读材料4】C51的程序调试方法
1、基于μVision4的C51调试方法
程序调试的目的是跟踪程序执行过程,发现并改正源程序中的错误。
为此,μVision4设有许多调试信息窗口,包括输出窗口(OutputWindows)、观察窗口(Watch&
CallStatckWindows)、存储器窗口(MemoryWindow)、反汇编窗口(DissamblyWindows)、串行窗口(SerialWindows)等,如图A-4-1所示。
为了能够直观地了解单片机的定时器、中断、并行端口、串行端口的工作状态,
μVision4还提供一些接口对话框(见图A-4-2),它们对于提高程序调试效率是非常有益的。
μVision4中自带的Simulation模块可模拟程序执行过程.可以在没有硬件的情况下进行程序调试。
进人调试状态后,界面与编辑状态相比有明显的变化,Dubug菜单项中一些原来程灰色的选项现在已可以使用了,且工具栏中会多出一个用于运行和调试的工具条,如图A-4-3所示。
Dubug菜单菜单上的大部分命令可以在此找到对应的快捷按钮,从左到右依次是:
复位、运行、暂停、单步、过程单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等。
学习程序凋试,必须明确两个重要的概念,即单步执行与全速运行。
全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,这样程序执行的速度很快.并可以看得到该段程序执行的总体效果。
但如果程序有错,则难以确认错误出现在哪些程序行。
单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程执行完以后得到的结果,是否与我们编写该行程序所想要得到的结果相同,借此可以找到程序中问题所在。
在程序调试中,这两种运行方式都要用到。
符号窗口
存储器窗口
图A-4-1程序调试信息窗口
图A-4-2接口对话框
图A-4-3运行和调试的工具条
使用菜单STEP或相应的命令按钮或使用功能键F11可以单步执行程序,使用菜单STEPOVER或功能键F10可以让过程单步形式执行命令。
所谓过程单步,是指将汇编语言中的子程序或高级语言中的函数作为一个语句来全速执行。
按F11键,可以看到源程序窗口的左边出现了一个黄色调试箭头,指向源程序的第一行,如图A-4-4所示。
图A-4-4程序调试窗口
每按一次F11键,即执行该箭头所指程序行,然后箭头指向下一行。
不断按F11键,即可逐步执行程序。
通过单步执行程序,可以找出一些问题之所在,但是仅依靠单步执行来查错有时是困,或虽能查出错误但效率很低,为此必须辅之以其他方法。
方法l:
在源程序的任一行单击,把光标定位于该行,然后单击某单“Debug”→“RuntoCursorline”(运行到光标所在行)选项,即可全速执行完黄色箭头与光标之间的程序行。
方法2:
单击菜单“Debug”→“StepoutofCurrentFunction”(单步执行到该函数外)选项,即可全速执行完调试光标所在的函数,黄色箭头指向调用函数的下一行语句。
方法3:
执行到调用函数时,按F10键,调试光标不进入函数内,而是全速执执行完该函数,然后黄色箭头直接指向主函数中的下一行。
方法4:
利用断点调试。
在程序运行前,事先在某一程序行处设置断点。
在随后的全速运行过程中,一旦执行到该程序行即停止,便可在此观察有关变量值,以确定问题之所在。
在程序行设置/移除断点的方法是:
将光标定位于需要设置断点的程序行,单击菜单“Dubug”→“Insert/RemoveBreakPoint”选项,可设置或移除断点(也可在该该行双击实现的功能);
单击菜单“Debug”→“Enable/DissbleBreakpoint”选项,可开启或暂停光标所在行的断点功能;
单击菜单“Debug”→“KillAllBreakpoint”选项,可清除所有的断点设置。
这些功能也可以用工具条上的快捷按钮进行设置。
通过灵活应用上述调试方法,可以大大提高查错效率。
2、在ISIS中实现具有汇编源码级调试能力,即ISIS编译生成的后缀为.hex文件,在ISIS中运行时即可提供原码查看,设置断点、单步运行等调试手段。
在调试菜单中,这种后缀为.hex文件可以提供多种调试信息,特别是“8051CPUSourceCodeU1”(源代码)信息,对动态调试非常重要。
调试窗口如图A-4-5所
示。
I
图A-4-5跑马灯调试窗口(汇编语言程序)图A-4-6加载.omf文件
图中打开了六项调试窗口,因而可以很方便的进行动态调试。
然而,若将.hex文件加载到ISIS中如【实例3-1】,发现其源代码窗口并不存在,很多调试功能也都不能使用。
这说明由μVision4生成的C51hex文件缺乏在SIS中进行动态调试的信息。
从Proteus6.9版本之后,ISIS开始支持一种由μVision4生成的ofm51格式文件,即绝对目标文件(absoluteobjectmoduleformatfiles)。
生成ofm51格式文件与hex格式文件的设置方法基本相同,都要用到“output”选项卡,但ofm51格式文件要使“GreateHEXFiles”选项框为空,还要将“NameofExecutable”文本框中的可执行文件的扩展名为.omf,如图A-4-6所示。
单击“确定”按钮退出设置,随后按一般的C51编译操作即可生成.omf格式的可执行文件。
进行ISIS仿真前,也需要像加载.hex文件那样加载omf文件,只是要将加载时用的“选择文件名”对话框中的“文件类型”由默认的IntelHexFiles”改为“ofm51Files”,如图A-4-6所示。
加载完成后就可以在ISIS中启动C51程序了。
可以发现.ofm文件不仅可以提供源代码信息,也支持许多其它调试方法,(“调试”菜单如图A-4-7所示)。
图A-4-6设置输出ofm格式文件
图A-4-7μVision4生成的omf文件的“调试”菜单图A-5-0实验5的电路原理图
实验7电子秒表设计
掌握中断和定时/计数器的工作原理,熟悉C51编程与程序调试方法。
实验电路如图A-5-0所示。
在程序的配合下,要求实现如下功能:
数码管的初始显示值为“00”,当“1S”到时秒计数器加1;
秒计数到60时清“0”,并重新从“00”开始,如此周而复始进行。
软件编程原理为:
采用T0定时方式l中断法编程,其中“1S”定时采用20次500ms定时中断的方案实现,编程流程图如图A-5-1所示。
1、用ProteusISIS完成如图A-5-0电路原理图的绘制;
2、理解定时器的工作原理,完成定时中断程序的编写与调试;
3、练习μVision4与ISIS联机仿真方法。
四、实验步骤
1、提前阅读实验5相关的阅读材料;
;
2、参考图A-5-0和表A-2,在ISIS
中完成电路原理图的绘制;
3、在KeilμVision4中编写和编译
C51程序,生成可执行文件;
4、在KeilμVision4中启动ISIS
的仿真,并进联机调试。
[阅读材料5]KeilμVision4与ISIS联合仿真
Rroteus可以仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
KeilμVision4是目前世界上最好的51单片机汇编和C51语言的集成开发环境,支持汇编与C混合编程,同时具备强大的软件仿真和硬件仿真(用mon5l协议,需要硬件支持)功能。
RroteusISIS能方便地和KeilμVision4整合起来,实现电路仿真功能与高级编程功能的完美结合,使单片机的软/硬件调试变得十分有效。
联合仿真的实现方法如下。
1.准备工作
首先应保证成功安装Proteus和KeilμVision4两个软件,确保在μVision4下安装动态链接库VDM51.dll并进行正确配置(请参阅其他相关书籍)。
2.检查联机配置情况
在μVision4中建立一个新工程后,还需要检查联机配置是否有效,具体做法是:
打开如图A-5-2所示的工程配置设置窗口,单击“dubug”选项卡,打开的默认界面如图A-5-2所示。
单击窗口右侧的“Use”选项,并单击下拉框选择将Rroteus作为模拟器(下拉框中的具体显示内容取决于配置VDM5I.dll时修改TOOL.INI文件的文本行),如图A-5-3所示。
此外,还应打开ISIS模块,查看并确保已经勾选了菜单“调试”→“使用远程调试监控”选项(见图A-5-4)。
至此,我们已建立起ISIS与μVision4的软件关联性,可以进行联合仿真了。
3.μVision4与ISIS的联合仿真
联合仿真的具体做法如下:
(1)分别打开ISIS下的原理图文件和μVision4下的工程文件,如图A-5-5)所示。
(2)单击μVision4菜单“Debug”→“Start/Stop,DbugSession”选项(或按Ctrl+F5键),将可执行文件下载到ISIS中。
(3)单击μVision4菜单“Debug”→“GO”选项(或按F5键),可启动ISIS中的连续仿真运行。
此时,ISIS出现运行画面,而μVision4则为寄存器窗口十反汇编窗口,如图A-5-6所示。
(4)如欲进行程序动态调试,可使用图A-所示的“运行和调试工具条”(或Debug菜单选项)进行μVision4下的相关操作。
(5)单击μVision4的菜单“Debug”→“StopRunning”选项,可终止仿真过程。
注意:
联合仿真时不能从ISIS中停止程序运行,否则会引起系统出错提示。
图A-5-2dubug”选项卡图A-5-3dubug”选项卡中选择将Rroteus作为模拟器
图A-5-4使用远程调试监控图A-5-5同时打开ISIS和μVision4文件
实验8单片机与报警电路的设计
声音是由震动所产生的,一定频率的震动就产生了一定频率的声音。
本实验是喇叭里发出滴答一长一短的报警声音,送出的端口是p1.0输出1khz,2khz变频信号报警,每一秒交换一次。
接线方法:
用一根1PIN数据线一端插入CPU部分P1口的P1.0,另外一端插入小喇叭部分的输入端JP16
org1000h
dlv:
movr2,#08h;
1kz持续时间
dlv1:
movr3,#0fah
dlv2:
cplp1.0;
输出1khz方波
lcalld5ms;
调用延时程序1
djnzr3,dlv2;
持续1秒
djnzr2,dlv1
movr2,#10h;
2khz持续时间
dlv3:
dlv4:
输出2khz方波
lcalld25ms;
调用延时程序2
djnzr3,dlv4
djnzr2,dlv3
sjmpdlv;
反复循环
d5ms:
movr7,#0ffh;
延时子程序1
loop:
nop
nop
djnzr7,loop
ret
d25ms:
movr6,#0ffh;
延时子程序2
lin:
djnzr6,lin
end
实验步骤:
1、使用proteus仿真,观察实验现象。
2、在开发板上下载程序,观察实验现象。
实验9数制转换子程序
单字节二进制数转换为三位数的BCD码
B=D2×
100+D1×
10+D0
单字节二进制数应转换为BCD子程序
入口:
(A)=二进制数
出口:
(R0)=十位数和个位数的地址
DRFS:
MOVB,#100
DIVAB;
(A)=百位数
MOV@R0,A;
存入RAM单元
INCR0
MOVA,#10
XCHA,B
(A)=十位、(B)=个位
SWAPA
ADDA,B;
个位、十位拼字
MOV@R0,A;
存入RAM
RET
END
将FFH转换为压缩BCD码存入内部
RAM20H.21H单元(高位在前)
1、实验内容
主程序流程图
2、实验步骤
使用keil仿真,观察各寄存器和存储单元的变化情况。
3、实验报告
1)写出程序流程图、程序清单
2)根据记录数据给程序加注解
3)调试心得
实验10BCD码求和
实验源代码:
ORG00H
SJMPSTART
ORG30H
START:
MOV30H,#68H
68H
56H
98H
55H
30H
31H
32H
33H
34H
35H
36H
23H
64H
MOV31H,#56H
MOV32H,#98H
MOV34H,#55H
MOV35H,#23H
MOV36H,#64H
MOVR7,#03H
MOVR0,#32H
MOVR1,#36H
CLRC
BCD1:
MOVA,@R0
ADDCA,@R1;
按字节相加,带进位的加法add
DAA;
十进制调整
MOV@R0,A;
和存回[R0]中
DECR0;
调整数据指