单片机原理及应用实验指导书Word下载.docx
《单片机原理及应用实验指导书Word下载.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验指导书Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
其功能为将被加数写入30H、31H单元,
加数写入40H、41H单元,运行程序结果写入50H、51H、52H单元中,加法程序功能为:
(30H)(31H)+(40H)(41H)=(50H)(51H)(52H)(都是高位在前、低位在后)。
三、实验设备
1.PC机一台。
四、实验步骤
1.启动PC机,打开桌面上的KeilμVision4软件,进入μVision4界面,如图2-1。
图2-1μVision4界面
2.创建和打开项目(项目管理)
项目是用来保存文件、链接工具、目标代码生成和窗口配置信息的。
可以使用“Project”
菜单中的“NewμVisionProject”选项来创建项目。
一旦项目被保存,将保存如下信息:
●当前所有打开的文件。
●集成链接工具的设置。
●目标生成配置。
●主IDE窗口及已经打开的调试窗口的位置和大小。
●编辑器的设置如字体和文字颜色等。
2.1创建新项目
2.1.1选择【Project】/【NewμVisionProject】选项,并打开。
如图2-2。
2.1.2在弹出的“CreateNewProject”对话框中选择要保存项目文件的路径,如图2-3。
在“E盘”以自己的学号建立一文件夹,以后自己的实验程序都存在此文件夹中。
例如:
新文件夹为“”,然后单击“保存”按钮。
图2-2Project菜单
图2-3“CreateNewProject”对话框
2.1.3在弹出的“CreateNewProject”对话框中的“文件名”文本框中输入项目名,例如:
shiyan1(该文件名不要用数字开头),然后单击“保存”按钮。
如图2-4。
建立项目完成。
图2-4建立项目
2.1.4在弹出的对话框中要求选择单片机的型号。
在输入项目名称后单击确定后,会弹出器件选择窗口;
在此窗口中选择合适的CPU。
窗口中的器件按公司名称排列。
在此选择“AT89C51”的型号,点击“确定”完成选择
图2-5选择AT89C51型号
2.1.5弹出的对话框点击“确定”按钮后,会弹出的如图2-6的对话框,询问是否要将启动代码“StartupCode”加入到项目中。
点击“否”。
图2-6“StartupCode”
3.源程序编辑
IDE包括一个全功能的编辑器。
可用文件菜单中的“NewFile”命令来新建文件,或用文件工具栏中的“New”按钮,然后开始键入源程序。
只有当文件的扩展名为.asm或.c时,才具有源程序关键字符彩色显示功能。
可用文件保存按钮,或用文件菜单中的“Save”或“SaveAs”命令保存文件。
然后再将编辑好的源代码添加到项目中。
3.1建立一个新的实验源程序文件。
选择【File】/【New】选项,或者单击工具栏
按钮。
如果已经有源程序文件,可以忽略这一步。
3.2在弹出的程序文本框中输入一个简单的程序,如图2-7所示。
图2-7输入新的实验源程序
3.3程序输入完成后,要保存程序文件。
选择【File】/【Save】选项,或者单击工具栏
按钮,保存文件。
在弹出的对话框中选择要保存的路径,在“文件名”文本框中输入文件名。
注意一定要输入文件扩展名,如果是C程序文件,文件名为*.c;
如果是汇编文件,文件名为*.asm。
shiyan1.c,单击“保存”按钮。
注意一定要有扩展名.C。
#include“STC15F2K61S2.H”
#include<
stdio.h>
intrins.h>
unsignedchara[5]_at_0x50;
unsignedcharww0_at_0x30;
unsignedcharww1_at_0x31;
unsignedcharww2_at_0x32;
unsignedcharww3_at_0x33;
unsignedcharww4_at_0x34;
unsignedcharee0_at_0x40;
unsignedcharee1_at_0x41;
unsignedcharee2_at_0x42;
unsignedcharbdataBZW_at_0x20;
//标志位
sbitBB0=BZW^0;
//标志位0
sbitBB1=BZW^1;
//标志位1
sbitBB2=BZW^2;
//标志位2
unsignedcharxx;
yy;
zz;
inti,k,y,z,x;
voidmain()
{
ww0=0x95;
//存储器窗口察看30h
ww1=0xa6;
//察看31h
ww2=0xb7;
//察看32h
ww3=0x88;
//察看33h
ww4=0x08;
//察看34h
k=ww0+ww1+ww2+ww3+ww4;
//观察和堆栈窗口察看k=0x282
ww4=k/4;
//察看34h=0xa0
ee0=ww4/100;
//察看40h=0x01
xx=ww4%100;
//察看xx观察和堆栈窗口察看xx=0x3c
ee1=xx/10;
//察看41h=0x06
ee2=xx%10;
//察看42h=0x00
if(ee0>
2)
BB0=1;
//察看20h位0
if(ee1>
=5)
BB1=1;
//察看20h位1
if(ee2<
9)
BB2=1;
//察看20h位2
for(i=0,k=0x55;
i<
5;
i++,k++)
{
a[i]=k;
//察看存储器窗口(50h---54h)
}
ACC=0xa0;
//专用寄存器窗口察看A
B=0xbb;
//专用寄存器窗口察看B
switch(ACC+1)
{
case0xa1:
TL0=0x77;
TH0=0x88;
//存储器窗口察看8ah,8ch
break;
case0xa2:
TL0=0x33;
TH0=0x44;
//存储器窗口察看8ah,8ch
default:
TL0=0x11;
TH0=0x22;
break;
while
(1);
}
3.4将编辑好的源代码文件添加到项目中。
单击Target1前面的+号,展开里面的内容SourceGroup1,如图2-8所示。
3.5用右键单击SourceGroup1,在弹出的快捷菜单中选择AddFiletoGroup`Source
Group1`选项,如图2-9所示。
3.6如果是C文件,则选择“CSourcefile”;
如果是汇编文件,则选择“AsmSourcefile”,选择刚才源程序文件“shiyan1”,单击“Add”按钮,如果要添加多个文件,可以不断添加。
添加完毕后单击“Close”按钮,关闭该窗口,如图2-10。
图2-8Target展开图
图2-9AddFilestoGroup‘SourceGroup1’菜单
图2-10AddFilestoGroup‘SourceGroup1’对话框
3.7接下来要对目标进行一些设置。
用鼠标右键(注意用右键)单击Target1,在弹出的
会计菜单中选择OptionsforTarget“Target1”选项,如图2-11所示。
图2-11OptionsforTarget“Target1”选项
3.11选择设置Debug选项卡,这里有两类仿真形式可选:
UseSimulator和Use:
KeilMonitor-51Driver,前一种是纯软件仿真,后一种是带有Monitor-51目标仿真器的仿真。
如图2-12所示。
纯软件仿真仿真,选择“UseSimulator”即可。
图2-12设置Debug选项
4.源程序的编译和链接
编译程序,选择【Project】/【Rebuildalltargetfiles】选项.或者单击工具栏中的
按钮,开始编译程序。
如果编译成功,开发环境下面会显示编译成功的信息,图2-13;
如果不成功,图2-14,需修改程序语法等,选中图中程序错误的行,双击左键,则在程序编辑窗口中,在错误源代码所在的行处显示一标记,对程序错误进行修改,全部修改后,重新编译,直至编译成功。
图2-13编译成功
图2-14编译不成功
5.调试,运行程序菜单
5.1编译完毕之后,选择【Debug】/【Start/StopDebugSession】选项,或者单击工具栏中的
铵钮,即就进入调试环境,如图1-16,或图1-17,单击工具栏
铵钮,可在汇编程序与反汇编程序之间来回切换。
开始调试程序。
程序调试前应先要熟悉调试菜单Debug、调试命令,视图菜单View、项目菜单Project和项目命令Project。
见表1、表2、表3
5.2单步执行程序:
A.单击工具栏
铵钮,显示存储器窗口,在MEMORY#1中的/ddress窗口处输入:
D:
30H,然后按回车键,在程序执行过程中,注意观察RAM30H,31H,40H,41H,50H,51H,52HD1数据变化,
注意观察特殊功能寄存器的存数据变化情况。
(A,B,SP,DPTR,PC,PSW,R0—R7)。
B.单击工具栏
或快捷键F11,单步执行程序,观察RAM,特殊功能寄器“A”变化情况。
C.当单步执行程序到“while
(1);
”时,停止向下执行,原地踏步。
D.单击工具栏
复位。
E.重新单步执行程。
图2-15汇编程序
图2-16反汇编程序
5.2.2程序的修改
A.如果程序需要修改,单击工具栏
退出调试状态。
B.对程序进行修改,并保存
C.编译程序
D.重新开始调试程序。
5.2.3断点执行程序:
A.断点的设置:
单击要设置断点的程序行后,移动鼠标到工具栏,单击
,此时要设置断点的程序行前,显示一红色标记,断点设置完成。
可设置多个断点。
或快捷键F5,直到遇到一个中断后停止,
C.再次单击工具栏
或快捷键F5,程序从断点处开始向下执行程序。
D.断点的取消:
单击要取消设置断点的程序行后,移动鼠标到工具栏,单击
,此时设置断点的红色标记消除,断点被取消。
E.单击工具栏
5.2.3连续执行程序:
单击工具栏
或快捷键F5,连续执行程序,单击工具栏
或快捷键Esc,停止程序运行。
6.修改数据:
ww0=0x55;
//存储器窗口察看30h
ww1=0x77;
//察看31h
ww2=0xaa;
//察看32h
ww3=0x44;
//察看33h
ww4=0xdf;
//察看34h
ACC=0xa3;
//专用寄存器窗口察看A
//专用寄存器窗口察看B
7.重新调试。
表2-1视图菜单View。
菜单
工具栏
描述
StatusBar
显示/隐藏状态条
FileToolbar
显示/隐藏文件菜单条
BuildToobar
显示/隐藏编译菜单条
DebugToobar
显示/隐藏调试菜单条
ProjectWindow
显示/隐藏项目窗口
OutputWindow
显示/隐藏输出窗口
SourceBrowser
打开资源浏览器
DisassemblyWindow
显示/隐藏反汇编
Watch&
CallStackWindow
显示/隐藏观察和堆栈窗口
MemoryWindow
显示/隐藏存储器窗口
CodeCoverageWindow
显示/隐藏代码报告窗口
PerformanceAnalyzerWindow
显示/隐藏性能分析窗口
SymbolWindow
显示/隐藏字符变量窗口
SerialWindow#1
显示/隐藏串口1的观察窗口
SerialWindow#2
显示/隐藏串口2的观察窗口
Toolbox
显示/隐藏自定义工具栏窗口
PeriodicWindowUpdate
程序运行时刷新观察窗口
WorkbookMode
显示/隐藏窗口框架模式
Options...
设置颜色,字体,快捷键和编辑器的选项
表2项目菜单Project和项目命令Project
快捷键
NewProject⋯
创建新项目
ImportμVision1
Project⋯
转化μVision1的项目
OpenProject⋯
打开一个已经存在的项目
CloseProject⋯
关闭当前的项目
TargetEnvironment
定义工具、包含文件和库的路径
Targets,Groups,Files
维护一个项目的对象、文件组和文件
SelectDeviceforTarget
选择对象的CPU
Remove⋯
从项目中移走一个组或文件
Options⋯
Alt+F7
设置对象、组或文件的工具选项
FileExtensions
选择不同文件类型的扩展名
BuildTarget
F7
编译修改过的文件并生成应用
RebuildTarget
重新编译所有的文件并生成应用
Translate⋯
Ctrl+F7
编译当前文件
StopBuild
停止生成应用的过程
1~7
打开最近打开过的项目
表3调试菜单和调试命令Debug
Start/StopDebugging
Ctrl+F5
开始/停止调试模式
Go
F5
运行程序,直到遇到一个中断
Step
F11
单步执行程序,遇到子程序则进入
Stepover
F10
单步执行程序,跳过子程序
Stepoutof
Ctrl+F11
执行到当前函数的结束
Currentfunctionstop
Runing
Esc
停止程序运行
Breakpoints⋯
打开断点对话框
Insert/RemoveBreakpoint
设置/取消当前行的断点
Enable/DisableBreakpoint
使能/禁止当前行的断点
DisableAllBreakpoints
禁止所有的断点
KillAllBreakpoints
取消所有的断点
ShowNextStatement
显示下一条指令
Enable/DisableTrace
Recording
使能/禁止程序运行轨迹的标识
ViewTraceRecords
显示程序运行过的指令
MemoryMap⋯
打开存储器空间设置对话框
PerformanceAnalyzer⋯
打开设置性能分析的窗口
InlineAssembly⋯
对某一行重新汇编,可以修改汇编代码
FunctionEditor⋯
编辑调试函数和调试设置文件
ResetCPU
复位CPU
实验3
数据排序
1.熟悉51单片机体系结构,掌握程序设计方法。
2.掌握排序程序的设计方法。
1.本例程采用交换排序法将内部RAM中的30~39H单元中的10个单字节无符号二进制数按从小到大的次序排列;
2.将排序后的数据中的最大的一个数和最小一个数去掉,求其他八个数的和,和放40H,41H中,求这八个数的平均值,放在50H中。
3.数据排序可采用:
冒泡法、插入法等C语言8大经典排序算法。
1.用C语言编写程序。
2.编译、生成项目、下载程序,调试运行程序。
3.用单步、断点、连续执行程序的方法调试程序。
4.打开RAM数据窗口,分别观察看30H—39H、40H,41H(02H)(0C0H)和50H(58H)的单元。
四、程序设计指导
1.变量名是内存中存储空间的地址别名,指定将变量创建到内存的存储空间地址的方法如下:
(1)dataunsignedchara[10]_at_0x30;
//片内地址0x30上定义数组a
(2)#definexDBYTE[0x40];
//片内地址0x40上定义字节变量x
2.求和时,注意数据溢出问题:
比如将字节类型的两个变量a,b相加,此时a和b的最大值为28-1,两者相加后肯定大于28。
所以应该如下处理(变量存储长度加大):
unsignedchara,b;
intx;
……
x=a+b;
实验4
数据搬运
1.熟悉51单片机存储结构,掌握程序设计方法。
2.掌握单片机内的数据搬运。
1.将程序存储器的数据搬运到数据存储区。
2.数据存储区内的数据搬运。
4.打开CODE和RAM数据窗口,对照观察源地址与目标地址的数据是否一致。
1.源数据或目标数据可采用数组或指针
2.采用循环结构实现
实验5
汇编程序实验
1.了解51单片机指令系统
2.了解51汇编程序设计。
1.了解汇编语言编程。
查阅相关资料,尝试汇编程序调试一下题目:
2.调试,并记录实验结果
3.编写源程序,并保存(扩展名用asm)。
实验6
C8051F020单片机基本配置方法
1.熟悉C8051F优先权交叉开关译码器,掌握I/O口交叉开关设置和引脚配置。
2.了解C8051F单片机内部和外部振荡器结构和配置方法。
1.C8051F020单片机系统时钟配置为外部晶体振荡器。
2.I/O口交叉开关配置。
SPI、T0、T1、/INT0和/INT1分配端口引脚。
将P1.5、P1.6和P1.7配置为模拟输入。
3.在P2.1输出一个矩形波,用示波器观察波形,并记录信号频率幅度;
改变系统时钟为外部晶体振荡器的二分频,再次记录信号频率和幅度。
要求:
1.程序调试过程中,要充分利用开发环境提供的调试工具。
(1)用单步调试的方式,观察单片机的运行过程;
用开发环境提供的资源观察窗口,查看P2.1引脚的逻辑状态。
(2)用全速运行查看程序运行的效果。
三、实验说明
通过本实验,进一步初步熟悉KeiluVision4开发环境的使用;
了解C8051F020单片机的I/O口交叉开关和振荡器及配置使用;
了解C语言程序设计和调试方法。
四、实验仪器和设备
PC机,KeiluVision4软件,C8051F020开发板,EC5在线仿真器。
五、实验原理及参考程序流程图
1.C8051F系列MCU振荡器
每个C8051F系列MCU都有一个内部振荡器和一个外部振荡器驱动电路,每个驱动电路都能产生系统时钟,MCU在复位后从内部振荡器启动。
系统时钟可在内部振荡器和外部振荡器之间进行切换。
也可以在选择内部振荡器时让外部振荡器保持在允许状态,这样可以避免在系统时钟被切换到外部振荡器时的启动延迟。
外部振荡器具有很高的可配置性,为系统设置者提供了多种选择。
时基信号可以从外部CMOS电平时钟源、晶体或陶瓷谐振器、RC组合电路或外部电容获得。
内部和外部振荡器的工作受两个SFR寄存器控制,即OSCICN内部振荡器控制寄存器和OSCXCN外部振荡器控制寄存器。
2.C8051F020交叉开关配置
C8051F020单片机内部的数字和模拟资源可以通过P0~P3,32个I/O引脚使用。
每个端口引脚都可以被定义为通用I/O(GPIO),又可以分配给一个数字外设或功能(例如:
UART0或/INT1),如图所