MCS-51单片机应用实验教程(txt+pdf+epub+mobi电子书下载)


发布时间:2021-08-01 20:57:59

点击下载

作者:沈放,何尚平,万彬

出版社:重庆大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

MCS-51单片机应用实验教程

MCS-51单片机应用实验教程试读:

版权信息书名:MCS-51单片机应用实验教程作者:沈放,何尚平,万彬排版:HMM出版社:重庆大学出版社出版时间:2019-01-08ISBN:9787568914178本书由重庆大学电子音像出版社有限公司授权北京当当科文电子商务有限公司制作与发行。— · 版权所有 侵权必究 · —第1章Keil集成开发环境及ProteusISIS仿真

随着计算机技术、微电子技术的高速发展,单片机在工业控制、智能仪器仪表、现代传感器、数据采集与处理、机电一体化、消费电子、家用电器、通信、办公自动化、医疗器械、计算机控制等领域应用越来越广泛。单片机作为典型、具有代表性的嵌入式系统,其应用系统设计包括硬件电路设计和软件电路设计两个方面,学习和应用过程中必须软件、硬件结合。单片机系统调试通常分为软件调试、硬件测试和整机联调三个部分。

单片机自身不具备开发功能,必须借助于开发工具。目前,国内外推出了许多基于个人计算机的单片机软或硬开发平台。硬件开发平台方面诸如开发板、实验箱、仿真器、编程器、示波器、逻辑分析仪等,但其价格不菲,开发过程烦琐。在软件支持的前提下,应用最普遍的是软件仿真开发平台,其具有方便、快捷、节约的优点。

单片机应用系统软件仿真开发平台有两个常用的工具软件:Keil和ProteusISIS。Keil主要用于单片机源程序的编辑、编译、链接以及调试;ProteusISIS主要用于单片机硬件电路原理图的设计以及单片机应用系统的软、硬件联合仿真调试。

本章将以KeilμVision2、ProteusISISProfessionalVision7.7SP2版本为例详细介绍其在单片机开发中的应用方法,并通过一个实例详细介绍Keil与ProteusISIS的联调使用方法。1.1 Keil 集成开发环境

一般情况下单片机常用的程序设计语言有两种:汇编语言和C语言。

汇编语言具有执行速度快、占存储空间少、对硬件可直接编程等特点,因而特别适合对实时性要求比较高的情况使用。使用汇编语言编程要求程序设计人员必须熟悉单片机内部结构和工作原理,编写程序麻烦一些。

与汇编语言相比,C语言在功能、结构性、可读性、可维护性、可移植性上都有明显优势,C语言大多数代码被翻译成目标代码后,其效率和准确性方面和汇编语言相当。特别是C语言的内嵌汇编功能,使C语言对硬件操作更加方便,并且C语言作为自然高级语言,易学易用,尤其是在开发大型软件时更能体现其优势,因此在单片机程序设计中得到广泛应用。

KeilμVision2是德国KeilSoftware公司推出的微处理器开发平台,可以开发多种8051兼容单片机程序。它可以被用于工程创建、管理、编辑、编译C源码、汇编源程序、链接、重定位目标文件和库文件、生成HEX文件、调试目标程序等完整的开发流程,具有丰富的库函数和功能强大的集成开发工具,全Windows操作界面,所以备受用户青睐。1.1.1 KeilμVision2工作环境

正确安装后,用鼠标左键双击计算机桌面上KEILμVISION2运行图标,或用鼠标左键分别单击计算机桌面上“开始”—“所有程序”—“KEILμVISION2”,即可启动 Keil μVision2,启动界面如图1-1所示,进入KeilμVision2集成开发环境后,其界面如图1-2所示。图1-1 KeilμVision2启动界面

从图1-2可以看出,KeilμVision2集成开发环境与其他常用的Windows窗口软件类似,设置有菜单栏、可以快速选择命令的按钮工具栏、工程窗口、源代码文件窗口、对话窗口、信息显示窗口。KeilμVision2允许同时打开浏览多个源程序文件。图1-2 KeilμVision2集成开发环境界面

