单片机原理及其应用.docx

上传人:b****1 文档编号:326835 上传时间:2022-10-08 格式:DOCX 页数:17 大小:116.10KB
下载 相关 举报
单片机原理及其应用.docx_第1页
第1页 / 共17页
单片机原理及其应用.docx_第2页
第2页 / 共17页
单片机原理及其应用.docx_第3页
第3页 / 共17页
单片机原理及其应用.docx_第4页
第4页 / 共17页
单片机原理及其应用.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机原理及其应用.docx

《单片机原理及其应用.docx》由会员分享,可在线阅读,更多相关《单片机原理及其应用.docx(17页珍藏版)》请在冰豆网上搜索。

单片机原理及其应用.docx

单片机原理及其应用

单片机原理及其应用

(电子专业使用)

实验指导书

南京城市职业学院工程技术系

二○○八年四月

第一部分实验环境及工具介绍

本次实验使用uVision2集成开发环境和Top2004编程器。

下面分别简要介绍其使用方法。

文章部分引自磁动力工作室站长明浩编写的《单片机C语言教程》和赵亮、侯国锐编著的《单片机C语言编程与实例》。

第一课 建立您的第一个项目

  开始→程序→运行KeiluVision2几秒后,出现如图1-1的屏幕。

图1-1 启动时的屏幕

接着按下面的步骤建立您的第一个项目:

  

(1)新建工程。

点击Project菜单,选择弹出的下拉式菜单中的NewProject,如图1-2。

接着弹出一个名为“CreateNewProject”的对话框,如图1-3,先选择一个合适的文件夹准备来存放工程文件,如“C51”是新建的文件夹。

在"文件名"中输入您的第一个程序项目名称,这里我们用"test","保存"后的文件扩展名为uv2,这是KEILuVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。

我们建议:

今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。

图1-2 NewProject菜单

图1-3 文件窗口

(2)选择单片机。

紧接着,KeilC51提示您选择CPU器件。

8051内核单片机最早是由鼎鼎大名的Intel公司发明的,后来其他厂商如Philips、Atmel、Winbond等先后推出其兼容产品,并在8051的基础上扩展了许多增强功能。

在这里我们选择Atmel公司的AT89S51。

此时屏幕如图1-4所示。

图1-4选取芯片

接下来弹出一个如图1-5所示的对话框。

该对话框提示您是否要把标准8051的启动代码添加到工程中去。

KeilC51既支持C语言编程也支持汇编语言编程。

如果打算用汇编语言写程序,则应当选择“否(N)”;如果打算用C语言写程序,一般也选择“否(N)”,但是,如果用到了某些增强功能需要初始化配置时,则可以选择“是(Y)”。

在这里,我们选择“否(N)”,即不添加启动代码。

图1-5选择是否要添加启动代码

至此,一个空的KeilC51工程建立完毕。

