单片机开发从入门到实践

978-7-115-57323-0
作者: 郭学提
译者:
编辑: 李永涛

图书目录:

详情

本书通过典型、实用的项目开发讲解,单片机开发工具、单片机编程基础、单片机硬件基础、知识竞赛抢答器、数字电子时钟、多功能数字频率计、手持GPS定位器及大量外围电路,使读者初步建立感观认识,然后对操作结果及出现的问题进行讨论、分析、研究,并得出结论。这样有利于读者在做中学,渐进式加深理解和巩固知识点,逐步提高自身的单片机开发水平(例如:单片机系统综合运用能力、程序编写、调试)。使得读者通过本书的学习能够独立完成单片机系统开发。

图书摘要

版权信息

书名:单片机开发从入门到实践

ISBN:978-7-115-57323-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

编  著  郭学提

责任编辑 李永涛

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内容提要

本书通过典型、实用的操作项目讲解单片机开发工具、单片机编程基础、单片机硬件基础、知识竞赛数字抢答器、数字电子时钟、多功能数字频率计、手持GPS定位器,使读者初步建立对单片机的整体认知,然后带领读者对操作结果及出现的问题进行讨论、分析、研究,进而得出结论。这样有利于读者在“做”中“学”,渐进式地理解知识点,逐步提高自身的单片机开发能力。希望读者通过学习本书,能够根据不同型号单片机及单片机系统的开发要求,独立完成单片机系统的设计与开发。

本书可作为高校电子信息技术、电子工程技术或电气自动化等相关专业及职业学校、培训机构的嵌入式开发、单片机开发课程的教材,也可供有一定编程基础的单片机学习者、对单片机开发感兴趣的爱好者自学。

前   言

单片计算机(Single-Chip Computer)简称单片机,是芯片级嵌入式系统的典型代表。单片机已经渗透到我们生活的各个领域。然而,单片机系统的设计与开发是系统性很强的实践过程,而且市面上流行的单片机种类繁多,其指令系统和汇编程序也各不相同,涉及现代电子应用技术的各个方面,知识点多、设计过程复杂。基于这种考虑,本书选用市场应用广、结构简单、技术复杂度不高的C51单片机作为应用示范对象。本书第1章至第3章介绍单片机系统开发的基础知识,第4章至第7章以项目的形式将本书前3章所讲述的知识应用到实践中,以实现单片机学习过程的“能动的飞跃”;同时在此基础上讲述更深层次的单片机系统开发知识,使读者能由浅入深地学习单片机。

本书通过大量教学视频对单片机系统的开发过程进行细致入微的讲解,使读者能快速了解单片机的基本原理,并熟练掌握单片机系统开发的基本技能。

本书共7章,主要内容介绍如下。

第1章至第3章由浅入深地介绍单片机系统开发环境、C51单片机所用语言的语法基础、单片机内部资源及外部资源的使用等内容。

第4章至第7章主要通过知识竞赛数字抢答器、数字电子时钟、多功能数字频率计、手持GPS定位器等实践项目讲解单片机应用开发流程、方法,包括单片机内部资源应用及外围器件使用、用户交互设计、信号处理、单总线、I2C总线、SPI总线、存储器和I/O口外设扩展等知识。

本书有如下特色。

(1)内容全。对单片机系统开发的各个知识点进行细致的介绍,同时剖析每个概念,让读者对单片机系统开发有全面的认识。

(2)项目型。为了帮助读者快速掌握单片机开发,本书基于项目实践的方式讲解单片机内部资源应用方法及外部资源的扩展原理与实践,读者通过项目实践可快速掌握相关的知识。

(3)实用性强。本书采用的都是单片机系统应用程序常用的知识点,并结合实例或项目进行讲解,力求让读者在实际项目开发中能够快速上手,同时方便读者对程序进行进一步扩展。

(4)参考性强。本书知识全面,可随查随用。读者可将本书作为单片机系统开发的参考书。