KeilμVision2IDE提供了多种命令执行方式:①菜单栏提供了诸如文件(File)操作、编辑(Edit)操作、视图(View)操作、项目/工程(Project)操作、程序调试(Debug)、闪存(Flash)操作、片上外设寄存器设置和观察(Peripherals)、开发工具选项(Tools)、软件版本控制系统菜单(SVCS)、窗口选择和处理(Window)、在线帮助(Help)共11种操作菜单;②使用工具栏按钮可以快速地执行μVision2命令;③使用键盘快捷键也可以执行μVision2命令,键盘快捷键根据使用习惯等还可以重新设置。表1-1~表1-10列出了μVision2菜单项命令、工具条图标、默认的快捷键以及对它们的描述。1.1.2 Keil工程的创建

使用KeilμVision2IDE的项目/工程开发流程和其他软件开发项目的流程极其相似,具体步骤如下:

(1)新建一个工程,从设备器件库中选择目标器件(CPU),配置工具设置;

(2)用C51语言或汇编语言编辑源程序;

(3)用工程管理器添加源程序;

(4)编译、链接源程序,并修改源程序中的错误;

(5)生成可执行代码,调试运行应用。

为了介绍方便,下面以一个简单实例——单片机流水灯来介绍Keil工程的创建过程。

1.源程序文件的建立

执行菜单命令File→new或者单击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个默认名为Text1的空白文本编辑窗口,录入、编辑程序代码,在该窗口中输入以下C语言代码:

/∗定义头文件及变量初始化∗/

#include 

#include 

#define uchar unsigned char

#define uint unsigned int

uchar temp=0xFE;      //temp中先装入LED1亮、LED2~LED8灭的数据

//(二进制的11111110)

uchar count=0x64; //定义计数变量初值为100,计数100个10ms,即1s

/∗T0中断服务子程序∗/

void timer0(void) interrupt 1 using 1

{

TH0=-5000/256; //重装初值

TL0=-5000%256;

count--; //1s时间未到,继续计数

if(count==0)

{

count=0x64; //1s时间到,重置count计数初值为100

temp=_crol_(temp,1); //将点亮的LED循环左移一位

}}

/∗主程序∗/

void main(void)

{

P1=0xff; //初始状态,所有LED熄灭

TMOD=0x01; //设置T0工作方式1

TH0=-5000/256; //设置10ms计数初值

TL0=-5000%256;

EA=1; //开放总中断

ET0=1; //开放T0中断

TR0=1; //启动T0

while(1) //死循环

{

P1=temp; //把temp数据送P1口

}

}上述程序的汇编代码如下:

ORG   0000H      ;单片机上电后程序入口地址

SJMP START ;跳转到主程序存放地址处

ORG 000BH ;定时器T0入口地址

SJMP T0SVR ;跳转到定时器T0中断服务程序存放地址处ORG 0030H ;设置主程序开始地址

START:MOV   SP,#60H     ;设置堆栈起始地址为60H

MOV P1,#0FFH ;初始状态,所有LED熄灭

MOV A,#0FEH ;ACC中先装入LED1亮、LED2~LED8灭的数据

;(二进制的11111110)

MOV R0,#64H ;计数100个10ms,即1s

MOV TMOD,#01H ;设置T0工作方式1

MOV TH0,#0ECH ;设置10ms计数初值

MOV TL0,#78H

SETB EA ;开放总中断

SETB ET0 ;开放T0中断

SETB TR0 ;启动T0

DISP:MOV   P1,A       ;把ACC数据送P1口

SJMP DISP

/∗T0中断服务子程序∗/

T0SVR:MOV  TL0,#78H    ;重装初值

MOV TH0,#0ECH

DJNZ R0,LOOP ;1s时间未到,继续计数

MOV R0,#64H ;1s时间到,重置R0计数初值为100

RL A ;将点亮的LED循环左移

LOOP:RETI           ;子程序返回

END           ;程序结束

μVision2与其他文本编辑器类似,同样具有录入、删除、选择、复制、粘贴等基本的文本编辑功能。需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编辑器编写,需要注意的是,Keil的编辑器对汉字的支持不好,建议使用记事本之类的编辑软件进行源程序的输入,然后按要求保存,以便添加到工程中。