(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。

点击图1-6中1的新建文件的快捷按钮,在2中出现一个名为“Textn”(其中n表示序号)的文档,或通过菜单File-New或快捷键Ctrl+N来实现。

图1-6新建程序文件

点击图1-6中的3保存新建的程序,也可以用菜单File-Save或快捷键Ctrl+S进行保存。

因是新文件所以保存时会弹出如图1-7的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。

注意:

扩展名“.asm”不可省略。

图1-7保存新建的源程序文件

(4)添加源程序文件到工程中。

现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。

我们需要把它添加到工程中去。

单击KeilC51软件左边项目工作窗口“Target1”上的“+”,将其展开。

然后右击“SourceGroup1”文件夹,会弹出如图1-8所示的选择菜单。

单击其中的“AddFilestoGroup'SourceGroup1'”项,将弹出如图1-9所示的对话框。

图1-8把文件加入到项目文件组中

图1-9选择文件

请在文件类型下拉列表中选择Asmsourcefile源文件,再选择刚刚保存的文件“test1.asm”

,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。

这时可以点击SourceGroup1文件夹图标左边的“+”展开后查看。

(5)现在开始输入源程序。

先最大化“test1.asm”源程序窗口,然后请按实验一程序清单输入程序代码。

;----------------入口程序-------------------

ORG0000H;程序执行开始地址

LJMPSTART;跳到标号START执行

;---------------主程序-------------------

START:

MOVP1,#01111111B;点亮最下面的LED,即P1_7口低电平

LCALLDELAY50;延时50毫秒

MOVP1,#B;点亮下面第二个LED,即P1_6口低电平

LCALLDELAY50;延时50毫秒

MOVP1,#B;LED依次点亮(以下省略)

LCALLDELAY50;延时50毫秒

MOVP1,#B

LCALLDELAY50;延时50毫秒

MOVP1,#B

LCALLDELAY50;延时50毫秒

MOVP1,#B

LCALLDELAY50;延时50毫秒

MOVP1,#B

LCALLDELAY50;延时50毫秒

MOVP1,#B

LCALLDELAY50;延时50毫秒

MOVP1,#B;完成第一次循环点亮,延时约0.25秒

LCALLDELAY50;延时50毫秒

AJMPSTART;反复循环

;-----------延时子程序,12M晶振延时约50毫秒---------------

DELAY50:

MOVR4,#5

L3:

MOVR2,#20

L1:

MOVR3,#248

DJNZR3,$

DJNZR2,L1

DJNZR4,L3

RET

END

(6)单击KeilC51工具栏的“

”图标,弹出名为“OptionsforTarget‘Target1’”的对话框。

单击“Output”标签页,选中“CreateHEXFile”项,然后“确定”。

参见图1-10。

图1-10编译环境设置

(7)我们先来看图1-11,图中1、2、3都是编译按钮,不同是1是用于编译单个文件;2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。

在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。

5是菜单中的它们。

这个项目只有一个文件,你按123中的一个都可以编译。

在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。

单击工具栏的按钮“

”编译当前源程序。

编译结果会显示在输出窗口4内。

如果是“0Error(s),0Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。

如果存在错误或警告,双击错误,在源程序的错误行前会出现

,修改后,再编译,直到通过为止。

图1-11编译程序

(8)编译后的结果会生成IntelHEX格式的程序文件“test1.hex”,如图1-12。

该文件可以被专门的芯片烧写工具(例如Top2004编程器)载入并最终烧录到具体的芯片中。

芯片安装到自己的电路板上,通电,就可以运行里面的程序了。

图1-12 编译信息窗口

第二课 在KeilC51下调试程序

KeilC51的调试功能非常强大,本章我们先做一个初步了解,等以后再慢慢体会。

现在仍然以实验一LED闪烁发光程序为例,来具体了解如何进行仿真操作。

2.1进入仿真状态

如果程序编译通过,就可以仿真了。

在仿真之前,有一项参数最好配置一下,仍然按“

”图标进入编译环境设置,找到“target”下的“Xtal(MHz)”项,填入合适的晶振频率,比如12。

最后点击“确定”。

进入仿真状态很简单,直接点击工具栏红色的“

”图标。

2.2认识各个仿真窗口

1.源程序窗口

KeilC51调试界面的中间是源程序窗口。

黄色箭头“

”所指为当前即将执行的代码。

以深灰色标记的程序行是可以执行的代码(当然,在调试过程中未必一定要去执行)。

以浅灰色标记的程序行不可作为代码来执行,它们是注释、空行、标号或ROM数据表。

以绿色标记的程序行表示曾经执行过的代码。

2.寄存器窗口

KeilC51调试界面的左边是寄存器窗口。

8051的工作寄存器(R0~R7)和系统寄存器(a、b、sp、dptr、PC、psw)都列出来了。

Value栏显示的是寄存器的当前数值。

如果在调试过程中某个寄存器的值有变化,则会用蓝色的背景标记。

单击psw寄存器左边的“+”,展开后还可以看到其每一位的情况。

3.汇编窗口

单击工具栏的“

”图标,源程序窗口会自动切换成汇编窗口。

在汇编窗口里,我们可以看到每条指令的存储地址和编码等信息。

再次单击“

”,回到源程序窗口。

4.存储器窗口

单击工具栏的“

”图标,将显示出存储器窗口。

51单片机的存储器分为多个不同的存储空间,如果要观察代码存储器,就在地址栏“Address:

”内输入“C:

地址”,例如:

C:

0080H;如果要观察外部数据存储器,就输入“X:

地址”;如果要观察内部数据存储器,则可以输入“I:

地址”。

拖动存储器窗口右边的滚动条还可以观察输入地址附近的存储单元。

存储器窗口有“Memory#1~Memory#4”共4个观察子窗,您可以用来分别观察代码存储器、内部数据存储器和外部数据存储器。

存储器的内容是可以修改的。

用鼠标右击打算要修改的存储单元,选择“ModifyMemoryat…”项,弹出修改对话框,可以随意修改存储单元的内容。

5.变量观察和堆栈窗口

单击工具栏的“

”图标,将显示变量观察和堆栈窗口(Watch&CallStackWindow)。

在Locals标签页,会自动显示局部变量的名称和数值。

在C语言程序的函数中,每一对花括号“{}”内定义变量都是局部变量,能够自动显示。

在“Watch”标签页内,先用鼠标点击一次“typeF2toedit”,再按功能键“F2”,输入所要观察的局部或全局变量的名称,回车后就能显示出当前数值。

在“CallStack”标签页内,可以实时地观察到堆栈的使用情况。

2.3程序的运行控制

KeilC51能够实现程序单步和全速运行,具体由工具栏上的按钮来实现:

●复位按钮“

”:

单击此图标,能够使程序复位,程序将从地址C:

0000H处执行。

●全速运行“

”:

单击此图标,能够使程序全速运行。

●停止运行“

”:

该图标原来是灰色(不可操作),在进入全速运行状态后会变成红色。

如果要停下来,则可以按此图标。

●单步进入“

”:

按此图标可以实现程序的单步执行。

在遇到函数调用时,会跟踪进入函数体。

●单步跳过“

”:

也是单步执行,但是遇到函数时,视作“1条指令”来执行,不会跟踪进入。

●单步跳出“

”:

在调试C语言程序时,如果希望从某个函数中提前返回,则可以按此图标。

●执行到光标“

”:

用鼠标单击某条可执行的代码(深灰色标记的程序行)。

然后按此图标,则程序开始全速执行,当遇到光标所在的行时,会自动停下来。

如果单击不可执行的程序行(有浅灰色标记),试图让程序执行到该行,是不允许的,“

”图标也会立即变成灰色,不让你操作。

●设置/清除断点“

”:

KeilC51支持断点设置功能。

单击需要设置断点的行,再单击此图标,我们会看到该行被一个红色的小方块标记。

当程序全速运行时遇到断点,便会自动停下来。

KeilC51允许在同一个程序里设置多个断点。

清除某个断点的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1