基于单片机的嵌入式工程开发详解(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-19 12:15:15

点击下载

作者:罗强

出版社:电子工业出版社

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

基于单片机的嵌入式工程开发详解

基于单片机的嵌入式工程开发详解试读:

嵌入式技术与应用丛书

基于单片机的嵌入式工程开发详解

CIP号:第096330号

ISBN:978-7-121-07019-8

中图分类:TP368.1

关键词:单片微型计算机-系统设计

北京,2009/01,电子工业出版社

版次:1

印次:1

价格:43.00

印数:4000册

印张:20.75

字数:531

开本:787×1092 1/16

语种:中文摘要

本书通过51系列单片机芯片W78E516B开发信息采集终端的工程实例,以详细的硬件电路开发流程和嵌入式软件系统的构建,让读者清楚地了解工程开发的整个过程。

本书以工程实例的开发流程为线索,涵盖了51系列单片机诸如存储器扩展、综合电源控制、时钟电路、定时器、I/O控制、A/D转换、液晶显示、串口通信、单片机中断等主要应用技术。同时详细地介绍了实时多任务操作系统Small RTOS51的工程应用。本书包含了大量实用程序代码,并且都是基于C语言编写,通过阅读这些程序代码,读者可以深入理解Keil C51语言编程思想和技巧。

本书对于已初步了解单片机原理,但缺乏实际工程经验的初学者来说是一本不可多得的参考资料,也适合从事单片机应用开发的广大工程技术人员和大专院校相关专业教材参考之用。罗强 主编陈丽雪 副主编裴杰 责任编辑冼进 审校高买花 其他贡献者前 言

作为一名硬件工程开发人员,回顾以往的学习、工作经历,有太多感慨。当初刚刚走出校门的时候是踌躇满志,对将要从事的硬件开发,自认为在学校已经学到了很多知识,比如:单片机原理、数电、模电、C语言编程、电路板制作等,觉得自己可以大显身手了,可一到实际的工程中,情况就不一样了。有一种“纸上得来终觉浅”的感觉,觉得以往学习的知识在实际中不知该如何着手。因此,积累一定的工程经验也就相当重要了,而这是我们在学校的教材中所不能学到的。而现在学习硬件工程开发的人员同样也面临相同的问题,为此我们就想把自己的一段工程开发经验写下来,以噬读者:“绝知此事要躬行。”

现在市面上有很多关于单片机的书籍,这些书大多先从单片机基本原理讲起,然后讲其开发环境,再讲外围电路硬件模块,最后讲软件实现,并且使用的多是汇编语言。若要学习单片机的原理,这些书籍相当不错,但要想通过学完这样的一本书就能开发产品,是很困难的。因此在本书中,编者没有按照教科书式的写法,而是以工程开发流程为线索,不是一开始就把单片机的基本原理和编程语言呈现给读者,而是在工程开发中遇到相关的问题时进行引用并且进行详细的补充讲解,这也符合工程开发中遇到一个问题解决一个问题的思想。现在很多工程技术人员在工程开发中遇到问题,就会系统地把整个理论都从头学习一遍,这种方法对于知识的积累和总结来说,无可厚非,但工程开发是有时间限制的,不允许人们花很长的时间来系统学习。另外,本书中会把一些芯片资料详细地提供给大家,这也是为了让读者养成阅读厂家提供的芯片资料的习惯。另外,本书还有一大特点,所有的软件代码都用C语言编写,方便读者阅读和应用。

现在嵌入式系统的开发很热门,大量的书籍和宣传让初学者形成了一个误区,认为嵌入式开发就必须是在ARM级别或更高主频的芯片上才能实现,在单片机上是不可能实现嵌入式软件开发的。其实嵌入式技术只是一种开发应用程序的方法,适合任何硬件的开发,同样也适合单片机。市面上已经有许多介绍单片机实时多任务操作系统的书籍,但很少有关于实际工程应用的。本书基于一款嵌入式实时操作系统,详细地讲解嵌入式实时操作系统Small RTOS51在工程上的应用。

本书本着理论与实践相结合的原则,以通俗易懂的语言描述,应该适合以下几类读者:

● 初步了解单片机原理,但缺乏实际工程经验的初学者;

● 从事单片机应用开发的工程技术人员;

● 从事开发操作系统应用的技术人员;

● 用C语言编写应用程序的开发者。

本书内容涵盖广泛,总体分为三个部分。如果读者是初涉单片机的新手,那么应该首先阅读第一部分的基础篇即第1章;如果读者已经熟悉单片机的基本原理和编译环境,可以跳过第1章,从第二部分的工程硬件篇开始阅读,这部分从第2章至第12章;第三部分为工程软件篇,包括第13章、第14章。在学习完第二部分的各章节后再学习第三部分内容。第二部分以后的各章是循序渐进的,所以要依次阅读。

本书由罗强主编、陈丽雪副主编,冼进审校。同时参与本书工作的人员还有:王治国、冯强、曾德惠、许庆华、程亮、周聪、黄志平、胡松、邢永峰、邵军、边海龙、刘达因、赵婷、马鸿娟、侯桐、赵光明、李胜、李辉、侯杰、王红研、王磊、闫守红、康涌泉、李欢、蒋杼倩、王小东、张森、张正亮、宋利梅、何群芬、程瑶等,在此一并感谢。

感谢四川大学智能研究所给予的大力支持;感谢王标、赵剑萍给予的帮助;感谢在编写本书时陪伴着我的家人和朋友。

由于作者水平所限,加之网络技术发展迅速,本书的覆盖面广,书中错误和不妥之处在所难免,恳请广大读者批评指正。联系方式:rongzht@163.com。

编者

于四川大学第1部分:基础篇

第1章 单片机与编译环境第1章 单片机与编译环境

什么是单片机,单片机的内部结构是什么?许多单片机教材都做了很好的定义和说明,在这里就不再赘述。与同类书相比,本书是直接面向工程设计的。因此,在本章中,通过释义和讲解一款单片机芯片的资料,让大家初步了解单片机的内部结构和工作原理。当然,这些只是一些初步的知识,随着后面开发的深入,读者逐渐会更清楚、更深刻地理解单片机。1.1 MCS-51简介

单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。单片机由芯片内仅有的CPU专用处理器发展而来。

MCS-51是指由“Intel”公司生产的系列单片机的总称,它的基本型产品是“8031”,“8051”和“8751”。其中“8051”是最早、最典型的产品,其他单片机都是在“8051”的基础上改制而来的,所以人们习惯于用“8051”来称呼MCS-51系列单片机。“Intel”公司将MCS-51的核心技术授权给了很多公司,所以很多公司在做以“8051”为核心的系列单片机,如“Winbond 78E516B”就是由台湾华邦电子公司开发生产的,本书所介绍的工程项目就是用“Winbond 78E516B”单片机来完成的。

值得一提的是,现在的计算机体系结构分成两类:冯·诺依曼结构和哈佛结构。常见的专用处理器(CPU)就是冯·诺依曼结构,它的最大的特点是整个存储器逻辑空间只有一个,可随意安排程序存储空间和数据存储空间,ARM系列的32位芯片就是基于这种体系结构。而哈佛结构将程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式,并且使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而两条总线之间毫无关联。这种结构体系的处理器一般运用于需要较大的运算量和较高的运算速度的数字信号处理,比如“DSP”芯片,可以说哈佛结构比起冯·诺依曼结构有许多优势。8位单片机就属于哈佛结构,想想这是多么的神奇啊,小小的单片机居然和“DSP”是同一个体系结构,所以学好单片机是学习其他微处理芯片的基础。

单片机比起专用处理器应用于嵌入式系统再合适不过了,因而它得到了充分应用。在人们生活和工作中,几乎都会有单片机的影子,如手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1~2个单片机。如今大量的嵌入式操作系统已被广泛地应用于单片机系统,而作为掌上电脑和手机核心处理器的高端单片机甚至可以直接使用专用的“WinCE”和“(CLinux”操作系统。1.2“Winbond 78E516B”芯片功能详解

本节按照“W78E516B”的芯片资料及结构给大家介绍单片机的原理,为了便于读者的阅读和理解,补充了一些额外的知识点。

如果你是第一次阅读芯片资料可能会觉得这种结构很凌乱,不好理解。的确是这样的,但芯片资料都是这种结构,所以请你多一点耐心把这部分看完,因为对于专业的电子工程师来说,阅读相关的芯片资料是基本功。1.2.1 芯片概述

1.“W78E516B”介绍“W78E516B”是一款低功耗8位微控制器;片内具有带ISP功能的“Flash EPROM”;“ISP”功能的“Flash EPROM”可用于固件升级。其指令集同标准“8052”完全兼容。“W78E516B”包含64KB的主ROM,4KB的辅助ROM(位于4KB辅助ROM中的装载(loader)程序,可以让用户更新位于64KB主ROM中的程序内容)。512B片内RAM;4个8位双向、可位寻址的“I/O”口;一个附加的4位“I/O”口P4;3个16位定时/计数器及一个串行口。这些外围设备都由8个中断源和2级中断能力的中断系统的支持。“W78E516B”内含的ROM允许电编程和电读写,这样用户就可以很方便地进行编程和验证。代码确定后,就可以对代码进行保护。“W78E516B”有两种节电模式:空闲模式和掉电模式,两种模式均可由软件来控制选择。空闲模式下,处理器时钟被关闭,但外设仍继续工作。在掉电模式下晶体振荡器停止工作,以将功耗降至最低。外部时钟可以在任何时间及状态下被关闭,而不影响处理器的运行。

2.特性

● 全静态设计的“CMOS”8位微处理器频率最高达40MHz。

● 64KB并带“ISP”功能的“Flash EPROM”,用来存储应用程序(APROM)。

● 4KB的辅助ROM,用来存储装载程序(LDROM)。

● 512B片内暂存RAM(包括256B的软件可选的“AUX-RAM”)。

● 64KB 程序存储器地址空间和64KB数据存储器地址空间。

● 4个8位双向“I/O”口。

● 一个4位多功能可编程口。

● 3个16位定时/计数器。

● 一个全双工串行口(UART)。

● 8个中断源,2级中断优先级嵌套能力。

● 内建电源管理。

● 代码保护机制。

● 封装:

3.引脚配置

40PIN DIP(W78E516B),如图1-1所示。图1-1“W78E516B”芯片引脚封装1.2.2 引脚描述(见表1-1)表1-1 芯片引脚描述续表注释:类型 I:输入;O:输出;I/O 双向;H:上拉;L:下拉;D:开漏。

● I:只能作为输入端。

● O:只能作为输出端。

● I/O:双向口,可作为输入和输出。

● H:指芯片内部接有上拉电阻,设计时,可以直接用这类的引脚驱动一些小功率的器件,不需外加电源。

● L:芯片内部接有下拉电阻,作为输入用可以吸收较大的电流。

● D:开漏是指芯片内部引脚以“MOS”的漏极作为输出。它可以吸收很大的电流,但是不能向外输出电流。所以,为了能输入和输出电流,在电路设计时,开漏引脚要和上拉电阻一起使用。上拉电阻的阻值决定了逻辑电平转换的速度,阻值越大、速度越低、功耗越小。电阻通常选用2.2kΩ,4.9kΩ。1.2.3 功能框图

芯片的功能框图如图1-2所示。图1-2 芯片功能框图“W78E516B”芯片兼容了标准的MCS-51芯片的总体结构,并且还扩展了一些功能。它由以下10部分组成:

● 中央处理器;

● 64KB片内可编程程序存储器“EPROM”;

● 512B的数据存储器;

● 4KB的辅助ROM,用来存储装载程序(LDROM),应用于ISP在线编程;

● 特殊功能寄存器“SFR”;

● 32条I/O线(四个8位口P0、P1、P2、P3);

● 3个16 位定时/计数器;

● 一个全双工串行口(UART);

● 8个中断源,2级中断优先级嵌套;

● 片内振荡器和时钟电路。“W78E516B”芯片有两种封装,其中方形封装44引脚的芯片,有四只引脚(P4.0~P4.3)为特殊功能引脚。在工程项目中采用的是40引脚的双列直插封装(DIP40),没有这四个引脚,在这里不做详细介绍。读者可以参见厂家提供的相关芯片资料。1.2.4 功能描述

1.RAM“W78E516B”有512B的片内RAM,分2个区,一个256B的暂存RAM区;另一个是256B的辅助RAM区。

● 地址为0H-7FH的RAM:这些RAM可以用与“8051”相同的直接或间接寻址方式来寻址。在选定的RAM区内,寻址指针是R0和R1。

● 地址为“80H-FFH”的RAM:只能用与“8051”相同的间接寻址方式来寻址,在选定的RAM区内,寻址指针是R0和R1。

● 地址范围为“0H-FFH”的辅助RAM(AUX-RAM):寻址方式与用“MOVX”指令访问外部数据存储器的寻址方式相同。在选定的RAM区内,寻址指针是R0、R1和“DPTR”。对地址高于“FFH”的外部数据存储器的访问,寻址方式与“8051”下的“MOVX”指令相同。在复位后,“AUX-RAM”是被关闭的。把“CHPCON”寄存器中的bit 4 置位,可以使能对“AUX-RAM”访问。在使能“AUX-RAM”后指令“MOVX@RI”将始终访问片内“AUX-RAM”。当执行的指令来自内部程序存储器时,对“AUX-RAM”的访问不会影响P0、P2口,以及WR、RD。

补充知识点

寻址方式:这里补充介绍单片机的三种主要寻址方式。也就是直接寻址、间接寻址和外部数据存储器寻址。

1.直接寻址

直接寻址方式中,指令操作数域给出的是参加运算的操作数地址。

比如指令:MOV 58H,A

表示把累加器A中的内容送到58H单元中,其中58H为直接地址,表示内部数据存储器RAM中的一个单元。

2.间接寻址

间接寻址方式中,指令操作数给出的是存放操作数地址的寄存器。可作为间接寻址的工作寄存器只能是R0和R1。

比如指令:MOV@R1,A

表示把累加器A中的内容送到寄存器R1中的数所指定的存储单元。其中R1存放着间接地址。

3.外部数据存储器寻址

主要依靠MOVX指令访问外部RAM。

比如指令:MOVX@R1,A

表示把累加器A中的内容送到寄存器R1中的数所指定的外部存储单元。

以上介绍的各部分RAM寻址方式如图1-3所示。图1-3 RAM寻址方式

2.定时器0,1,2

定时器0、1、2中都包含两个8位数据寄存器。分别是定时器0的TL0、TH0,定时器1的TL1、TH1,定时器2的TL2、TH2。TCON和TMOD对定时器0、1进行控制。T2CON寄存器对定时器2进行控制。“RCAP2H”,“RCAP2L”是定时器2的重装/捕捉寄存器。定时器0和1的操作与“8051”相同。定时器2为一个16位定时/计数器,通过“T2CON”设定和控制。与定时器0和1相同,定时器2可以根据“T2CON”的“C/T2”位,设定作为外部计数器或内部定时器,定时器2有三个操作模式:捕捉、自动重装和波特率发生器。捕捉或重装模式的时钟速度与定时器0和1相同。

3.晶体振荡器“W78E516B”包含一个内置的晶体振荡器。为使振荡器工作,在“XTAL1”和“XTAL2”引脚之间必须连接一个石英晶体。此外,必须分别在这两个引脚和地之间连接负载电容。同时,当频率高于24MHz时,需要在“XTAL1”和“XTAL2”引脚间接一个电阻,以防止DC偏压。

4.时钟“W78E516B”单片机虽然有内部振荡电路,但要形成时钟,必须外接附加电路。时钟产生方式有内部时钟方式和外部时钟方式两种。

使用外部时钟方式时,外部时钟源连接到引脚“XTAL1”上,引脚“XTAL2”悬空。晶体振荡器要求“XTAL1”上的输入是一个“CMOS”型输入,这样就要求外部时钟信号输入电压应大于3.5V。外部振荡信号输入后首先在内部进行2分频,然后才作为内部时钟信号,故“W78E516B”对外部振荡信号占空比的变化相对不敏感。

补充知识点

时钟:芯片资料上描述的单片机时钟产生方式比较概要。这里加以补充。

1.内部时钟方式

在单片机“XTAL1”和“XTAL2”引脚上外接定时元器件(最常用的方式是采用外接石英晶体和电容组成并联回路),利用单片机片内的振荡电路,在内部产生自激励,以产生时钟信号。

2.外部时钟方式

外部时钟方式是将外部振荡信号直接由“XTAL1”(对于“CMOS”型单片机)或“XTAL2”(对于HMOS型单片机)引脚进入。

外部振荡信号输入后,在内部首先通过一个2分频的触发器而成为内部时钟信号,MCS-51单片机对外部振荡信号的占空比没有特殊要求。

3.时钟同步

当使用片内振荡器时,可以利用“XTAL1”、“XTAL2”引脚引出时钟,为其他芯片提供时钟。对于“HMOS”型单片机,由“XTAL2”引脚引出。对于“CMOS”型单片机,由“XTAL1”引脚引出。

当系统使用多单片机组成时,为便于各单片机之间的时钟同步,一般选用外部时钟方式。

5.电源管理

1)空闲模式

将“PCON”寄存器的“IDL”位置位,系统进入空闲模式。这时连接到处理器的内部时钟被关闭。外设和中断逻辑继续工作。当有中断或复位发生时,处理器退出空闲模式。

2)掉电模式