在编辑源程序文件过程中,为防止断电丢失,须时刻保存源文件,第一次执行菜单命令File→Save或者单击工具栏的保存文件按钮,将打开如图1-3所示的对话框,在“文件名”对话框中输入源文件的命名。注意必须加上后缀名(汇编语言源程序一般用.ASM或.A51为后缀名,C51语言文件用.c为后缀名),这里将源程序文件保存为Example.c。图1-3 命名并保存新建源程序文件

2.建立工程文件

Keil支持数百种CPU,而这些CPU的特性并不完全相同,在工程开发中,并不是仅有一个源程序文件就行了,还必须为工程选择CPU,以确定编译、汇编、链接的参数,指定调试的方式,有一些项目还会有多个文件组成等。因此,为管理和使用方便,Keil使用工程(project)这一概念,即将源程序(C51或汇编)、头文件、说明性的技术文档等都放置在一个工程里,只能对工程而不能对单一的源文件进行编译(汇编)和链接等操作。

启动KeilμVision2IDE后,μVision2总是打开用户上一次处理的工程,要关闭它可以执行菜单命令Project→CloseProject。建立新工程可以通过执行菜单命令Project→NewProject,此时将出现如图1-4所示的CreateNewProject对话框,要求给将要建立的工程在“文件名”对话框中输入名字,这里假定将工程文件命名为Example,并选择保存目录,不需要扩展名。图1-4 建立新工程

单击“保存”按钮,打开如图1-5所示的SelectDeviceforTarget‘Target1’的第二个对话框,此对话框要求选择目标CPU(即所用芯片的型号),列表框中列出了μVision2支持的以生产厂家分组的所有型号的CPU。Keil支持的CPU很多,这里选择的是Atmel公司生产的AT89S51单片机,然后再单击“确定”按钮,回到主界面。

另外,如果在选择完目标CPU后想重新改变目标CPU,可以执行菜单命令Project→Select Devicefor...,在随后出现的目标设备选择对话框中重新加以选择。由于不同厂家许多型号的CPU性能相同或相近,因此,如果所需的目标CPU型号在μVision2中找不到,可以选择其他公司生产的相近型号。图1-5 选择目标CPU

3.添加源程序文件到工程中

选择完目标CPU后,在工程窗口中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“SourceGroup1”,这时的工程还是一个空的工程,没有任何源程序文件,前面录入编辑好的源程序文件需手工添加,鼠标左键单击“SourceGroup1”使其反白显示,然后,单击鼠标右键,出现一个下拉菜单,如图1-6所示,选中其中的“AddfiletoGroup‘SourceGroup 1’”,弹出一个对话框,要求添加源文件。注意,在该对话框下面的“文件类型”默认为C SOURCEFILE(∗.C),也就是以C为扩展名的文件,假如所要添加的是汇编源程序文件,则在列表框中将找不到,需将文件类型设置一下,单击对话框中“文件类型”后的下拉列表,找到并选中“ASMSOURCEFILE(∗.A51,∗.ASM)”,这样,在列表框中就可以找到汇编源程序文件了。图1-6 加入文件图1-7 添加源程序文件后的工程

双击Example.c文件,将文件加入工程,添加源程序文件后的工程如图1-7所示,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图1-8所示的对话框,提示你所选文件已在列表中,此时应单击“确定”,返回前一对话框,然后单击“close”即可返回主界面,返回后,单击“Source Group1”前的加号,会发现Example.c文件已在其中。双击文件名,即打开该源程序。

如果想删除已经加入的源程序文件,可以在如图1-7所示的对话框中,右击源程序文件,在弹出的快捷菜单中选择RemoveFile‘Example.c’,即可将文件从工程中删除。值得注意的是,这种删除属于逻辑删除,被删除的文件仍旧保留在磁盘上的原目录下,如需要的话,还可以再将其添加到工程中。图1-8 重复加入源程序文件错误警告

4.工程的设置

在工程建立好之后,还须对工程进行设置,以满足要求。打开工程设置对话框,方法有二:其一,右击工程管理器(ProjectWorkspace)窗口中的工程名Target1,弹出如图1-9所示的快捷菜单,选择快捷菜单上的OptionsforTarget‘Target1’选项,即可打开工程设置对话框;其二,在Project菜单项选择OptionsforTarget‘Target1’命令,也可打开工程设置对话框。从对话框可以看出,工程的设置分成10个部分,每个部分又包含若干项目。在这里主要介绍以下几个部分。图1-9 工程设置快捷菜单1)Target设置

