资源目录
压缩包内文档预览:(预览前20页/共153页)
编号:512611
类型:共享资源
大小:2.87MB
格式:RAR
上传时间:2015-11-11
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
6
积分
- 关 键 词:
-
毕业设计
- 资源描述:
-
基于单片机的电路设计,毕业设计
- 内容简介:
-
1 第 1章 MCS51单片机介绍 1.1 数字集成电路的发展历程 从 20 世纪 60 年代开始,数字集成电路在集成度方面 的发展 经历了 以下 4 个阶段: 包含几十到几百个逻辑门的小规模集成电路( Small Scale Integration, SSI); 包含几百到几千个逻辑门的中规模集成电路( Medium Scale Integration, MSI); 包含几千到几万个逻辑门的大规模集成电路( Large Scale Integration, LSI) ; 包含几万个以上逻辑门的超大规模集成电路( Very Large Scale Integration, VLSI)。 在工作原理方面,数字集成电路可以划分为标准逻辑器件、微处理器和专用集成电路 。 1.1.1 标准逻辑器件 标准逻辑器件在集成度方面属于中小规模集成电路,它包括基于 TTL 工艺的 54 / 74系列和基于 CMOS 工艺的 4000 系列的各种逻辑门、触发器、译码器、多路 选择 器和 计数器等器件 。这些器件的工作原理和应用在数字电路 逻辑设计 课程中有详细的介绍。 作为传统数字系统设计中使用的主要器件,标准逻辑器件的产量很大,因此它们的生产成本低廉,价格便宜。 由于 这些器件的功能确定,芯片设计 主要考虑如何提高器件的性能。标准逻辑器件的工作速度快,但是采用它们设计的数字系统需要较多的器件,这就使得电路连线复杂,系统的可靠性降低。由于用户无法修改这类器件的功能,修改系统设计必须通过对电路重新 设计和组装 来实现 。 1.1.2 微处理器 微处理器,包括 在本书中将要学习的 单片机, 在集成度方面属于 大规模集成电路。它们被 应用于数字系统的设计起始于 20 世纪 70 年代。这类器件 可以 通过编 写 程 序来实现系统功能。 基于微处理器 所 设计电路的逻辑功能可由软件配置,这 个特点 使得 设计灵活性得到提高,当 修改系统设计时 ,设计者 不需要 ,或者较少需要修改电路连线。相对于 由 标准逻辑器件构成的数字系统, 基于 微处理器 设计 的 系统 工作速度较低; 其次, 微处理器的工作仍 需要一些标准 逻辑器件或者相关 逻辑器件构成 的 外围电路 的 支持 。 1.1.3 专用集成电路 专用集成电路 ( Application Specific Integrated Circuit, ASIC) 的出现在一定程度上克服 了 上述两种逻辑器件的缺点。专用集成电路是为满足 一种或几种特定功能而专门设计和制作的集成电路芯片,它的集成度 很高,一片专用集成电路芯片甚至可以构成一个完整的数字系统,因此 这 使得系 统的硬件规模 进一步 降低,可靠性 进一步 提高。 nts 2 专用集成电路可以分为全定制( Full Custom)产品、半定制( Semi-custom)产品和可编程逻辑器件( Programmable Logic Device, PLD)。 ( 1) 全定制产品 全定制产品是指 专为特定目的设计、制造的集成电路芯片,例如电视机、电话等设备中大量使用的 专用 集成电路芯片。这类产品的设计是从晶体管的版图尺寸、位置和相互连线开始进行,其目的是达到半导体芯片面积利用率高、工作速度快、功耗低的优良性能。专用集成电路芯片 的制作过程包括电路设计、逻辑 模拟、版图设计和集成电路的全部生产工序。全定制产品的性能优越,但是它的设计制造成本高、周期长、同时还具有较大的风险,因此该产品仅适用于需要进行特大批量生产的情况。 ( 2) 半定制产品 半定制产品内部 包含基本逻辑门、触发器和具有特定功能的逻辑块所构成的 标准单元。这些标准单元是由器件生产厂家预先做好,但是标准单元之间的连线有待按用户要求进行连接。应用 半定制产品时,用户需要根据设计要求选择合适的产品, 再由产品的结构设计出连线版图,最后交 给生产厂家完成 各个 标准单元之间的连线。 ( 3) 可编程逻辑器件 全定制产品和半定制 产品的 使用 都离不开器件生产厂家 的支持 ,这给 用户 带来很多麻烦。 用户 希望自己 能 设计专用集成电路芯片,并且能立即投入实际应用之中, 而且 在使用中也能比较方便地对设计进行修改。可编程逻辑器件( PLD)就是为满足这一需求而产生的。可编程逻辑器件内的电路和连线都是事先由器件生产厂家做好,但是其逻辑功能并没有确定。 逻辑功能的确定可以由设计者借助于开发工具,通过 编 写程序 的方法来实现。可编程逻辑器件 的工作速度与 标准逻辑器件 工作速度相当,但目前 使用 它 们实现 信号处理比使用 微处理器 要 复杂,而且 使用 成本高 。 1.2 MCS51 单片 机介绍 1.2.1 概述 单片机的全称是单片微型计算机( Single Chip Microcomputer)。为了使用方便,它把组成计算机的主要功能部件:中央处理器( CPU)、数据存储器( RAM)、程序存储器( ROM、EPROM、 E2PROM 或者 FLASH)、定时 /计数器以及各种输入 /输出接口电路等 都 集成在一块半导体芯片上,构成了一个完整的计算机系统。与通用的计算机不同,单片机的指令功能是按照工业控制的要求设计,因此它又被称为微控制器( Microcontroller)。 MCS51 系列单片机是美国 Intel 公司于 1980 年推出的一种 8 位单片机系列。该系列的基本型产品是 8051、 8031 和 8751。这三种产品之间的区别只是在片内程序存储器方面。8051 的片内程序存储器( ROM)是掩膜型的,即在制造芯片时已将应用程序固化进去; 8031片内没有程序存储器; 8751 内部包含用作程序存储器的 4K 字节的 EPROM。由于 8051 的nts 3 编程需要制造商的支持, 8751 的价格昂贵,因此 8031 获得更为广泛的使用。 MCS51 系列单片机优异的性能 /价格比使得它从面世以来就获得用户的认可。 Intel 公司把这种单片机的内核,即 8051 内 核,以出售或互换专利的方式授权给一些公司,如 Atmel、Philips、 ADI 等。这些公司的产品 也被称作为 8051 兼容 芯片,这些 8051 兼容芯片在原来的基础上 增加了许多特性。本书应用电路中采用了 Atmel公司的 AT89S51芯片,它与 MCS51单片机指令集兼容,同时它的内部包含用作程序存储器的 4K 字节的基于 FLASH 技术的只读存储器。采用这款芯片既克服了采用 8031 需要添加外部程序存储器导致电路复杂的缺点,又克服了采用 8751 导致电路制作成本高的缺点。 1.2.2 AT89S51 单片机特性 Atmel 公 司的 AT89S51 芯片具有以下特性: 指令集和芯片管脚与 Intel 公司的 8051 兼容; 4K 字节片内在系统可编程 FLASH 程序存储器; 时钟频率: 0Hz 33MHz; 128 字节片内随机读写存储器( RAM); 32 个可编程输入 /输出管脚; 2 个 16 位定时 /计数器; 6 个中断源, 2 级优先级; 全双工串行通信接口; 监视定时器; 2 个数据指针 。 1.2.3 AT89S51 单片机的封装 AT89S51 单片机具有多种封装形式,包括 PDIP40、 PDIP42、 PLCC44 和 TQFP44。最适合学校实验室使用的是 PDIP40 封装形式,它的外形如图 1.1 所示。 PDIP40 封装形式的单片机芯片可以很方便地使用面包板 来 组成应用电路。 10201918171615141312119876543212122232425262728293031323334353637383940P1.0P1.1P1.2P1.3P1.4(MOSI)P1.5(MISO)P1.6(SCK)P1.7RST(RXD)P3.0(TXD)P3.1(INT0)P3.2(INT1)P3.3(T0)P3.4(T1)P3.5(WR)P3.6(RD)P3.7XTAL2XTAL1GNDVCCP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)EA/VPPALE/PROGPSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A9)P2.0(A8)P2.2(A10)图 1.1 AT89S51 单片机 PDIP40 封装 外形图 nts 4 1.3 AT89S51 单片机的存储器 AT89S51 单片机 的程序存储空间和数据存储空间是分离的,每种 存储空间 的寻址范围都是 64K。上述存储空间在物理上可以被映射 到 4 个区域:片内程序存储器和片外程序存储器;片内数据存储器 和片外数据存储器。 存储空间 的 映射 图 如图 1.2 所示。 当存储空间映射为外部存储器时, 包括程序空间和数据空间, AT89S51 单片机的 P0 口的 8 个管脚 ,从 P0.0( AD0) 到 P0.7( AD7) (管脚 从 39 到 32) , 以时分方式 被 用作数据总线和地址总线的低 8 位; P2 口的 8 个管脚 , 从 P2.0( A8) 到 P2.7( A15) (管脚 从 21 到 28) , 被用 作 地址总线的高 8 位。 由于 对外部程序存储器和外部数据存储器的访问都是通过 P0 口和P2 口实现, 为 了 区分它们,外部程序存储器 由 管脚 PSEN (管脚 29) 的 输出信号 控制 ;外部数据存储器 的 写或读操作分别由 管脚 P3.6( WR ) (管脚 16)和管脚 P3.7( RD ) (管脚 17) 输出信号 控制。 外 部 数 据存 储 空 间数 据 存 储 空 间F F F F H0 0 0 0 H内 部 数 据存 储 空 间特 殊 功 能寄 存 器0 0 H7 F H8 0 HF F H外 部 程 序存 储 空 间内 部 程 序存 储 空 间F F F H0 0 0 HE A = 1 E A = 0外 部 程 序存 储 空 间程 序 存 储 空 间F F F F H1 0 0 0 H图 1.2 AT89S51 单片机的存储器映射 图 1.3.1 程序存储空间 程序存储空间 可以 被映射为内部程序存储器 或者 外部程序存储器。 AT89S51 单片机内部具有的 4K 字节程序存储器 ,它 被映射到程序存储空间的 0000H 0FFFH 区间 , 如图 1.2所示 。这部分程序存储空间也可以 被 映射为外部程序存储器。 它 具体 被 映射为那一种 程序存储器 取决于管脚 EA (管脚 31)所接的电平。当管脚 EA 为 高电平,内部程序存储器被映射到这部分程序存储空间;当管脚 EA 为 低电平,外部程序存储器被映射到这部分程序存储空间。高于 0000H 0FFFH 区间 的程序存储空间 只能 被映射为外部程序存储器。 目前 Atmel 公司生产的 8051 兼容芯片具有多种容量的内 部程序存储器 的型号 , 例如AT89S52 单片机具有 8K 字节内部程序存储器; T89C51RD2 单片机具有 64K 字节内部程序存储器。 鉴于通常可以采用具有足够 内部 程序存储器 容量 的单片机芯片,因此 用户 在使用中 不 需要 再 扩展 外部程序存储器, 这样 在单片机应用电路中管脚 EA (管脚 31) 可以 总 是接高电平。 nts 5 1.3.2 数据存储空间 如图 1.2 所示, 数据存储空间也 可以 被映射为内部数据存储器和外部数据存储器。进入不同的数据存储器 是 通过不同的指令 来实现 ,这点与程序存储器不一样 。 AT89S51 的 内部数据存储器 有 256 字节 ,它们 被分为 2 部分:高 128 字节和低 128 字节。低 128 字节 的内部数据存储器 是真正的 RAM 区,可以被用来写入或读出数据。 这一部分存储容量不是很大,但有很大的作用。 它 可以进一步被分为 3 部分,如图 1.3 所示。 位 寻 址 空 间4 组 工 作 寄 存 器0 0 H0 8 H1 0 H1 8 H2 0 H0 7 H0 F H1 7 H2 F H1 F H7 F H1 10 11 00 0通 过 程 序 状 态字 ( P S W ) 中 的位 R S 1 和 R S 0进 行 选 择通 用 数 据 存 储 器3 0 H图 1.3 内部数据存储器低 128 字节 在内部数据存储器低 128 字节中,地址从 00H 1FH 的最低 32 个字节组成 4 组工作寄存器,每组 有 8 个工作寄存器。每组中的 8 个工作寄存器都被命名为 从 R0 到 R7。 在 一个具体 时刻, CPU 只能使用其中的一组工作寄存器。 当前 正在 使用的工作寄存器组由 位于高128 字节的 程序状态字 寄存器( PSW)中 第 3 位( RS0)和第 4 位( RS1) 的 数据决定。程序状态字寄存器中的数据可以通过编程来改变,这种功能为 保护工作寄存器的内容提供了很大的方便。如果 用户 程序中不需要全部使用 4 组工作寄存器,那么剩下的工作寄存器所对应的内部数据存储器也可以作为 通用 数据存储器使用。 工作寄存器在内部数据存储器中的地址映射如表 1.1 所示。 表 1.1 工作寄存器地址映射表 0 组( RS1=0, RS0=0) 1 组( RS1=0, RS0=1) 2 组( RS1=1, RS0=0) 3 组( RS1=1, RS0=1) 地址 寄存器 地址 寄存器 地址 寄存器 地址 寄存器 00H R0 08H R0 10H R0 18H R0 01H R1 09H R1 11H R1 19H R1 02H R2 0AH R2 12H R2 1AH R2 03H R3 0BH R3 13H R3 1BH R3 04H R4 0CH R4 14H R4 1CH R4 05H R5 0DH R5 15H R5 1DH R5 06H R6 0EH R6 16H R6 1EH R6 07H R7 0FH R7 17H R7 1FH R7 nts 6 在 工作寄存器区 上面 , 内部数据存储器 的地址从 20H 2FH 的 16 个字节 范围 即可以通过字节寻址的方式进入,也可以通过位寻址的方式进入 , 位地址范围从 00H 到 7FH。 字节地址与位地址的 对应 关系如表 1.2 所示。 表 1.2 字节地址与位地址的关系 位地址 字节地址 D7 D6 D5 D4 D3 D2 D1 D0 2FH 7F 7E 7D 7C 7B 7A 79 78 2EF 77 76 75 74 73 72 71 70 2DH 6F 6E 6D 6C 6B 6A 69 68 2CH 67 66 65 64 63 62 61 60 2BH 5F 5E 5D 5C 5B 5A 59 58 2AH 57 56 55 54 53 52 51 50 29H 4F 4E 4D 4C 4B 4A 49 48 28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38 26H 37 36 35 34 33 32 31 30 25H 2F 2E 2D 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20 23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10 21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00 内部数据存储器 地址从 30H 7FH 部分 仅 可以被用作 为 通用数据存储器。 内部数据存储器的高 128 字节被称为特殊功能 寄存 器( SFR) 区 。 特殊功能寄存器 被用作 CPU 和在片外围器件 之间 的接口,它 们之间 的 联系 方框图如图 1.4 所示。 程 序 存 储 器M C S 5 1 核特 殊 功 能寄 存 器并 行 和 串 行接 口定 时 / 计 数 器中 断 管 理监 视 定 时 器等 别 的 外 围图 1.4 特殊功能 寄存 器( SFR) 工作框图 nts 7 CPU 通过向相应的特殊功能存储器写入数据实现控制 对应的在片外围器件的工作,从相应的特殊功能存储器读出 数据实现读取 对应的在片外围器件的工作结果。 在 AT89S51 单片机中, 包括前 面提到 的程序状态字寄存器( PSW)的特殊功能存储器共有 26 个,它们离散地分布在 80H FFH 的内部数据存储器地址 空间范围,如表 1.3 所示。 表 1.3 AT89S51单片机特殊功能存储器地址映射表 F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 AUXR1 WDERST A7H 98H SCON SBUF 9FH 90H P1 97H 88H TCON TMOD TL0 TL1 TH0 TH1 AUXR 8FH 80H P0 SP DP0L DP0H DP1L DP1H PCON 87H 在表 1.3 中,对于没有定义的存储单元 用户 不能使用。如果 用户 向这些存储单元写入数据将产生不确定的效果 ,从它们读取数据将得 到一个随机数。 对于 字节 地址 低位 为 8H 或者 FH 的特殊功能存储器 既 可以进行字节操作,也可以进行位操作。例如前面提到 的用来确定当前 工作寄存器 组 的 程序状态字寄存器( PSW),它的地址为 D0H,因此对它可以进行字节操作,也可以进行位操作。采用位操作可以直接控制程序状态字寄存器( PSW)中的第 3 位( RS0) 或者 第 4 位( RS1)数据而不影响其它位的数据。 低位地址不为 8H 或者 FH 的特殊功能存储器只可以进行字节操作, 当需要修改这些特殊功能存储器中的某些位时, 对 其它的位 应注意保护。 片外数据存储空间可以被映射为 数据 存储器 、扩 展的输入 /输出 接 口、模拟 /数字转换器和数字 /模拟转换器 等 。 这些 外围器件 统一编址。所有外围 器件 的地址 都 占用 数据存储空间的地址,因此 CPU 与 片外 外围 器件 进行数据交换时可以使用 与 访问外部数据存储器相同的指令。 CPU 通过向相应的外部数据存储 器 地址单元写入数据实现控制对应的片外外围器件的工作,从相应的外部数据存储 器 地址单元读出数据实现读取对应的片外外围器件的工作结果。 nts 8 1.4 单片机 最小 应用 系统 电路 P1.12P0.0(AD0)39P1.23P0.1(AD1)38P1.01VCC40P1.34P0.2(AD2)37P1.45P0.3(AD3)36P1.5(MOSI)6P0.4(AD4)35P1.6(MISO)7P0.5(AD5)34P1.7(SCK)8P0.6(AD6)33RST9P0.7(AD7)32P3.0(RXD)10EA/VPP31P3.1(TXD)11ALE/PROG30P3.2(INT0)12PSEN29P3.3(INT1)13P2.7(A15)28P3.4(T0)14P2.6(A14)27P3.5(T1)15P2.5(A13)27P3.6(WR)16P2.4(A12)27P3.7(RD)17P2.3(A11)27XTAL218P2.2(A10)27XTAL119P2.1(A9)27GND20P2.0(A8)21+ 5 V+C 41 0 u FC 50 . 1 u FC 11 0 u F+R 11 0 kC 2 C 33 0 p F 3 0 p FC R Y1 2 M H z图 1.5 最小 AT89S51 单片机 最小 应用 系统 电路 单 片机的最小应用系统电路指的是它可以正常工作的最简单电路组成。 AT89S51 单片机的最小应用系统电路 图 如图 1.5 所示。该系统 中包含 4 个 电路 部分。 ( 1) 供电电路。 管脚 VCC(管脚 40)接 +5V 电源,管脚 GND(管脚 20)接地线。为提高电路的抗干扰能力,一个 0.1uF( 器件 标注为 104) 的瓷片电容和一个 10uF 的电解电容 通常 被接在管脚 VCC 和接地线之间。 ( 2) 程序存储器选择电路。如前所述, Atmel 公司生产的 8051 兼容芯片具有多种容量的内部程序存储器的型号,因此用户在使用中不需要再扩展外部程序存储器,这样在 单片机应用电路中管脚 EA (管脚 31)可以总是接高电平。 ( 3) 时钟电路 AT89S51 芯片的时钟频率可以 在 0Hz 33MHz 范围 。 单片机内部有一个可以构成振荡器的放大电路 。在这个放大 电路 的对外管脚 XTAL2(管脚 18)和 XTAL1(管脚 19)接上晶体和电容就可以构成单片机的时钟电路。图 1.5 所示的时钟电路由晶体 CRY 和电容 C2与 C3 组成。单片机的时钟频率取决于晶体 CRY 的频率, 如果采用面包板来组装单片机应用电路,晶体 CRY 的推荐值为 12MHz 以下 。 电容 C2 与 C3 的取 值范围为 30pF 50pF。时钟电路采用晶体的目的是提高时钟频率的稳定性。 ( 4) 复位电路 对于 AT89S51 芯片, 如果管脚 RST(管脚 9)保持 24 个时钟周期的 高电平 ,单片机就可以完成复位。通常为了保证应用系统可靠地复位,复位电路应使管脚 RST 保持 10ms以上的高电平。只要管脚 RST 保持高电平,单片机就循环复位。当管脚 RST 从高电平变为低电平,单片机退出复位状态,从程序空间的 0000H 地址开始执行 用户 程序。 nts 9 图 1.5 所示复位电路由 C1 和 R1 组成。当系统加电时,由于 C1 两端的电压不能突变,因此管脚 RST 为高电 平,单片机进入复位状态。随着 C1 充电, 它 两端的电压上升,使得管脚 RST 上电压下降,最终 使 单片机退出复位状态。合理 地 选择 C1 和 R1 的取值,系统就 能 可靠地复位。 C1 的推荐值是 10uF, R1 的推荐值是 10k。 完成复位后,单片机不仅从程序空间的 0000H 地址开始执行 用户 程序,而且还影响一些特殊功能存储器的初始状态。 相应的 特殊功能存储器的复位值如表 1.4 所示。 表 1.4 特殊功能存储器的复位值 特殊功能寄存器 复位值 特殊功能寄存器 复位值 PC 0000H TMOD 00H ACC 00H TCON 00H B 00H TH0 00H PSW 00H TL0 00H SP 07H TH1 00H DPTR 0000H TL1 00H P0 P3 FFH SCON 00H IP XXX0 0000B SBUF XXXX XXXXB IE 0XX0 0000B PCON 0XXX 0000B 注: PC 被称作为程序指针,它被用来存储下一条要执行的指令 地址, PC 的位置 并 不 在 特殊功能存储器 区域 DPTR 被称作为数据指针,它 由 2 个特殊功能寄存器 DP0H 和 DP0L 组成 1.5 单片机模拟调试软件 单 片机 本身不具备自主开发能力,即使在单片机应用系统 的 设计完成以后用户也不能直接 对程序进行修改 。 单片机应用系统的开发必须借助一套开发工具和 软件 环境才能进行。本节 介绍 一种 单片机模拟 调试 软件 的使用 。模拟 调试 软件不仅可以在 程序下载到单片机芯片之前验证它 的正确 性 ,而且 模拟调试软件 也可以 被 用来学习单片机的基本知识 。 1.5.1 Keil单片机模拟仿真调试软件的安装和启动 Keil 单片机模拟 调试软件 是目前获得广泛应用的一种开发 MCS51 系列 兼容 单片机的软件。该软件可以从 Keil 公司中国 代理处购买,也可以从 Keil 公司的网 站( http:/) 上 下载 它 的 免费 评估( Eval) 版本。 下载获得的 Keil 单片机模拟 调试软件是一个压缩包。压缩包解压后执行其中的Setup.exe 程序就可以安装 这个 软件。软件的安装过程与一般的 Windows 应用软件类似, 只要 按照安装提示就 可 以 完成 软件的 安装, 因此 这里 对它 不作 详细的介绍, 仅需要注意的是安装方式 要 选择 Eval Vision 安装。 Keil 单片机模拟 调试软件安装完成以后, 计算机 桌 面上 将 产生一个标注 有 “ Keil nts 10 uVision2”的图标, 双击这个 图标就可以进入 Keil 单片机 模拟 调试软件的集成开发环境。集成开发环境的界面 如 图 1.6 所示, 初次进入的 集成开发环境 界面 中只包括 空的 工程管理窗口和输出窗口 。 图 1.6 Keil 单片机模拟 调试软件的集成开发环境 1.5.2 工程 ( Project) 的建立 Keil单片机模拟 调试软件对 MCS51单片机应用系统的 软件 开发过程采用工程( Project)管理。 工程( Project) 保存着程序编辑的信息和程序调试的环境 。在开始编写程序之前首先应该建立一个工程。 新建一个工程之前 通常 还需 要 建立一个 文件夹 ,后面产生的工程文件 以及 源程序 文件 等都将存储在 这个 文件夹 之中。 在如 图 1.6 所示的 集成开发环境的窗口中选择菜单 “ Project New Project.”将打开建立新工程的对话框。建立新工程的对话框 如 图 1.7 所示。 图 1.7 建立新工程的对话框 nts 11 在下拉列表框“保存在( I)”中选择新建工程将要存储的文件夹名,在文本框“文件名( N)”输入工程的名称,注意 对于工程 不要添加扩展名,单击“保存( S)”按钮即可完成 一个工程的创建。 单击“保存( S)”按钮在完成一个工程 创建的同时也打开单片机芯片型号选择 对话框 。图 1.8 所示的 对话框已经完成 芯片型号的选择。 图 1.8 单片机芯片型号选择 对话框 Keil 单片机模拟 调试软件 支持许多公司的 MCS51 单片机兼容产品。如前所述, 本书应用电路中采用 Atmel 公司的 AT89S51 芯片, 下面以这款芯片为例介绍如何 实现 选择。 在图 1.8 所示的 对话框中的“ Data base”列表框内首先选择 生产芯片的 公司名称“ Atmel” ,双击 这个公司 名称即可打开 Atmel 公司 目前 生产 的所有芯片 型号 。 接着 在列出的产品清单中 选择 将使用 的 AT89S51 芯片, 如 图 1.8 所示。 最后 单击“确定”按钮即可完成芯片的选择。 完成芯片的选择后又回到 如 图 1.6 所示的 集成开发环境的窗口,但是这时该窗口中的工程管理窗口不再是空白, 在 它的 文件选项卡中 出现目录列表“ Target 1”和它的子目录“ Source Group 1”。 集成开发环境中 的菜单“ Project”内还包含“ Open Project”和“ Close Project”等选项。“ Open Project” 选项用来以后再次进入已经建立的工程 。选择菜单“ Project Open Project.”将打开选择工程的对话框, 该对话框与 图 1.7 类似。 在下拉列表框“查找范围( I)”中选择将要打开的工程 被 存储 的文件夹名, 列表框中将出现该文件夹中的所有工程,选择将要打开的工程,单击“打开( O)”按钮即可打开一个工程。 选择菜单“ Project Close Project.”将关闭当前的工程。 nts 12 1.5.3 源文件 的输入 Keil 单片机模拟调试软件内集成了 一个文本编辑器,用该文本编辑器可以 编辑 源程序。在如 图 1.6 所示的 集成开发环境 中选择菜单“ File New.” 、 单击 对应的 工具按钮 或者快捷键 Ctrl +N 将打开一个新的文 本 编辑窗口 如 图 1.9 所示。在图 1.9 中已经完成汇编语言源文件的输入,并且完成 源程序向 当前 工程的添加。 图 1.9 Keil 单片机模拟 调试软件的集成开发环境 完成汇编语言源文件的输入后,在 集成开发环境 中选择菜单“ File Save As.”可以完成文件的 第一次 存储。注意, 汇编语言源文件的扩展名应该是“ ASM”,它 应该 与工程文件存储在同一文件夹之内。 在完成文件的第一次存储以后,当对 汇编语言源文件又进行了修改,再次存储文件则应该 选择菜单“ File Save”、单击对应的工具按钮或者快捷键Ctrl +S 实现文件的保存。 接着的工作需要把 汇编语言源文件加入工程之中。 选择图 1.9 中的 工程管理 器 窗口的子目录“ Source Group 1”, 再 单击鼠标右键打开快捷菜单。在快捷菜单中选择“ Add File to Group Source Group 1”,加入文件 对话框被打开。在 这个 对话框 的“查找范围( I)” 下拉列表框中 选择 存储 汇编语言源文件的文件夹,在“文件类型( T)” 下拉列表框选择“ Asm Source file( *.a*; *.src)”,这时存储 的 汇编语言源文件将显示出来。双击要加入的文件名或者 选择 要加入的文件名再单击“ Add”按钮 即可完成 把 汇编语言源文件加入工程。文件加入以后, 加入文件 对话框并不消失,更多的文件也可以利用它 加入工程。如果不需要加入其它文件,单击“ Close”按钮可以关闭 加入文件 对话框。这时 工程管理窗口的文件选项卡中 子目录“ Source Group 1”下出现一个 汇编语言源文件 , 如 图 1.9 所示 。 需要注意,当 把 汇编语言源文件加入工程 但还没有关闭 加入文件 对话框,这时有可能被 误认为文件没有成功 地 加入工程而再次进行加入操作,系统将显示 所需的 文件已经加入的 提示。 在这种情况下, 单击 提示框中的 “确定”按钮,再 单击“ Close”按钮可以关闭 加入文件 对话框。 nts 13 1.6 学 习编 写第一个程序 最好的学习编写程序的方法就是从编写真实的、可以运行的程序 开始 。 在图 1.9 显示的 集成开发环境 的编辑 工作区 中已经输入一段汇编语言 源程序。 这段程序是一段小程序,但 它 却充分说明 汇编语言 源程序由什么构成。下面 列出这段 汇编语言源 程 序 。 程序示例 1.1: ORG 0000H ;定位源程序在程序存储空间的存储起始地址 BEGIN: MOV R0, #01H ;向工作寄存器 R0送入数据 01H MOV 00H, #02H ;向内部数据存储器的 00H地址单元送入数据 02H MOV 02H, #03H ;向内部数据存储器的 02H地址单元送入数据 03H MOV A, R0 ;把工作寄存器 R0内的数据 复制到 累加器 A MOV A, R0 ;把以工作寄存器 R0内的数据为地址的内部数据存储器 ;对应的地址单元 内的数据 复制到 累加器 A AJMP BEGIN ;转到语句标号 “ BEGIN” 所对应的指令处执行 END ;源程序结束 1.6.1 ORG指令 程序示例 1.1 的第一条 语句是: ORG 0000H 这一 条 语句是一条伪指令,即程序被汇编后不会产生可执 行的指令代码。伪指令可以 参考本书后面 附录 2 列出的 MCS51 单片机汇编器伪 指令 。伪指令 ORG 用来 定位 指令代码 在 程序存储空间 的位置 。 由于单片机复位后程序指针 PC=0000H,即指令 从程序存储空间的0000H 地址开始执行,因此汇编语言源程序的第一句必须是: ORG 0000H 指令代码 没有必要在程序存储空间连续放置 ,所以除第一句外, 可以使用 ORG 指令把其余的 指令代码 放置于程序存储空间的任意地方。紧跟着 ORG 指令后面的汇编语言语句产生的指令代码 将位于 ORG 指令后面 带的 程序存储空间地址,再后面的汇编语言语句 产生的指令 代码 将 紧跟在 它的 后面 连续 地 在程序存储空间中放置。 1.6.2 语句标号 第二 条 语句的开头是: BEGIN: 它被称作为语句标号。语句标号可以由字母、数字和下划 线组成,但是必须以字母开始。语句标号以冒号结束。 应该注意,语句标号不能使用一些保留字,这些保留字包括寄存器名和下面将要提到的汇编指令名 称 等。 语句标号 用来为跳转等语句指出相对地址,绝对地址由汇编语言源程序被汇编 成指令代码时产生。使用语句标号简化了涉及跳转等语句的程序 编写 。语句标号的使用使得 当源程序被调整后也不需要 通过 手工 对相应的地址 进行 对应的 改变。 nts 14 1.6.3 MOV指令 程序示例 1.1 中出现 了 2 种汇编语言指令 ,它们的符号是 MOV 和 AJMP。 MCS51 单片机的汇编语言指令 系统 参见附录 1。 MOV 指令的功能是数据传送,它的指令格式为: MOV 目标地址, 源地址 MOV 指令的作用空间为 内部数据存储 器 的 256 字节 ,该指令不能用来访问外部数据存储器 。进入数据存储 空间的方法称作为寻址方式,换句话说就是 如何 寻找参与操作的数据 。 MCS51 单片机的汇编语言指令系统具有 7 种寻址方式:立即寻址、直接寻址、寄存器寻址 、寄存器间接寻址、相对寻址、变址寻址和位寻址。下 面仅对 程序示例 1.1 中出现的寻址方式进行介绍。 程序示例 1.1 中显示的第二 条 语句 为 : MOV R0, #01H 这句的功能是向工作寄存器 R0 赋值 为 01H 的数据。 语句中 包 含 2 种寻址方式 。 语句在源地址的位置是一个具体的操作数 据 。 当汇编语言指令中 有具体的操作数据 则 被 称作为立即寻址 ,这个数据也被称作为立即数 。 立即数 由“ #”符号开始, 它 可以 采用 16 进制数(后缀 H)、 10 进制数(无后缀)和 2 进制数(后缀 B)来表示 。 该 语 句的目标地址为 工作寄存器 R0, 访问工作寄存器的 寻址方式 被称 为寄存器寻址。 寄存器寻址可以使用当前工 作寄存器组中 R0 R7 的任意一个工作寄存器。 MCS51 单片机的数据宽度为 8 位,用 16 进制格式进行描述,数据 则 具有 2 位。 语句中出现的 16 进制数 的高位不能是字母。如果 高位是字母,则字母前应加一个“ 0”,例如要 把立即数 F6H 送入工作寄存器 R0,则应写为: MOV R0, #0F6H 程序示例 1.1 中的 第三 条 语句 是 : MOV 00H, #02H 注意这一句的目标地址。 这里的 00H 表示地址,直接给出 数据存储器 地址的寻址方式称作为直接寻址。 注意 00H 和 #02H 的区别,前者表示一个地址,后者表示一个 立即数 。 如果地址的 最高位是字母,则字母前也应加一个“ 0”。 程序示例 1.1 中 的第六句语句 是 : MOV A, R0 这一句 源地址 的寻址方式 采用了寄存器间接寻址,它的功能为把以工作寄存器 R0 的内容为地址的存储单元 内 的内容 复制 到累加器 A。注意只有工作寄存器 R0 和 R1 可以用于寄存器间接寻址。 1.6.4 注释 在 程序示例 1.1 中 ,汇编语言源程序 语句 后面存在 被 称作为注释的程序说明。 注释由分号“;”开始,直到本行结束。注释可以与某条语句同行,也可以独立成行。 使用注释 的目的是为了方便程序阅读。切忌有这样的 想法:我是程序的唯一阅读者 ,nts 15 我不会忘记 自己编写的程序中语句的含义。 一个好的 注释记载了设计思想, 同时 它也可以方便别人阅读 ,方便互相交流 。 1.6.5 AJMP指令 程序示例 1.1 中的 第七 条 语句 是 : AJMP BEGIN 这条指令的功能是无条件跳转。在这条以前的语句执行时,程序指针 PC 将自动 按顺序 指向 下一条语句。 AJMP 指令影响程序指针 PC,它把语句中包含的语句标号所指向的语句的地址装入程序指针 PC,从而影响程序的流向。 程序示例 1.1 中的 语句必须包含这一条无条件跳转语句。如果没有它,程序指针 PC 将指出 程序设计者 所编 写 程序存在 程序存储空间 的 地址 范围 ,导致工作失去控制。 1.6.6 END指令 最后一条语句 是 : END。 它和第一条语句( ORG)一样,这也是一条伪指令。该语句不产生可执行的指令代码,仅用来告诉汇编 程序我们 编写的汇编语言源程序到此结束。 1.7 程序 调试 模拟软件的功用之一就是可以在程序下载到单片机芯片之前验证其正确性。当 在 集成开发环境的 文本编辑窗口 中 完成汇编语言源程序的编辑, 下一步的工作就是 对 它 进行调试。下 面 介绍实现 汇编语言源 程序调试所需 要 的步骤。 1.7.1 汇编语言源程序的汇编 计算机的 CPU 只理解 机器语言指令,上面基于符号表述的汇编语言源程序是不能在CPU 中运行的,我们需要一种专门的软件把汇编语言源程序转变成机器语言指令。 这 种专门的软件被称作为汇编程序,把汇编语言源程序转变成机器语言指令的过程被称作为汇编。 Keil 单片机模拟调试软件对汇编语言源程序进行汇编可以 在 集成开发环境中选择菜单“ Project Build target” 、 对应的工具按钮 或者快捷键 F7 来 实现当前 汇编语言源程序的汇编。汇编过程中的信息将出现在输出窗口的 Build 选项卡 中。如果被汇编的汇编语言源程序中不存在语法错误,汇编结果报告将 出现在输出窗口的 Build 选项卡 中,如图 1.10 所示。 如果被汇编的汇编语言源程序中存在语法错误,错误报告 也 将出现在输出窗口的 Build选项卡中。在 对汇编语言源程序中存在 的 语法错误 进行修改后 可以 再次 选择菜单“ProjectBuild target ” 、 对应的工具按钮 或者快捷键 F7 对当前 汇编语言源程序再次进行汇编,也可以选择菜单“ ProjectRebuild all target files ” 或者对应的工具按钮对当前 汇编语言源程序再次进行汇编。使用“ Project Rebuild all target files”可以对工程中的所有文件进行重新汇编,这样 可以防止由于一些意外情况而导致汇编语言源程序与目标代码的不一致,建议汇编语言源程序的再次汇编尽量采用这种方法。 nts 16 图 1.10 Keil 单片机模拟 调试软件的集成开发环境 1.7.2 汇编语言源程序的调试 成功地完成汇编语言源程序的汇编 仅表明汇编语言源程序没有语法错误 , 下一步的工作将通过模拟调试验证它的逻辑 是否满足设计要求。 Keil 单片机模拟 调试软件的调试状态可以通过 选择菜单 “Debug Start/Stop Debug Session”、对应的工具按 钮或者快捷键 Ctrl+F5进入 或者退出 。 进入调试状态以后, 这时的 Keil 单片机模拟 软件的集成开发环境 如 图 1.11所示。 比较图 1.10 和图 1.11, 这时 集成开发环境发生 了 一些变化 : 工程管理器窗口从文件选项卡 自动地 切换到寄存器选项卡, 输出窗口从“ Build” 选项卡 自动地 切换到“ Command”选项卡。 在输出窗口的“ Command”选项卡中显示信息“ Running in eval Mode ( 2K)”,这条信息在进入调试状态时也出现过 ,这是因为 Keil 单片机模拟调试软件 的 评估( Eval)版本只支持 2K 字节的 程序空间 寻址 操作 。 在图 1.11 中还通过选择菜单“ View Memory Window” 或者对应的工具按钮 打开了存储器观察窗口。刚打开存储器观察窗口时它的内部是空白的。通过向文本框“ ddress”输入“字母:数字”来打开 想要观察的存储空间和它的 起始 地址。字母可以是 C、 D、 I 和X,它们分别代表程序存储空间、直接寻址的片内数据存储空间、间接寻址的片内数据存储空间和外部数据存储空间。数字表示 想要观察的存储空间的起始地址。 在图 1.11 中, 向文本框“ ddress”输入“ D: 0000H”打开从地址 0000H 开始的 直接寻址的 片内数据存储空间。 nts 17 在工程管理器窗口 的寄存器选项卡 中 现在显示当前的工作寄存器 R0 R7 和部分特殊功能寄存器的内容。 在 进入调试状态的同时 也 完成了单片机的复位, 所以 这时特殊功能寄存器的内容 就是它们的复位值。 程序指针 PC 的复位值为 0000H,表示单片机 在复位后从程序空间的地址 0000H 处开始执行 指令代码 。 在文本编辑器窗口这时 也发生变化,在汇编语言源程序的第二 条 的左侧出现一个黄色的箭头,它表示这句指令将被执行。 汇编语言源程序的第一条是伪指令, 源程序被汇编后它不会产生可执行的指令代码。 图 1.11 Keil 单片机模拟仿真调试软件的集成开发环境 通过选择菜单“ Debug Step”、对应的工具按钮或者快捷键 F11 可以 实现 汇编语言 源程序的单步模拟执行。在图 1.11 所示的 集成开发环境 ,第一次 单步模拟执行 ,第二 条语句被执行, 第三条语句 的左侧出现一个黄色的箭头 ,它表示这条语句将被执行,同时程序指针 PC 的值变为 0002H。程序指针 PC 的 数 值从 0000H 直接变为 0002H 是因为第二条语句在存储时 占据 2 个存储器字节。在附录 1 中列出的汇编指令系统中包括 每条指令的功能、存储时占用的存储空间和执行时 需要 的具体时间。 第二 条 语句的执行 使得 工作 寄存器 R0 的内容 变 为 01H,同时也使得 内部数据存储器的地址 00H 的内容为 01H。 这可以从 打开的存储器观察窗口看到。 上述结果表 明 工作 寄存器 R0 和直接地址 00H 对应同一物理存储空间,而且它将
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。