将“PCON”寄存器的PD位置位,处理器进入掉电模式。这时包括振荡器在内的所有时钟被关闭。退出掉电模式的条件是硬件复位或外部中断触发信号。

6.减少“EMI”辐射

为了减少振荡电路中的“EMI”辐射,“W78E516B”允许用户通过编程将安全寄存器的B7位清零,来减少片内振荡放大器的增益。一旦B7置为“0”,放大器就会减少一半的增益。用户在试图减少晶振放大器增益时,必须注意:在高于24MHz的高频下运行时,减少一半的增益也许会使外部晶振工作不正常。当在较低的增益下运行时,应适当调整“XTAL1”与“XTAL2”引脚间电阻以及“XTAL1”、“XTAL2”与地间的电容大小。

7.“I/O”口P4“I/O”口P4的地址为D8H,是一个4位多功能可编程“I/O”口。每个引脚都可以通过软件来单独设置。“I/O”口P4有4种工作方式。

● 模式0:P4.0~P4.3是与P1口功能相同的双向“I/O”口。如果外部中断使能,P4.2、P4.3复用为输入口。

● 模式1:P4.0~P4.3是在指定地址单元处与RD信号同步的读信号。这些信号可用做外部设备的片选信号。

● 模式2:P4.0~P4.3是在指定地址单元处与信号同步的读信号。这些信号可用做外部设备的片选信号。