主要用于用户最终系统的工作模式设置,决定用户系统的最终框架。打开对话框中的Target选项卡,Target设置界面如图1-10所示。图1-10 Target设置界面

Xtal(MHz)是晶振频率值设置项,默认值是所选目标CPU的最高可正常工作的频率值,对示例所选的AT89S51而言是24MHz,本示例设定为12MHz。设置的晶振频率值主要是在软件仿真时起作用,而与最终产生的目标代码无关,在软件仿真时,μVision2将根据用户设置的频率来决定软件仿真时系统运行的时间和时序。

MemoryModel是存储器模式设置项,有3个选项可供选择:Small模式,没有指定存储空间的变量默认存放在data区域内;Compact模式,没有指定存储空间的变量默认存放在pdata区域内;Large模式,没有指定存储空间的变量默认存放在xdata区域内。

UseOn-chipROM为是否仅使用片内ROM选择项,打钩选择仅使用片内ROM,不打钩则反之。但选择该项并不会影响最终生成的目标代码量。

CodeRomSize是程序空间的设置项,用于选择用户程序空间的大小,同样也有三个选择项:Small模式,只用低于2KB的程序空间;Compact模式,单个函数的代码量不能超过2KB,整个程序可以使用64KB程序空间;Large模式,可用全部64KB空间。

Operating为是否选用操作系统设置项,有两种操作系统可供选择:Rtxtiny和Rtxfull,通常不使用任何操作系统,即使用该项的默认值None。

Off-chipCodememory用于定义系统扩展ROM的地址范围:如果用户使用了外部程序空间,但在物理空间上又不是连续的,则需进行该项设置。该选项共有3组起始地址(Start)和地址大小(Size)的输入,μVision2在链接定位时将把程序代码安排在有效的程序空间内。该选项一般只用于外部扩展的程序,因为单片机内部的程序空间多数都是连续的。

Off-chipXdatamemory用于定义系统扩展RAM的地址范围:主要应用于单片机外部非连续数据空间的定义,设置方法与“Off-chipCodememory”项类似。Off-chipCodememory、OffchipXdatamemory两个设置项必须根据所用硬件来确定,由于本示例是单片应用,未进行任何扩展,所以均按默认值设置。

CodeBanking为是否选用程序分段设置项,该功能较少用到。2)Output设置

用于工程输出文件的设置。打开对话框中的Output选项卡,Output设置界面如图1-11所示。图1-11 Output设置界面

SelectFolderforObjects...用于设置输出文件存放的目录,一般选用当前工程所保存的根目录;NameofExecutable用于设置输出目标文件的名称,默认为当前工程的名称。根据用户需要,可以进行修改;DebugInformation用于设置是否产生调试信息,如果需要对程序进行调式,该项必须被选中;BrowseInformation用于设置是否产生浏览信息,产生的浏览信息可以用菜单View->Browse来查看,一般取默认值;CreateHEXFile用于设置是否生成可执行代码文件,可执行代码文件是最终写入单片机的运行文件,格式为IntelHEX,扩展名为.hex。默认情况下该项未被选中,在调试状态下,目标文件不会自动转换为HEX文件,如果要实现程序、电路联合软件仿真或程序在硬件上运行,该项必须被选中,选中后在调试状态下,目标文件则会自动转换为可在单片机上执行的HEX文件。其他选项一般保持默认设置。3)Listing设置

用于设置列表文件的输出格式。打开对话框中的Listing选项卡,Listing设置界面如图1-12所示。图1-12 Listing设置界面

在源程序编译完成后将生成“∗.lst”格式的列表文件,在链接完成后将生成“∗.m51”格式的列表文件。该项主要用于细致地调整编译、链接后生成的列表文件的内容和形式,其中比较常用的选项是CCompilerListing选项区中的AssemblyCode复选项。选中该复选项可以在列表文件中生成C语言源程序所对应的汇编代码。其他选项可保持默认设置。4)C51设置

用于对μVision2的C51编译器的编译过程进行控制。打开对话框中的C51选项卡,C51设置界面如图1-13所示。

