51单片机C语言教程-郭天祥-PDF转word版第二章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我们先回到2.1节最后的编辑界面“part2一l.c”下,在当前编辑框中输入如下的C语言源程序,注意:在输入源代码时务必将输入法切换成英文半角状态。
----------------------------------------------------------------------------------------------------------------------
以上是使用频率最多的几个按钮的功能,大家千万不要被一打开软件时呈现在眼前令人的眼花缭乱的众多按钮所吓着哟。其他一些调试时用到的按钮等我们具体用到时再做介绍。
2.2
大家是不是已经迫不及待地想编写程序了,接下来我们就用C语言编写一个点亮TX-1C实验板上第一个发光二极管的程序。由于这是本书的第一个程序,看懂了它,也就意味着你已经踏入了单片机C语言编程的第一道门槛,因此我们在这里要花些时间讲解它,大家一定要有耐心,认真地弄明白它。
在输入上述程序时,Keil会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。若新建立的文件没有事先保存的话,Keil是不会自动识别关键字的,也不会有不同颜色出现。程序输入完毕后,如图2.2.1所示。
我们暂且不要管这几句程序表示什么意思,先学会编译及错误处理,然后我再详细介绍代码的含义。接下来我们编译此工程,看看程序代码是否有错误。先保存文件,再单击K全部编译〗快捷图标圖。建议大家每次在执行编译之前都先保存一次文件,从一开始就养成良好的习惯对你将来写程序有很大好处,因为进行编译时,Keil软件有时会导致计算机死机,使你不得不重启计算机,若你在编写一个很大的工程文件时没有及时保存,那么重启后你将找不到它的任何踪影,只得重写。虽然这种情况极少发生,但出于安全考虑,建议大家及时
可见在中文状态下,Keil软件代码区输入符号会出现错误,我们改正错误后再编译一次,成功通过。
现在我们回到Keil编辑界面,开始分析代码含义。
知识点:
在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。
在代码中加入头文件有两种书写方法,分别#include <reg52.h>和#includen”reg52.h”,包含头文件时都不需要在后面加分号。两种写法区别如下:
REG52.H
Header generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
我们将程序中“ledl=0;/*点亮第一个发光二极管*/”一行中的“;”删掉,然后将输入法切换成中文输入,在中文输入状态下重新输入一个“;”,保存它,然后编译,如图2.2.3所示。
从图2.2.3看出,编译过程出现了错误,错误信息有三处,分别为part2一l.c的第5, 5, 6行,在一个比较大的程序中,如果某处出现了错误,编译后会发现有很多个错误信息,其实这些错误并非真正的错误,而是当编译器发现有一个错误时,编译器自身已经无法完整编译
新建文件后窗口界面如图2.1.8所示。
图2.1.7添加文件
图2.1.8添加完文件后的窗口界面
此时光标在编辑窗口中闪烁,可以输入用户的应用程序,但此时这个新建文件与我们刚才建立的工程还没有直接的联系,单击图标H,窗口界面如图2.1.9所示,在<文件名(N)>编辑框中,输入要保存的文件名,同时必须输入正确的扩展名。注意,如果用c语言编写程序,则扩展名必须为.c;如果用汇编语言编写程序,则扩展名必须为.asm。这里的文件名不一定要和工程名相同,用户可以随意填写文件名,然后单击<保存>按钮。
图2.1.9保存文件
(6)回到编辑界面,单击<Target 1>前面的“+”号,然后在<SourceGroup 1>选项上
(7)单击右键,弹出如图2.1.10所示菜单。然后选择KAdd Files to Group 'Source Group F3菜单项,对话框如图2.1.11所示。
图2.1.10将文件加入工程的菜单
/* BYTE Registers */
sfr P0= 0x80;
sfr PI= 0x90;
sfr P2= OxAO;
sfr P3= OxBO; sfr PSW = OxDO;
sfr CC= OxEO;
sfr B= OxFO;
sfr SP=0x81;
sfr DPL=0x82;
sfr DPH=0x83;
(3)这时会弹出一个对话框,要求用户选择单片机的型号,可以根据用户使用的单片机来选择。Keil C51几乎支持所有的51内核的单片机,TX-1C实验板上用的是STC89C52,我
们在对话框中找不到这个型号的单片机。因为51内核单片机具有通用性,所以我们在这里可以任选一款89C52就行,Keil软件的关键是程序代码的编写,而非用户选择什么硬件,在这里我们选择Atmel的89C52来说明,如图2.1.5所示。选择89C52之后,右边<Description>栏里是对该型号单片机的基本说明,我们可以单击其他型号单片机浏览一下其功能特点,然后单击<确定>按钮。
(2)选择工程要保存的路径,输入工程文件名。Keil的一个工程里通常含有很多小文件,为了方便管理,通常我们将一个工程放在一个独立文件夹下,比如保存到part2_l文件夹,工程文件的名字为part2_l,如图2.1.4所示,然后单击<保存>按钮。工程建立后,此工程名变为part2_l.uv2。
图2.1.4保存工程
当使用◊包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个头文件,也就是Keil\C51\INC这个文件夹下,如果这个文件夹下没有引用的头文件,编译器将会报错。
当使用双撇号””包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。reg52.h在软件安装文件夹处存在,所以我们一般写成#include <reg52.h>。
打开该头文件查看其内容,将鼠标移动到reg52.h上,单击右键,选择HOpen document <reg52.h>3,即可打开该头文件,如图2.2.5所示。以后若需打开工程中的其他头文件,也可采用这种方式。或者手动定位到头文件所在的文件夹也可。
其全部内容如下:/*--------------------------------------------------------------------------
2.1 Kell
在使用Keil软件之前,要保证在用户的计算机上装有一套稳定可靠的软件。本教材中讲解的Keil版本为V6.12,为了能让大家更方便地学习本软件的用法,建议大家在学习本教材时尽量选择该版本。
在本书中,我们强烈推荐的学习方法是边学边用,所以在这里我们不会像传统专业书籍那样,将某个软件的所有功能事先都讲解得非常仔细,很多不用的地方我们不做说明,需要用到什么,我们就学习什么,这样才能有效地理解它、记忆它,最终达到学以致用的目的。

本章详细介绍单片机程序常用编译软件Keil的用法,包括用Kei建立工程、工程配置、C51单片机程序软件仿真、单步、全速、断点设置、变量查看等。同时还介绍如何使用SST89E516RD单片机进行计算机与TX-IC单片机学习板之间的硬件仿真。用一个完整的C51程序来操作发光二极管的点亮与熄灭,然后调用C51库函数来方便地实现流水灯,最后为大家补充蜂鸣器与继电器的操作方法及集电极开路与漏极开路的概念。从这一章开始我们将手把手地讲解单片机C语言编程。认真学好本章,对于初学者来说将会是一个非常好的开头。
sfr PCON=0x87;
sfr TCON=0x88;
sfr TMOD=0x89;
sfr TLO=0x8A;
sfrTLl= 0x8B;
sfr THO=0x8C;
sfrTHl=0x8D;
sfr IE=0xA8;
sfr IP ==0xB8;
完后续的代码而引发出更多的错误。解决办法如下:我们须将错误信息窗口右侧的滚动条拖到最上面,双击第一条错误信息,可以看到Keil软件自动将错误定位,并且在代码行前面出现一个蓝色的箭头。需要说明的是,有些错误连Keil软件自身也不能准确显示错误信息,更不能准确定位,它只能定位到错误出现的大概位置,我们根据这个大概位置和错误提示信息自己再查找和修改错误。双击图2.2.3中第一条错误信息后,显示如图2.2.4所示。
通过以上(1)〜(6)步我们学习了如何在Keil编译环境下建立一个工程,在开始编写程序之前,我们有必要先学习编辑界面上一些常用的按钮功能与用法。
2.1.2
按钮用于显示或隐藏项目窗口,我们可单击该按钮观察其现象,项目窗口如图2.1.13所示。
按钮一用于显示或隐藏输出信息窗口,当我们进行程序编译时可查看输出信息窗口,查看程序代码是否有错误,是否成功编译,是否生成单片机程序文件等。我们可单击该按钮观察其现象,输出信息窗口如图2.1.14所示。
保存。编译后的屏幕如图2.2.2所示,我们重点观察信息输出窗口。
在图2.2.2中,我们看到信息输出窗口中显示的是编译过程及编译结果。其过程含义如下:创建目标“Target 1”
以上信息表示此工程成功编译通过。
当然,并不是每个用户第一次都能很顺利地编译成功,下面我们再故意改错一处,然后再编译一次,来观察它的编译错误信息,并教大家如何查找错误。
图2.1.5选择单片机型号
(4)完成上一步骤后,窗口界面如图2.1.6所示。
图2.1.6添加完单片机后的窗口界面
到此为止,我们还没有建立好一个完整的工程,虽然工程名有了,但工程当中还没有任何文件及代码,接下来我们添加文件及代码。
(5)如图2.1.7所示,单击<File>菜单中的<New>菜单项,或单击界面上的快捷图标。
2.1.1 Keil
进入Keil后,屏幕知图2.1.1所示,紧接着出现编辑界面,如图2.1.2所示。
图2.1.1启动Keil软件时的屏幕
(1)建立一个新工程单击<Project>菜单中的<New Project…>选项,如图2.1.3所示。
图2.1.2进入Keil软件后的编辑界面
图2.1.3新建工程
按钮用于编译我们正在操作的文件。
按钮用于编译修改过的文件,并生成应用程序供单片机直接下载。
按钮用于重新编译当前工程中的所有文件,并生成应用程序供单片机直接下载。因为很多工程有不止一个文件,当有多个文件时,我们可使用此按钮进行编译。
按钮用于打开《OprionsforTarget》对话框,也就是为当前工程设置选项。使用该对话框可以对当前工程进行详细设置,关于该对话框的设置方法将在使用时再做详细讲解。
图2.1.11选中文件后的对话框
选中<part2_l.c>,单击<Add>,再单击<Close>按钮,然后我们再单击左侧<Sourse Group 1>前面的“+”号,屏幕窗口如图2.1.12所示。
图2.1.12将文件加入工程后的屏幕窗口
这时我们注意到<SourceGroup 1>文件夹中多了一个子项<part2_l.c>,当一个工程中有多个代码文件时,都要加在这个文件夹下,这时源代码文件就与工程关联起来了。
例2.2.1编写程序,点亮第一个发光二极管(part2_1.c P27)
#include <reg52.h> //52系列单片机头文件
sbit led1=P1^0;//声明单片机P1口的第一位
void main()//主函数
{
led1=0; /*点亮第一个发光二极管*/
}
----------------------------------------------------------------------------------------------------------------------
相关文档
最新文档