● 模式3:P4.0~P4.3是在指定地址单元处与信号同步的读、写信号。这些信号可用做外部设备的片选信号。

当P4口设置为片选信号时,片选信号地址根据“SFR P4xAH”,“4xAL”,“P4CONA”和“P4CONB”的内容安排。寄存器“P4xAH”和“P4xAL”包含16位基本地址。寄存器“P4CONA”和“P4CONB”为P4口工作模式的控制位。

8.中断源

如表1-2所示,传统“8051”的中断系统有5个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串口中断。“W78E516B”芯片新增了三个中断:定时器/计数器2中断,外部中断2、3。两个附加的外部中断,与标准的“80C52”中的外部中断0和1的功能相似。这些中断的功能/状态由“XICON”(外部中断控制)寄存器中的设置位表示。表1-2 8个中断源“W78E516B”芯片40引脚的双列直插封装(DIP40)没有外部中断2、3。读者可以参见厂家提供的相关的芯片资料。1.2.5 时序波形图

芯片的时序分析比较有难度,但对于一个硬件工程师来说,时序分析是必须了解和掌握的。在下面的介绍中针对“W78E516B”芯片资料提供的时序波形图,详细讲解MCS-51芯片的时序,希望读者好好阅读这部分内容,在以后的电子设计中,你将受益匪浅。