其中比较常用的两项是代码优化等级CodeOptimization|Level、代码优化侧重CodeOptimization|Emphasis。

CodeOptimization|Level是优化等级设置项,C51编译器在对源程序进行编译时,可以对代码多至9级优化,提供0~9共10种选择,以便减少编译后的代码量或提高运行速度。优化等级一般默认使用第8级,但如果在编译中出现了一些错误,可以降低优化等级试试。本示例默认选择优化等级8(ReuseCommonEntryCode)。在程序调试成功后再提高优化级别改善程序代码。

CodeOptimization|Emphasis是优化侧重设置项,有3种选项可供选择:选择Favorspeed,在优化时侧重优化速度;选择Favorsize,在优化时侧重优化代码大小;选中Default,为缺省值,默认的是侧重优化速度,可以根据需要更改。5)Debug设置

用于选择仿真工作模式。打开对话框中的Debug选项卡,Debug设置界面如图1-14所示。

右边主要针对仿真器,用于硬件仿真时使用,称为硬件设置,设置此种工作模式,用户可把Cx51嵌入系统中,直接在目标硬件系统上调试程序;左边主要用于程序的编译、链接及软件仿真调试,称为软件设置,该模式在没有实际目标硬件系统的情况下可以模拟8051的许多功能,这非常便于应用程序的前期调试。软件仿真和硬件仿真的设置基本一样,只是硬件仿真设置增加了仿真器参数设置。由于本示例未涉及硬件仿真器,在此只需选中软件仿真UseSimulator单选项。图1-13 C51设置界面图1-14 Debug设置界面

工程设置对话框中的其他选项卡与C51编译选项、A51编译选项、BL51链接器的链接选项等用法有关,通常均取默认值,基本不做任何设置。

所需设置完成后按确认返回主界面,工程设置完毕。

5.工程的编译、链接和调试、运行

在工程设置好后,即可按照工程设置的选项进行编译和链接,其中还要修改语法错误,其他错误(如逻辑错误)则必须通过调试才能发现和解决,以生成二进制代码的目标文件(.obj)、列表文件(.lst)、绝对地址目标文件、绝对地址列表文件(.m51)、链接输入文件(.imp)、可执行代码文件(.hex)等,进行软件仿真和硬件仿真。1)源程序的编译、链接图1-16 程序语法正确时编译、链接的结果2)调试运行

编译、链接成功后,执行菜单命令Debug→Start/StopDebugSession或者单击文件工具栏(FileToolbar)上的工具按钮,即可进入(或退出)软件仿真调试运行模式,此时出现一个调试运行工具条(DebugToolbar),源程序编辑窗口与之前也有变化,如图1-17所示,图中上部为调试运行工具条,从左至右分别是复位、全速运行、暂停、单步跟踪、单步运行、跳出函数、运行到光标处、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按键等命令;图中下部为调试窗口,黄色箭头为程序运行光标,指向当前等待运行的程序行。

在μVision2中,有5种程序运行方式:单步跟踪(StepInto),单步运行(StepOver),跳出函数(StepOut)、运行到光标处(RuntoCursorline),全速运行(Go)。首先搞清楚两个重要的概念,即单步执行与全速运行。使用F5快捷键,或执行菜单命令Debug→Go,或单击工具按钮进入全速运行,使用“Esc”快捷键,或执行菜单命令Debug→StopRunning,或单击工具按钮停止全速运行,全速执行是指一行程序执行完以后紧接着执行下一行程序,中间不停止,因此程序执行的速度很快,但只可以观察到运行完总体程序的最终结果的正确与否,如果中间运行结果有错,则难以确认错误出现在哪些具体程序行。单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与所需结果相同,从而发现并解决问题。

使用“F11”快捷键,或执行菜单命令 Debug→StepInto,或单击工具按钮以单步跟踪形式执行程序,单步跟踪是尽最大的可能跟踪当前程序的最小运行单位,在本示例C语言调试环境下最小的运行单位是一条C语句,因此单步跟踪每次最少要运行一个C语句。如图1-17所示,每按一次“F11”快捷键,黄色箭头就会向下移动一行,包括被调用函数内部的程序行。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载