张林玲、文金辉、陈兴强参与本书部分内容的整理工作。在本书编写过程中还得到许多学者、专家、亲人、朋友的大力支持和鼓励,尤其是原中国人民解放军装备学院高级工程师、硕士生导师蒋心晓教授,深圳大学微纳光电子学研究院安鹤男副教授,华东交通大学机电与车辆工程学院欧阳爱国教授,江西科技师范大学数学与计算机科学学院副院长万佩真教授,江西科技师范大学数学与计算机科学学院熊筱芳教授,江西科技师范大学胡淑红、王国辉老师,杭州电子科技大学通信工程学院信息与信号处理研究所刘玮老师,江西省电子信息技师学院罗国强、胡建忠等老师,以及高级工程师文金辉、郭学鸿、张林玲等。在此,编者表示衷心的感谢!

单片机应用技术所包含的内容很丰富,涉及的知识面也很广,书中难免有缺点和不足之处,希望广大读者提出批评和建议,请发邮件至liyongtao@ptpress.com.cn。在此对大家的支持表示感谢。

郭学提

2021.5

第1章 单片机开发工具

磨刀不误砍柴工,工欲善其事,必先利其器。本章讲解单片机开发比较常用的两款开发工具─UltraEdit和Keil 5。

UltraEdit是一款功能强大的文本编辑器,可编辑文本、十六进制数、美国标准信息交换码(American Standard Code for Information Interchange,ASCII)等,内建英文单词检查、C/C++及VB指令突显功能,也可同时编辑多个文件。

Keil 5是一个集成开发环境(Integrated Develop Environment,IDE),集成了代码编写、分析、编译、调试等一体化功能。

1.1 UltraEdit

UltraEdit是一款支持文本和C/C++、HTML、PHP、Perl、Java、JavaScript等众多计算机编程语言的文本编辑器。UltraEdit支持十六进制编辑并可以编辑超过4GB的大文件。它拥有强大的解决方案和工作区,有着处理复杂软件开发的能力。本节将介绍UltraEdit的一些常用功能,以及如何使用它来创建工程和编辑代码。

1.1.1 UltraEdit用户界面

UltraEdit的用户界面主要包括标题栏、菜单栏、工具栏、文件视图窗口、文本编辑窗口、函数列表、模板列表、输出窗口、底部状态栏等。

一、UltraEdit应用程序窗口

UltraEdit应用程序窗口如图1.1所示。

图1.1 UltraEdit应用程序窗口

二、UltraEdit文件视图窗口

UltraEdit文件视图窗口包含工程、打开、资源管理器和列表4个选项卡,如图1.2所示。

图1.2 UltraEdit文件视图窗口

通过工程选项卡可浏览工程所在文件夹、打开工程文件进行编辑、添加文件夹到当前工程、添加组、添加新文件、添加活动文件、添加所有打开文件、在工程中打开文件、设置工程、选择活动文件等。当鼠标指针指向工程文件夹时可显示该工程文件夹的详细存储路径、工程目录、工程开始时间、工作时间等;当鼠标指针指向某个文件时可显示该文件的大小和修改时间,而双击某个文件可打开该文件至编辑区;选定某个文件后单击鼠标右键,在弹出的快捷菜单中可根据菜单项来选择功能:打开并激活文件、浏览文件所在的文件夹、设置打开文件在上次编辑位置或文档开头/结尾、从工程中删除该文件、设置该文件是显示相对存储路径还是绝对存储路径等。

打开选项卡列出已经打开的文件列表,选择文件可使该文件变为活动文件;选定某个文件后单击鼠标右键,在弹出的快捷菜单中可根据菜单项来选择功能:关闭文件、保存文件、打印文件、重命名文件、添加文件到工程、水平平铺窗口(启用窗口层叠功能时)、垂直平铺窗口(启用窗口层叠功能时)、创建文件夹活动文件路径、设置是显示文件名还是显示完整的存储路径、设置是否按扩展名排序等。

通过资源管理器选项卡可从指定的路径打开文件,当在上半部分窗口中选定某个文件夹时,下半部分窗口即显示该文件夹内的文件和子文件夹,若筛选输入框有内容,则下半部分窗口显示的内容为子文件夹及筛选后的文件。在上半部分窗口中选定某个文件夹后单击鼠标右键,在弹出的快捷菜单中可根据菜单项来选择功能:调用系统资源管理器菜单(在该计算机操作系统中选择文件夹后单击鼠标右键弹出的快捷菜单)、在文件中查找(在该目录)、在文件中替换(在该目录)、打开命令提示符窗口(打开CMD窗口)、重命名文件夹、新建文件夹、新建文件、打开文件、显示文件属性、删除文件、创建文件夹活动文件路径、选中Windows目录、选中系统目录、选中我的文档目录、选中Program Files、选中应用程序、插入文档(将该文件夹的完整路径等插入活动文件光标处)、是否显示隐藏文件夹和文件等。在下半部分窗口中选定某个文件夹后单击鼠标右键的功能是保留了在上半部分窗口中选择文件单击鼠标右键后除了选中Windows目录、选中系统目录、选中我的文档目录、选中Program Files、选中应用程序之外的功能。在下半部分窗口中选定某个文件后单击鼠标右键可调用系统资源管理器菜单、重命名文件、新建文件夹、新建文件、打开文档、使用默认程序打开、属性、删除文件、创建文件夹活动文件路径、插入到文档、是否显示隐藏文件夹和文件等。