1.晶振输入波形

如图1-4所示为“XTAL1”引脚输入的晶振振荡信号时序。“T”为振荡信号周期,一般大于20ns。“T”为振荡信号高电平CPCH持续时间,“T”为振荡信号低电平持续时间。晶振输入波形参数CL如表1-3所示。图1-4 晶振输入波形表1-3 晶振输入波形参数注释:1.时钟在任一状态都可以停止。2.TCP规格用做其他规格的基准。3.“XTAL1”的输入对占空比没有要求。

本处提到的“振荡周期T”概念,在芯片资料中为“时钟周CP期”,本书为了与单片机概念统一,把晶振周期称为振荡周期,两个振荡周期构成一个时钟周期。

补充知识点

机器周期:一个机器周期由6个时钟周期组成(6个状态,S1-S6),每个时钟周期有两个振荡周期(P1和P2),共包含12个振荡周期(12个节拍),依次表示为“S1P1”、“S1P2”、“S2P1”、“S2P2”、…、“S6P1”和“S6P2”。详细内容可见第3章。

2.外部程序读取周期

在外部存储器取指令期间,P0口(PORT0)和P2口(PORT2)总共16根“I/O”线输出地址码。其中P0口作为分时复用地址/数据总线使用。外部存储器读取周期为一个机器周期,时序图如图1-5所示,图中各参数详见表1-4所示。图1-5 外部程序读取周期时序图表1-4 外部程序读取周期参数续表注释:1.在整个存储器存取周期,P0.0~P0.7,P2.0~P2.7保持稳定;2.存储器访问时间为3Tcp;3.内部数据锁定先于变为高电平;PSEN4.“△”为20ns(由于缓冲器驱动延迟和线载延迟(wire loading)。

时序说明如下:

● P0口作为地址信号线输出线,用于输出程序存储器的低8位地址A0-A7。P2口用于输出程序存储器的高8位地址A8-A15。P2口具有锁存功能。P0口还分时复用位8位地址线,需要用“ALE”锁存信号把P0口输出的低8位地址锁存起来。

●“ALE”是地址锁存信号,该信号每有效一次就能对存储器进行一次读指令操作。“ALE”信号以振荡脉冲六分之一的频率出现。因此,在一个机器周期中(包含12个振荡周期),“ALE”信号两次有效。第一次在“S1P2”和“S2P1”期间,第二次在“S4P2”和“S5P1”期间。有效电平持续时间为一个时钟周期。

● 当“ALE”信号由高变低时,把P0端口的低8位地址选通进入地址锁存器,然后P0口变成浮置状态等待程序存储器读出指令码。P2口输出程序计数器中的高8位地址。

● 外部程序存储器读取指令时,除ALE外,还需要“PSEN”信号,用于片外程序存储器的选通。该信号从“S3P1”开始有效,片外程序存储器选通。“S4P1”时,按PC值读出的指令出现在数据总线P0上,CPU在的上升沿前将指令读入,并寄存到指令寄存器“IR”中。即完成一次读指令操作。从“S4P2”开始第二次读指令操作。

可以看到,在访问外部程序存储器的一个周期时序中,“ALE”信号和信号两次有效,这表示在一个机器周期中,允许单片机两次访问外部程序存储器,即取出两个指令字节。对于单字节指令,由于程序计数计数器“PC”没有加1,读出的是同一条指令,第二次读出的指令无效。

本时序波形图主要是针对扩展程序存储器的。当片内ROM不够时,就需要扩展片外程序存储器。在工程项目中采用的这款芯片片内有64KB的ROM,足够满足工程的应用了,所以没有进行程序存储器的扩展,其引脚悬空。

3.外部数据读周期

外部数据读时序由两个机器周期组成,第一个周期为取指令周期,第二个周期为读数据周期。从第二个机器周期的“S1P1”开始,读信号变为有效,选通片外RAM,进行RAM的读操作。在S2期间,被寻址的RAM单元把有效数据送入P0口,在信号的上升沿前,数据被读入单片机。时序图如图1-6所示,外部数据读周期参数详见 表1-5所示。

数据的读取只使用控制线而不用,正是因为如此,数据存储器与程序存储器地址可以完全重叠,均为“0000H-FFFFH”。图1-6 外部数据读周期时序图表1-5 外部数据读周期参数注释:数据存储访问时间为8 TCP;“△”为20ns(由于缓冲器驱动延迟和线载延迟)。

从时序图可以看到,在执行外部数据读“MOVX”指令时,“ALE”信号不是固定频率的信号,不适合作为时钟脉冲。

4.外部数据写周期

外部数据写时序与外部数据读时序相似,也是由两个机器周期组成。第一个周期为取指令周期,第二个周期为写周期。写的过程是CPU先向P0口总线传送低8位地址,然后在第一个机器周期的S6状态将数据传送到P0口。第二个机器周期的“S2P1”开始,写信号变为有效,选通片外RAM,对外部RAM进行写操作。在信号的上升沿前,P0口上的8位数据就写入寻址地址单元。时序图如图1-7所示,图中各参数详见表1-6所示。图1-7 外部数据写周期时序图表1-6 外部数据写周期参数注释:“△”为20ns(由于缓冲器驱动延迟和线载延迟)。

5.端口访问周期

为方便起见,端口的访问时序以“ALE”为参考。在“S5P2”时,读数据。输出的数据在“S6P2”结束时才有效。端口访问周期时序图如图1-8所示,端口访问周期参数详见表1-7所示。图1-8 端口访问周期时序图表1-7 端口访问周期参数

6.复位

外部“RESET”信号在机器周期“S5P2”期间被采样。为使复位有效,在振荡器运行时,复位信号至少要保持两个机器周期的高电平。在复位期间,端口地址被初始化为FFH,堆栈指针为07H,“PCON”为00H(“PCON.4”特殊,复位时不对其进行清零),除“SBUF”之外的所有“SFR”寄存器为00H,“SBUF”不被复位。

当“W78E516B”应用一个外部RC网络构成复位电路时,复位引脚的内部触发电路用来防止尖峰脉冲。1.2.6 电气特性

如表1-8所示为芯片的直流电源电压、输入电压以及工作温度、存储温度的最大绝对额定值。这几个参数很重要,若超出最大绝对额定值使用时,会对器件的可靠性和寿命造成严重损害。表1-8 最大绝对额定值表

芯片资料中还包括DC特性、典型应用电路等内容。这些内容对于电路设计也很有参考价值,在使用时要仔细阅读。

当然,这部分只是概要地讲解了单片机的内部结构和基本原理。在本书的后续章节,将会对各部分进行更详细的分析。1.3 编译环境

常用的MCS-51系统单片机的编程语言有两种,汇编语言和C语言。汇编语言执行效率高,不过可读性和可移植性并不强。尤其是复杂一些的系统,使用汇编语言开发,程序通常难以读懂。而由于C语言的简洁及其应用于单片机系统开发时的便利性、可读性和易于移植,因此得到了广泛的应用。C语言还可以嵌入汇编,来编写需要高时效实现的代码。使用C语言还可以有效缩短开发周期。

本书的编程语言也选择了C语言。C编译器选择了“KeilμVision2”。它支持众多不同公司的MCS-51架构的芯片,是一个集编辑、编译和仿真于一体的集成开发环境。界面友好、仿真功能强大。本节将对它做详细的介绍。1.3.1“KeilμⅤision2”主界面介绍

在“Windows”下运行“KeilμVision2”后,程序启动后的界面如图1-9所示。图1-9“KeilμVision2”界面

1.菜单栏“Keil μVision2”的菜单栏共有11个选项,如图1-10所示。图1-10 菜单栏

●“File”(文件)菜单:类同于许多窗口软件的功能,对文件的一般操作,比如新建、打开、存储、打印等。值得注意的是此菜单中有一个选项“Device Database”,用于维护“μVision2”器件数据库,在此可以增加和修改“8051”芯片资料,便于在建立项目时选择已定的“8051”芯片。

●“Edit”(编辑)菜单:对文档的一般操作,比如剪切、粘贴、查找等。值得注意的是书签选项。“Toggle Bookmark”命令设定一个书签后,用快捷键“F2”或组合键“Shift+F2”就可以在不同书签前后跳转了,方便文档的编辑。选择“Clear All Bookmarks”清除全部已定义的书签。

●“View”(视图)菜单:用于控制“μVision2”的界面显示,使用此菜单的选项可以显示或隐藏一些工具栏和窗口。比如浏览窗口、反汇编窗口、符号变量窗口等。

●“Project”(项目)菜单:对项目的特定操作,比如项目的建立、关闭、维护等。值得注意的是“Options…”命令,改变目标、组或文件的工具选项。此命令用得比较多,在后面的使用中将会谈到。

●“Debug”(调试)菜单:与常见的程序调试菜单很相似,此菜单的命令用于软件仿真环境下的调试,提供了断点、单步、跟踪等操作指令。

●“Flash”(烧写)菜单:用于将程序下载到芯片中,要有针对专门芯片的烧写驱动程序才可以使用此菜单。

●“Peripherals”(外围部件)菜单:外围模块菜单命令,用于控制芯片的复位和片内功能模块的控制。此命令很少使用。

●“Tools”(工具)菜单:主要用于支持第三方调试系统。此命令很少使用。

●“SVCS”(软件版本控制系统)菜单:配置和运行软件版本控制系统。此命令很少使用。

●“Window”(视窗)菜单:用于设置窗口的排列方式。

●“Help”(帮助)菜单:用于软件的帮助信息和版本说明。

2.工具栏

工具栏如图1-11所示,工具栏中包括了常用的操作,下面对一些不同于传统的按钮进行介绍。图1-11 工具栏

●此按钮对应菜单命令“Edit→Toggle Bookmark”,用于在光标的当前行创建书签。

●此按钮对应菜单命令“Edit→Goto Next Bookmark”,移动光标到下一个书签处。

●此按钮对应菜单命令“Edit→Goto Previous Bookmark”,移动光标到上一个书签处。

●此按钮对应菜单命令“Edit→Clear All Bookmark”,清除所有定义的书签。

●此按钮对应菜单命令“Edit→Find in Files”,在项目打开的多个文件中查找。

●此按钮对应菜单命令“Edit→Find”,在当前窗口的文件中查找。

●此按钮对应菜单命令“View→Source Browser”,用于显示或隐藏编辑窗口。

●此按钮对应菜单命令“Debug→Start/Stop Debug Session”,启动或停止调试模式。

●此按钮对应菜单命令“View→Project Window”,用于显示或隐藏项目窗口。

●此按钮对应菜单命令“View→Output Window”,用于显示或隐藏输出窗口。

●此按钮对应菜单命令“Debug→Insert/Remove Break Point”,在光标所在行建立或删除断点。

●此按钮对应菜单命令“Debug→Kill All Break Point”,清除已建立的断点。

●此按钮对应菜单命令“Debug→Enable/Disable Break Point”,允许或禁止当前断点。

●此按钮对应菜单命令“Debug→Disable All Break Point”,禁止所有断点。

3.编译工具栏

编译工具栏如图1-12所示。该工具栏用于应用程序的生成和文件的编译操作。图1-12 编译工具栏

●此按钮对应菜单命令“Project→Translate”,编译当前打开的文件。

●此按钮对应菜单命令“Project→Build Target”,编译项目中修改过的文件并生成应用程序。

●此按钮对应菜单命令“Project→Rebuild Target”,编译项目中所有的文件并生成应用程序。

●此按钮对应菜单命令“Project→Stop Target”,停止正在编译的任务。

●此按钮对应菜单命令“Flash→Download”,把应用程序烧写入芯片,不常使用。

●此按钮对应菜单命令“Project→Option for Target”,改变目标、组或文件的工具选项。

4.编辑窗口

在编辑窗口中,用户可以输入或修改源代码,这也是编程的工作区间,“Keil(Vision2”的编辑器支持程序行自动对齐和语法高亮度显示。

5.状态栏

状态栏位于事件窗口的最下方,如图1-13所示,显示当前命令执行的状况、光标所在的行列位置、数字键盘锁定、插入状态和覆盖状态。图1-13 状态栏

6.项目窗口

项目窗口有三个选项页,分别是“Files”、“Regs”、“Books”。

●“Files”页如图1-14所示,显示当前项目的组织结构,每个源文件所引用的头文件,双击文件名可以在编辑窗口打开相应的文件。

●“Regs”页如图1-15所示,显示单片机在当前状态下各个主要寄存器的值,对刚刚改变完状态的寄存器,会以高亮的形式显示。

●“Books”页如图1-16所示,显示帮助文档,双击可以打开相应的帮助文档。图1-14 项目窗口的“Files”页图1-15 项目窗口的“Regs”页图1-16 项目窗口的“Books”页

7.输出窗口

输出窗口也有三个选项页,分别是“Build”、“Command”和“Find in Files”。“Build”页如图1-17所示,用于显示编译时的输出信息。在窗口中双击输出的“Warning”或“Error”信息,可以直接跳转到相应的有警告或语法错误的语句。

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

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载