列表选项卡显示收藏的文件、最近打开过的文件、最近打开过的工程;选中某个文件即显示该文件的完整存储路径,双击某个文件可打开该文件。

三、UltraEdit文本编辑窗口

在UltraEdit文本编辑窗口可对文档进行编辑,当鼠标指针指向对应的文件名时会弹出该文件的完整路径、文件大小、详细的创建时间、详细的修改时间等信息。拖动文件可分隔多个文本编辑窗口,对于每个文件的文件名,可使用不同颜色和形状标识文件编辑状态,绿色圆形表示文件有改动并已经保存,红色菱形表示文件有改动但未保存,无颜色无形状表示文件未改动。文本编辑区可显示行号、能使用不同颜色标记不同的代码。图1.3所示的代码中,用橘黄色标记库函数和运算符,用蓝绿色标记关键字,用淡黄色标记头文件,用白色标记自定义代码和函数,用紫色标记常量。UltraEdit可以折叠程序段(用“{}”括起来的代码段)使编辑区更简洁,代码逻辑更清晰,单击程序段的“{”所在行的“⊟”图标可折叠该段程序,折叠后“⊟”图标变成“⊞”图标;单击“⊞”图标可展开该段代码。UltraEdit文本编辑窗口如图1.3所示。

图1.3 UltraEdit文本编辑窗口

UltraEdit文本编辑窗口可使用层叠或平铺功能,方法是在菜单栏单击窗口按钮,在弹出的菜单中选择启用层叠/吸附标签,在该菜单中选择层叠功能或在该菜单中选择水平平铺或垂直平铺。图1.4所示是层叠的UltraEdit文本编辑窗口,图1.5所示是水平平铺的UltraEdit文本编辑窗口。

UltraEdit文本编辑窗口可使用分割窗口功能,方法是在菜单栏单击窗口按钮,在弹出的菜单中选择分割窗口,即可在光标所在行分割当前活动文件的窗口。分割后的UltraEdit窗口如图1.6所示。

图1.4 层叠的UltraEdit文本编辑窗口

图1.5 水平平铺的UltraEdit文本编辑窗口

图1.6 分割后的UltraEdit窗口

四、UltraEdit函数列表

UltraEdit函数列表用于显示所有工程文件的函数或当前活动文件的函数,方便在编辑代码时快速定位。在该窗口区域内单击鼠标右键,在弹出的快捷菜单中选择“列出所有工程文件”可切换显示的函数是当前活动文件的函数还是所有工程文件的函数。函数列表窗口依次显示宏定义函数、函数原型、函数体等,如图1.7所示。在函数列表内双击宏名、函数名、变量名等,即可使光标跳转到其所在文件相应的代码位置。

图1.7 UltraEdit函数列表

五、UltraEdit模板列表

通过UltraEdit模板列表可快速插入代码模板——双击要插入的模板即可在光标处插入该模板。如双击do,即可在左侧文件中插入do while循环框架并使光标定位在while的条件判断语句evaluation,修改while循环条件为i<100后按Enter键即跳转到循环体的代码,修改循环体代码为i++后按Enter键完成模板do的插入,如图1.8所示。

图1.8 UltraEdit模板列表

1.1.2 创建工程

在F盘新建名称为MyfirstProject的文件夹(读者可根据实际情况设定具体路径和文件夹名称),然后打开UltraEdit,使用“工程>新建工程/工作区”命令创建一个新项目,弹出图1.9所示的对话框。

图1.9 创建工程

在图1.9所示的对话框中选择刚才建好的MyfirstProject文件夹,将本工程命名为UEProject后单击“Save”,弹出工程设置对话框,如图1.10所示。

图1.10 工程设置对话框

在图1.10所示的对话框中单击“关闭”完成工程创建。

1.1.3 新建文件

使用“文件>新建”创建一个新文件,单击“文件>另存为”,弹出图1.11所示的对话框。

在图1.11所示的对话框中选择刚才创建好的MyfirstProject文件夹并将文件命名为main,文件类型选择“C”文件(*.c,*.cpp),编码选择ANSI/ASCII后,单击“保存”完成操作。

在main.c文件中输入以下代码后,使用“文件>保存”或使用Ctrl+S快捷键保存文件。

#include <REG52.H>              /*特殊功能寄存器头文件*/
#include <stdio.h>              /*标准输入/输出头文件*/
void main(void)
{  
     SCON  = 0x50;              /*模式1,8位数据,允许数据接收*/
     TMOD |= 0x20;                   /*定时器1,模式2,8位自动重装初值模式*/
     TH1   = 0xE6;                   /*设置,12MHz晶振,1200b/s波特率,TH1初值*/
     TR1   = 1;                      /*TR1:运行定时器1*/
     TI    = 1;                      /*TI:设置发送标志为1*/
     while (1)
     {
          P1 ^= 0x01;                /*每输出一行字符串,P1.0取反1次*/
          printf ("Hello World\n");  /*输出"Hello World"*/
     }
}

注:晶体振荡器简称晶振。

图1.11 保存文件

1.1.4 添加文件至工程

在文件视图的工程窗口选择UEProject并单击鼠标右键,在弹出的快捷菜单中选择“添加到工程”,弹出图1.12所示的对话框。

图1.12 添加文件至工程

在图1.12所示的对话框中选择刚才新建好的main.c文件,单击“Open”完成操作后,main.c文件已经成功添加到UEProject工程中。

1.2 Keil 5集成开发环境

Keil 5是基于Windows操作系统的集成开发环境,包含对源程序的编辑、工程项目管理、编译、调试。它支持C语言、汇编语言、宏定义等的编译,能产生十六进制格式的机器代码HEX,还能加速嵌入式应用程序的开发。本节将全面介绍Keil 5的软件界面和操作方法,并通过实例讲述如何使用Keil 5开发应用程序。

1.2.1 Keil 5简介

开发人员可以用Keil 5编辑器或其他编辑器编译C语言或汇编语言源程序文件,然后分别由C51语言和A51语言编译生成目标文件(.obj)。目标文件可由LIB51创建生成库文件(.lib),也可与库文件一起经L51链接定位生成绝对目标文件(.abs)。绝对目标文件由OH51置换成标准的HEX文件,以供调试器进行源代码级调试,也可由仿真器直接对目标板进行调试,或直接写入程序存储器,如可擦可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、Flash中进行验证。

Keil 5支持命令模式和工具条操作。一个工具条内有多个命令按钮,源文件以窗口的形式进行编辑。Keil 5有对话框、信息显示等,人机界面友好、操作方便、易学易用。

一、Keil 5的特点

(1)全功能原始代码编辑。

(2)开发工具配置及可选择相应芯片的数据库。

(3)通过工程管理可以很方便地创建和管理工程。

(4)集成源程序的编译、连接、生成机器代码等,用户可以很方便地得到HEX文件。

(5)所有开发工具的配置都是基于窗口或对话框的图形界面。

(6)集成高速CPU及对单片机外围器件的模拟,另外还有信号发生及信号分析等功能。

(7)高级的图形设备接口(Graphics Device Interface,GDI)在目标硬件的软件调试和与Keil ULINK的连接方面,都可用于硬件仿真。

(8)支持对Flash的程序下载。

(9)可通过网站下载最新的工具、芯片的数据库和用户操作手册。

二、Keil 5的工作模式

Keil 5提供了许多功能,能让人加快开发速度并成功开发嵌入式应用程序。由于这些功能(工具)易于使用,因而能实现对设计目标的保证。Keil 5集成开发环境有两种操作模式:编译模式和调试模式。

(1)编译模式。

在编译模式下,可以编辑源程序和项目中的源文件并产生应用程序。图1.13所示为Keil 5的编译模式界面。

(2)调试模式。

调试模式用来验证程序的结果并能与外部Keil ULINK USB-JTAG适配器进行连接,构成硬件仿真系统,还可以下载应用程序到目标系统的Flash 只读存储器(Read-Only Memory,ROM)中。图1.14所示为Keil 5的调试模式界面。

图1.13 Keil 5的编译模式界面

图1.14 Keil 5的调试模式界面

三、停靠窗口

窗口可以停靠到另一个窗口、多文档界面(Multiple Document Interface,MDI),甚至可以浮动到另一个屏幕上。只要拖动一个窗口,就会显示几个停靠符号,图1.15所示为窗口拖动操作。这适用于从菜单视图和所谓的项目窗口中选择的大多数窗口,但是,源代码文件必须留在文本编辑器窗口中。

图1.15 窗口拖动操作

移动窗口到另外一个位置的步骤如下。

(1)单击窗口的标题栏或页面/目标名。

(2)拖动窗口到停靠标记处。

(3)松开鼠标。

1.2.2 创建应用程序

创建应用程序是通过窗口及菜单进行操作的,通过工程管理可以很容易地设计基于单片机的应用程序。创建应用程序主要包括创建项目文件并选择CPU、创建新的源程序、添加源程序到项目中、创建文件组、设置硬件调试操作工具、配置CPU启动代码、编译项目并生成应用程序代码、生成HEX文件或可编程只读存储器(Programmable Read-Only Memory,PROM)程序。下面依次进行讲解。

一、创建项目文件并选择CPU

1.选择“Project>New µVision Project...”,打开Create New Project对话框,输入新项目名及保存路径,如图1.16所示。用户可以根据项目特点对项目进行命名,还可以使用新建文件夹图标创建新的文件夹并用于保存新建的项目。

图1.16 Create New Project对话框

2.完成第1步操作后单击“保存”,会弹出选择CPU的对话框,如图1.17所示。展开“Atmel”,选择“AT89S51”。

图1.17 选择CPU的对话框

3.完成第2步操作后单击“OK”,会弹出复制并添加CPU启动代码的对话框,如图1.18所示。选择“是”就会自动生成CPU启动代码。

图1.18 复制并添加CPU启动代码的对话框

二、创建新的源程序

通过新建命令图标或“File>New”命令创建一个新的源程序文件,这将打开一个空的编辑窗口,这个窗口可用来输入程序的源代码。使用保存文件对话框的“File>Save As...”,并将其保存为.c文件(如果是汇编源程序应保存为.asm文件)。以下示例的文件名为main.c。

【例1-1】 创建源程序文件。

#include "stdio.h"
#include "reg51.h"   //引用51单片机reg51.h头文件
/******************************************************************************
* Function:       main
* author:         gxt
* date:           2018.03.06
* Description:
*                 Test工程的主函数  
* Parameters:    
*                 NONE
* Return:  
*                 NONE
******************************************************************************/
void main(void)
{
      unsigned int delay;
       //以下代码的作用是初始化串行口,为printf接口输出做好准备
       SCON = 0x50;                    //8位数据,可变波特率
       TMOD &= 0x0F;                   //清除定时器1模式位
       TMOD |= 0x20;                   //设定定时器1为8位自动重装方式
       TL1 = 0xFD;                     //设定定时初值
       TH1 = 0xFD;                     //设定定时器重装值
       ET1 = 0;                        //禁止定时器1中断
       TR1 = 1;                        //启动定时器1  
       TI = 1;                         //发送中断标志位置1
       //串行口初始化代码结束
        while(1)
        { 
         printf("Test By Gxt\n");     //调用标准输出接口输出字符串"Test By Gxt\n"
         while(1);                     //无限循环
    }    
}

三、添加源程序到项目中

将创建的源文件添加到新建的项目。Keil 5提供了多种方法将源代码文件添加到项目。例如,可以选择项目(Project)工作区中的Source Group 1,单击鼠标右键,在弹出的图1.19所示的快捷菜单中选择“Add Existing Files to Group‘Source Group 1’...”,会弹出图1.20所示的对话框,在该对话框中选择main.c文件,然后单击Add就可以把main.c文件添加到项目中。也可以使用“Project>Manage>Project Items”打开管理项目项对话框进行添加(详见“四、创建文件组”)。

四、创建文件组

用户可以创建文件组,并以代码文件结构为逻辑块,简化代码的维护。通过鼠标右键单击目标名称并选择Add Group,也可以将文件拖放到组名上来重新排列顺序或添加文件。使用“Project>Manage>Project Items”打开Manage Project Items对话框,创建文件组如图1.21所示。

图1.19 快捷菜单

图1.20 添加文件对话框

图1.21 创建文件组

在Files栏中可以单击“Add Files...”增加文件到选中的组中,也可以用按住鼠标左键拖动的方式来重新排列该组中的源文件顺序。

项目工作区显示项目名称、活动目标名称以及所有的组和文件、图标标识项目类型和权限。在项目工作区双击某个文件,可以打开该文件进行编辑。例如,打开main.c文件内的reg51.h文件,只需在图1.22所示的界面双击“reg51.h”即可。

图1.22 创建文件组后的项目界面

五、设置工具选项

Keil 5允许配置开发环境。通过工具栏图标或通过“Project>Options for Target ‘Target 1’...”命令,在目标选项对话框中指定硬件所有相关参数和所选设备的芯片组件,如图1.23所示。

图1.23 目标选项对话框

(1)Device(设备):为项目选择单片机。

(2)Target(目标):指定目标硬件参数。

(3)Output(输出):配置可执行文件、库文件输出和十六进制文件输出。

(4)Listing(清单):配置清单文件。

(5)User(用户):配置预构建和后构建活动。

(6)C51(或CX51):配置编译器选项。

(7)A51(或AX51)(在设备下启用时):配置汇编器选项。

(8)BL51 Locate(或LX51定位)(在设备下启用时):指定链接器/定位器内存位置指令。

(9)BL51 Misc(或LX51 Misc)(在设备下启用时):输入其他链接器/定位器指令。

(10)Debug(调试):配置µVision调试器/模拟器。

(11)Utilities(实用程序):配置Flash下载实用程序。

六、编译项目

通过编译工具对源程序进行编译,编译工具如图1.24所示。

图1.24 编译工具

七、生成HEX文件

打开“Options for Target ‘Target 1’...”后,选择“Output”,生成HEX文件设置对话框如图1.25所示。可以通过“Select Folder for Objects...”选择生成的HEX文件保存路径。“Name of Executable:”右边为生成的HEX文件的名称。需要生成HEX文件,还必须将“Create HEX File”前面的复选框选中。选中“Create Library:.\Objects\Test.LIB”可以生成Test.LIB库文件,而选中“Create Batch File”前面的复选框可创建批处理文件。

图1.25 生成HEX文件设置对话框

八、查找和浏览源程序

用户在编辑或调试源代码时,可单击工具栏中的图标,在多个文件中使用查找命令,以便快速定位代码。在多个文件中使用查找命令查找“In”的对话框如图1.26所示,单击“Find All”后的查找结果如图1.27所示。

图1.26 查找“In”

图1.27 查找结果

源代码浏览器可显示用户代码中的符号信息。首先需要在图1.25所示的对话框中配置输出浏览器信息(选择“Target>Output>Browser information”),然后使用“View>Source Browser Window”命令打开浏览界面。浏览界面如图1.28所示。

图1.28 浏览界面

1.2.3 调试工程

一、进入调试模式

单击调试工具图标或通过命令“Debug>Start/Stop Debug Session”(或按Ctrl+F5快捷键)可进入调试模式。在调试模式下仍可对程序源文件进行编辑。调试工具如图1.29所示。

图1.29 调试工具

调试工具从左至右,依次为CPU复位、全速执行、停止执行、单步进被调模块内执行、单步不进被调模块内执行、单步跳出被调模块内部执行、执行到光标所在行。

二、汇编窗口

通过汇编窗口可以看出用C51语言编写的代码被翻译成汇编语句及相关寄存器的值。打开汇编窗口的方法是:单击图标或使用“View>Disassembly window”命令。汇编窗口如图1.30所示。

图1.30 汇编窗口

三、逻辑分析窗口

单击图标或使用“View>Analysis Window>Logic Analyzer”命令打开逻辑分析窗口,如图1.31所示。

图1.31 逻辑分析窗口

1.2.4 创建“Hello World”项目

可在Keil 5安装目录\Examples\Hello中打开Hello实例进行学习,也可使用下述步骤建立一个新的项目进行学习。

1.新建源程序文件

使用“file>New...”命令、单击图标或按Ctrl+N快捷键,新建一个源程序文件,并保存为D:\Keil51\test\Hello.c。输入下列程序后再次保存。

#include <REG52.H>                  /*特殊功能寄存器头文件*/
#include <stdio.h>                  /*标准输入/输出头文件*/
void main(void)
{  
     SCON  = 0x50;                  /*模式1,8位数据,允许数据接收*/
     TMOD |= 0x20;                  /*定时器1,模式2,8位自动重装初值模式*/
     TH1   = 0xE6;                  /*设置,12MHz晶振,1200波特率,TH1初值*/
     TR1   = 1;                     /*TR1:运行定时器1*/
     TI    = 1;                     /*TI:设置发送标志为1*/
     while (1)
     {
          P1 ^= 0x01;                /*每输出一行字符串,P1.0取反1次*/
          printf ("Hello World\n");  /*输出 "Hello World"*/
     }
}

2.新建项目

使用“Project>New µVision Project...”命令,新建一个项目,保存为D:\Keil51\test\Simulator,并将新建的源程序文件添加到项目中。

3.项目设置

使用“Project>Options for Target 'Simulator'”命令或单击快捷图标,打开Target 'Simulator' 配置窗口,选择Device选项卡并选择好芯片组件数据库,如图1.23所示。参照1.2.2小节配置好其他相关参数。

4.项目编译调试

参照1.2.3小节相关内容编译好项目,并进入调试界面,全速执行;使用“View>Serial Windows>UART #1”命令,打开串行口1观察其运行结果,如图1.32所示。

图1.32 Hello World 运行结果

1.3 小结

本章针对源代码编辑工具UltraEdit及51系列单片机的常用集成开发工具Keil 5进行了简要介绍,并以实例的方式向读者介绍了如何使用这两个工具。读者应熟练掌握Keil 5集成开发环境,它除了支持大部分具有8051内核的微控制器的开发外,还支持ARM7、ARM9、Cortex-M4/M3/M1、Cortex-R0/R3/R4等ARM微控制器内核的开发,以及绝大部分XC16x、C16x、ST10系列的微控制器和绝大部分基于251内核的微控制器的开发。8051内核的微控制器开发除了可以使用Keil 5外,也可以使用IAR、MedWin、WAVE600等集成开发环境。代码编辑工具除了可以使用UltraEdit外,也可以使用记事本、Notepad++、Source Insight等工具。读者应结合自身特性和实际项目的需要,掌握一种或多种集成开发和代码编辑工具。

1.4 习题

(1)使用Keil 5新建一个项目编译下述程序,并通过串行口窗口观察其输出结果。

#include <REG51.H>                    /* 特殊功能寄存器头文件  */
#include <stdio.h>                    /* 标准输入/输出头文件 */
sbit P1_0 = P1^0;                     //定义P1_0为P1.0口
void main (void)
{                 
     /*--------------------------------------
     设置波特率为9600(晶振频率为11.059MHz)
     ----------------------------------------*/
     SCON = 0x50;                     //8位数据,可变波特率
     TMOD &= 0x0F;                   //清除定时器1模式位
     TMOD |= 0x20;                   //设定定时器1为8位自动重装方式
     TL1 = 0xFD;                     //设定定时初值
     TH1 = 0xFD;                     //设定定时器重装值
     ET1 = 0;                        //禁止定时器1中断
     TR1 = 1;                        //启动定时器1 
     TI = 1;                         //发送中断标志位置1
     while (1)
     {
          printf ("Welcome to study Developed of MCU\n");   /*输出字符串 */
          P1_0 = ! P1_0;
     }
}

(2)在Keil 5中运行习题(1)中的代码并使用逻辑分析窗口观察P1.0口。

(3)修改习题(1)代码,使串行口波特率为115200,并在Keil 5中运行,观察运行结果。

相关图书

非平稳随机信号的分数域分析与处理
非平稳随机信号的分数域分析与处理
Altium Designer 22电路设计与仿真实战从入门到精通
Altium Designer 22电路设计与仿真实战从入门到精通
电梯结构与原理
电梯结构与原理
30天学会交流伺服系统
30天学会交流伺服系统
遥感干涉高光谱成像仪定标技术
遥感干涉高光谱成像仪定标技术
Cadence 17.2 电路设计与仿真从入门到精通
Cadence 17.2 电路设计与仿真从入门到精通

相关文章

相关课程