书签 分享 收藏 举报 版权申诉 / 516
上传文档赚钱

类型配套课件-《MCS-51单片机技术项目驱动教程》.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5196960
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:516
  • 大小:11.38MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《配套课件-《MCS-51单片机技术项目驱动教程》.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    MCS-51单片机技术项目驱动教程 配套 课件 MCS 51 单片机 技术 项目 驱动 教程
    资源描述:

    1、MCS-51单片机技术单片机技术项目驱动项目驱动教程教程第第1章章 单片机技术概述 1.1 单片机的发展单片机的发展 1.2 单片机的特点单片机的特点 1.3 单片机的应用单片机的应用 1.4 常用单片机简介常用单片机简介 1.5 单片机常用术语单片机常用术语 单片机是单片微型计算机(Single Chip Microcomputer)的简称,它将中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)、中断系统、定时器/计数器、串行口和I/O接口等主要计算机部件集成在一块大规模集成电路芯片上,如图1-1所示。图1-1 微型计算机示意图1.1 单片机的发展单片机的发展美国Intel公司

    2、在20世纪70年代初开发生产的4位微型计算机4004和8位微型计算机8008是单片机时代的开始,集成度为2000只晶体管/片的4位微处理器Intel 4004,配有RAM、ROM和移位寄存器,构成了第一台MCS-4微处理器。1976年Intel公司首先推出MCS-48系列单片微型计算机,它集成了8位CPU、1KB程序存储器、64KB随机存储器、27个I/O引脚和8位定时计数器,MCS-48已成为真正意义上的单片机,获得了广泛的应用,为单片机的发展奠定了基础。目前单片机的品种很多,但其中最具典型性、应用最广泛的非Intel公司的MCS-51系列单片机莫属,它具有品种全、兼容性强、应用简单等特点。

    3、从20世纪80年代开始,各个公司开始推出16位单片机。近年来,各个计算机生产厂家已进入更高性能的32位单片机研制、生产阶段,但是由于控制领域对32位单片机的需求并不迫切,所以32位单片机的应用并不很多。单片机的发展虽然按先后经历了4位、8位、16位到32位的阶段,但从实际使用情况看,并没有出现高性能单片机一家独大的局面,4位、8位、16位单片机在各个领域仍在广泛应用,特别是8位单片机在中、小规模的电子设计等应用场合仍占主流地位。1.1 单片机的发展1.2 单片机的特点单片机的特点 单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度

    4、提升,且电路简单,故障率低,可靠性高,成本低廉,其主要特点有以下8个。1.种类众多 2.性价比高 3.集成度和可靠性高 4.存储器ROM和RAM是严格区分的 5.采用面向控制的指令系统 6.I/O引脚通常是多功能的 7.外部扩展能力强 8.简便易学1.2 单片机的特点1.3 单片机的应用 由于单片机具有价格低廉、性能优异、体积小和使用简单等优点,使得其在工业控制、电子制造、农业生产、家电设备甚至军事领域都有广泛的应用,单片机的应用结合软硬件,适合多学科交叉应用,适合现场恶劣环境,应用领域广泛且意义重大,其主要应用有以下8处。1.智能仪器仪表 2.机电一体化产品 3.商用产品和家用电器 4.计算

    5、机和通信网络 5.医疗设备 6.办公自动化领域 7.汽车电子与航空航天电子系统 8.在军事方面1.3 单片机的应用1.4 常用单片机简介1.MCS-51单片机 MCS-51单片机是所有兼容Intel 8051指令系统单片机的统称。MCS-51系列单片机则在数据RAM区开辟了一个工作寄存器区,该区共分4组,每组8个寄存器,共计可提供32个工作寄存器,相当于通用微机CPU中的通用寄存器。除此之外,MCS-51系列单片机还有颇具特色的21个特殊功能寄存器(SFR)。目前市场比较有代表性的51单片机有Atmel公司生产的AT89系列单片机,其中AT89S51/52十分活跃;再有就是STC系列单片机,其

    6、完全兼容传统8051单片机。2.AVR单片机 AVR单片机是美国Atmel公司推出的增强型内置Flash高速8位单片机,其具有精简指令集(RISC)和内载的Flash,其显著的特点为高性能、高速度、低功耗,共有118条指令,使得AVR单片机具有高达1MIPS/MHz的高速运行处理能力。常用的AVR单片机有ATMEGA8、ATMEGA16等,其广泛应用于计算机外部设备、工业实时控制、通信设备和家用电器等各个领域。1.4 常用单片机简介3.PIC单片机 PIC系列单片机是美国微芯公司(Microchip)的产品。CPU采用RISC结构,分别有33条、35条、58条指令(视单片机的级别而定),属精简

    7、指令集。PIC系列单片机具有速度高、价格低以及大电流LCD驱动能力的特点,在家电控制、电子通信系统和智能仪器等领域广泛应用。常用芯片有PIC16FXXX系列。4.MSP430单片机 MSP430系列单片机是由美国TI公司开发的16位单片机,单片机集成了模拟电路、数字电路和微处理器,其最大特点为超低功耗,非常适合于功率要求低的场合。1.4 常用单片机简介5.Motorola单片机 Motorola是世界上最大的单片机厂商,品种全、选择余地大、新产品多是其特点,在8位机方面有68HC05和升级产品68HC08。16位机68HC16和32位单片机的683XX系列也有几十个品种。Motorola单片机

    8、的特点是高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境,现在改名为“飞思卡尔”单片机。6.其他类型单片机 其他类型单片机还有凌阳单片机、NEC单片机、富士通单片机、三星单片机、华帮单片机、ZILOG单片机、东芝单片机、SST单片机等。1.4 常用单片机简介1.5 单片机常用术语 1.总线(bus)总线是指从任意一个源点到任意一个终点的一组传输数字信息的公共通道。微型计算机元件级总线包括地址总线(address bus)、数据总线(data bus)和控制总线(control bus)三种。2.位(bit)binary digit的简写。3.字节(byte)一个字节就是相邻的8位二进制数

    9、。4.字(word)在计算机和信息处理系统中,在存储、传送或操作时,作为一个单元的一组字符或一组二进制数称为字。5.存储器(memory)存储器用来存放计算机中的所有信息,包括程序、原始数据、运算的中间结果及最终结果等,由存储矩阵、地址译码器、读写控制、三态双向缓冲器等部分组成。按照存储信息方法等又可分为:程序存储器ROM、EPROM、OTP(one time program)、E2PROM、Flash Memory、数据存储器(RAM)。6.存储地址(memory address)存储地址用来定义每个存储单元。每个单元能存放8位二进制数,即1个字节的二进制数。为了区分不同的单元,每个存储器都

    10、有一个地址,以供CPU寻址、操作。1.5 单片机常用术语谢谢观看谢谢观看!第第2章章 MCS-51单片机硬件基础2.1 MCS-51单片机内部结构及单片机内部结构及CPU2.2 MCS-51单片机引脚功能单片机引脚功能2.3 MCS-51单片机存储器结构单片机存储器结构2.4 MCS-51单片机时钟及单片机时钟及CPU时序时序2.5 MCS-51单片机低功耗工作方式单片机低功耗工作方式2.1 MCS-51单片机内部结构及单片机内部结构及CPU2.1.1 内部结构内部结构 平常使用的MCS-51单片机分为普通型和增强型两种。普通型的称为89C51,增强型的称为89C52。二者都以8051单片机为

    11、内核,集成的外部资源有差别。图2-1所示是以增强型单片机89C52为例给出的内部结构图,主要包括片内振荡器和时钟产生电路、1个8位的CPU、片内256B的数据存储器(含特殊功能寄存器SFR)、片内8KB的程序存储器(Flash ROM)、4个并行可编程I/O接口、外接6个中断源的中断系统、3个16位定时器/计数器、1个全双工的串行I/O接口。2.1 MCS-51单片机内部结构及CPU图2-1 89C52单片机内部结构2.1 MCS-51单片机内部结构及CPU2.1.2 8051CPU CPU即中央处理器,是单片机的核心部件,它完成各种运算和控制操作,主要由运算器和控制器两部分组成。1.运算器

    12、运算器包括:1)算术逻辑运算部件ALU ALU可以对位数据进行加、减、乘、除、加1、减1、BCD码数的十进制调整及比较等算术运算,以及与、或、异或、求补及循环移位等逻辑运算。2)累加器ACC ACC在指令中包含算术运算指令和逻辑运算指令等,也作为通用寄存器使用,可以按位操作。3)寄存器B 主要做专门应用,它在乘、除运算中用来存放一个操作数,并且存放运算后的部分结果。此外,寄存器B也可作为通用寄存器使用,可以按位操作。4)程序状态字寄存器PSW PSW用于设定CPU的状态和反映指令执行后的状态,相当于其他微处理器中的标志寄存器,格式如下:(1)CY(PSW.7):进位标志位(2)AC(PSW.6

    13、):半进位标志位(3)F0(PSW.5):用户标志位2.1 MCS-51单片机内部结构及CPU (4)RS1、RS0(PSW.4、PSW.3):工作寄存器组选择控制位 在单片机的数据存储器中共有四组工作寄存器,它们和RS1、RS0组合值的对应关系如表2-1所示。在单片机上电复位时,RS1RS0=00,系统自动选择第0组为当前工作寄存器组。2.1 MCS-51单片机内部结构及CPU(5)OV(PSW.2):溢出标志位(6)PSW.1:为保留位(7)P(PSW.0):奇偶校验标志位5)布尔处理器 布尔处理器专门负责进行位操作。例如,位置1、清0。、取反、判断位值转移,位数据传送、位逻辑与、逻辑或等

    14、。2.1 MCS-51单片机内部结构及CPU2.控制器1)程序计数器PC PC是一个具有自加1功能的16位计数器,其内容始终是单片机将要执行的下一条指令的地址。2)指令寄存器IR和指令译码器ID IR用于存放从Flash ROM中读取的指令。ID负责将指令译码,产生一定序列的控制信号,完成指令所规定的操作。3)堆栈 堆栈是在RAM中专门开辟的一个区域,用于CPU在执行程序过程中存入和调出一些重要数据。2.1 MCS-51单片机内部结构及CPU4)堆栈指针SP堆栈指针SP中的数据始终为堆栈栈顶单元的地址,具有自动加1、减1功能。数据入栈和出栈过程如图2-2所示。当数据进栈时,SP先自动加1,然后

    15、CPU将数据存入;当数据出栈时,CPU先将数据送出,然后SP自动减1。2.1 MCS-51单片机内部结构及CPU图2-2 堆栈的入栈和出栈过程5)数据指针寄存器DPTRDPTR是单片机中唯一一个16位寄存器,主要用来存放16位数据存储器的地址,以便对片外64KB的数据RAM区进行读写操作。DPTR由高位字节DPH和低位字节DPL组成,可以作为一个16位寄存器使用,也可以将DPH和DPL单独看成2个8位寄存器使用。2.1 MCS-51单片机内部结构及CPU2.2 MCS-51单片机引脚功能单片机引脚功能 MCS-51单片机一共有40个功能引脚,其封装形式分为40DIP和44PLCC两种。实物外形

    16、如图2-3所示。其中,DIP封装比较常用。图2-3 单片机实物外形图 89C51单片机的引脚配置如图2-4所示。按引脚功能分为电源、晶振、控制信号和输入/输出四类。1.电源引脚 Vcc(40脚):接5V电源正端。Vss(20脚):接5V电源地端。2.晶振引脚 XTAL1(19脚):片内振荡电路的输入端,接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,若使用外部TTL时钟,则该引脚必须接地。2.2 MCS-51单片机引脚功能图2-4 89C51单片机引脚功能图 XTAL2(18脚):片内振荡电路的输出端,接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,若使用外部TT

    17、L时钟,则该引脚为外部时钟的输入端。3.控制信号引脚 1)RST/VPD(9脚)RST:复位信号输入端,高电平有效。单片机复位电路主要有两种形式:上电自动复位和手动复位,如图2-5(a)和2-5(b)所示。图2-5 单片机复位电路2.2 MCS-51单片机引脚功能 VPD:备用电源输入端,以保持内部RAM中的数据不丢失。2)ALE/(30引脚)ALE:地址锁存信号,每个机器周期输出两个正脉冲,如图2-6所示。为片内程序存储器的编程脉冲输入端,低电平有效。图2-6 单片机ALE引脚信号 3)(29引脚)片外程序存储器读选通信号输出端,每个机器周期输出两个负脉冲,低电平有效。2.2 MCS-51单

    18、片机引脚功能PROGPSENPROG 4)/Vpp(31引脚):程序存储器选择输入端。低电平时,使用片外程序存储器;高电平时,使用片内程序存储器。Vpp:片内程序存储器编程电压输入端。4.输入/输出引脚 (1)P0口(P0.0P0.7)(3932引脚):该端口为漏极开路的双向8位准双向口,它为外部低8位地址线和8位数据线复用端口,驱动能力为8个LSTTL负载,每个口独立控制。(2)P1口(P1.0P1.7)(18引脚):它是一个8位准双向I/O口,每个口可独立控制,内带上拉电阻。对于增强型单片机89C52,P1.0和P1.1引脚具有第二功能。(3)P2口(P2.0P2.7)(2128引脚):它

    19、是一个内部带上拉电阻的8位准双向I/O口,当CPU以总线方式访问片外存储器时,P2口输出高8位地址。作为通用I/O口使用时,P2口的驱动能力也为4个LSTTL负载。2.2 MCS-51单片机引脚功能EAEA (4)P3口(P3.0P3.7)(1017引脚):为内部带上拉电阻的8位准双向I/O口,可作为一般I/O口使用。此外,每个引脚都具有第二功能。各引脚的第二功能定义如表2-2所示。表2-2 P3口各引脚第二功能定义2.2 MCS-51单片机引脚功能5.单片机总线结构 总线是指从任意一个源点到任意一个终点的传输数字信息的通道。MCS-51单片机内部有总线控制器,其总线结构为三总线,即数据总线、

    20、地址总线和控制总线。单片机系统总线主要用于 扩展外部数据存储 器和程序存储器。S-51单片机三总线 结构的引脚分配如 图2-7所示。2.2 MCS-51单片机引脚功能图2-7 MCS-51单片机总线结构2.3 MCS-51单片机存储器结构 MCS-51单片机的存储器在物理上有四个相互独立的存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。这四个存储空间又在逻辑上分为三类:片内、外统一编地址的64KB程序存储空间,256B的片内数据存储空间,最大可扩展64KB的片外数据存储空间。2.3.1 程序存储器程序存储器 基本型单片机89C51片内有4KB的Flash ROM,地址

    21、为0000H0FFFH,片外最多可以扩展60KB的程序存储器,地址为1000HFFFFH。增强型单片机89C52片内有8KB的Flash ROM,地址为0000H1FFFH,片外最多可以扩展56KB的程序存储器,地址为2000HFFFFH。如果单片机既有片内程序存储器,同时又扩展了片外程序存储器,如图2-8所示。那么,单片机在刚开始执行指令时,是先从片内程序存储器取指令,还是先从片外程序存储器取指令呢?这主要取决于程序存储器选择引脚 的电平状态。2.3 MCS-51单片机存储器结构EA图2-8 程序存储器结构 程序存储器在使用时,单片机指定了部分空间为专用区域,用于作为系统复位时的引导地址和中

    22、断程序的入口地址。具体单元分配如表2-3所示。表2-3 51单片机ROM中专用存储区域2.3 MCS-51单片机存储器结构2.3.2 数据存储器数据存储器1.片内数据存储器结构 89C51单片机的片内数据存储器按照寻址方式可以分为两个部分:低128B数据区、特殊功能寄存器区,如图2-9(a)所示。89C52单片机的片内数据存储器按照寻址方式可以分为三个部分:低128B数据区、高128B数据区、特殊功能寄存器区,如图2-9(b)所示。图2-9 片内数据存储器结构图2.3 MCS-51单片机存储器结构 1)低128B数据区低128B数据区地址范围为00H7FH,又划分为工作寄存器区、位寻址区和通用

    23、数据区三个区域,如图2-10所示。2)高128B RAM 地址范围为80HFFH,128B,用途与低128B中的通用数据区完全一样,用于存放数据、程序运行中间结果和作为堆栈使用等。2.3 MCS-51单片机存储器结构图2-10 低128B数据区结构 3)特殊功能寄存器(SFR)特殊功能寄存器是控制单片机工作的专用寄存器。它们散布于高128B RAM中,主要功能包括:(1)控制单片机各个部件的运行。(2)反映各部件的运行状态。(3)存放数据或地址。2.片外数据存储器当单片机片内RAM不够用时可以外扩,最大扩展容量为64KB,地址范围为0000HFFFFH。对片外RAM的访问一般采用总线操作方式。

    24、在进行读/写操作时,硬件会自动产生相应的读/写控制信号和,作用于片外RAM实现读/写操作。片外RAM可以作为通用数据区使用,用于存放大量的中间数据,也可以作为堆栈使用。2.3 MCS-51单片机存储器结构2.4 MCS-51单片机时钟及CPU时序2.4.1 单片机时钟单片机时钟1.时钟电路 MCS-51单片机的时钟信号可以由两种方式产生:一是内部方式,二是外部方式。1)内部方式 MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,由这个放 大器与作为反馈元件的 片外晶体或陶瓷谐振器 一起,就构成了内部自 激振荡器并产生振荡时 钟脉冲,如图2-11所示。(a)晶振实物 (b)振荡电路

    25、图2-11 晶振实物及单片机振荡电路图2)外部方式就是把外部的时钟信号接到XTAL1或XTAL2引脚上供单片机使用,主要用于多电路的时钟同步,如图2-12所示。图2-12 外部时钟信号接法2.4 MCS-51单片机时钟及CPU时序2.时钟信号 在单片机中,泛意的时钟信号包括振荡信号、状态周期信号、机器周期信号和指令周期信号。1)状态周期与节拍 时钟信号:晶振的振荡周期是单片机系统最小的时序单位,振荡脉冲2分频后的信号叫作时钟信号。状态周期S:也就是时钟周期,是计算机中最基本的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。2.4 MCS-51单片机时钟及CPU时序 节拍P:时钟信号的前

    26、、后半个周期称为相位1(P1)和相位2(P2),也称为节拍1、节拍2,如图2-13所示。2.4 MCS-51单片机时钟及CPU时序图2-13 时钟信号示意图2)机器周期机器周期是指CPU访问一次存储器所需要的时间。1个机器周期=6个时钟周期(状态周期)=12个振荡周期。3)指令周期完成一条指令所需要的时间称为指令周期。振荡周期、时钟周期、机器周期和指令周期等几个时序概念间的关系如图2-14所示。图2-14 MCS-51单片机中时钟信号2.4 MCS-51单片机时钟及CPU时序2.4.2 CPU时序时序CPU的操作时序包括取指令和执行指令两个阶段。单片机的指令从执行时间上分为周期、双周期和4周期

    27、指令;从代码长度上分为单字节、双字节和三字节指令。图2-15 MCS-51单片机典型指令时序图2.4 MCS-51单片机时钟及CPU时序2.5 MCS-51单片机低功耗工作方式 单片机系统使用电池供电时,为了降低电池的功耗,需要在程序不运行时以低功耗方式工作。MCS-51单片机的低功耗方式有待机方式和掉电方式两种,由电源控制寄存器PCON来控制。寄存器PCON的格式如下:其中:SMOD:波特率加倍位,SMOD=1时波特率加倍。PD:掉电方式位,PD1时掉电。IDL:待机方式位,IDL1时待机。2.4 MCS-51单片机时钟及CPU时序 GF1:通用标志位。GF0:通用标志位。1.待机方式 写一

    28、个字节数据到PCON使IDL置1,单片机即进入待机方式。在待机方式下,振荡器仍然工作,并向中断系统、串行口和定时器/计数器电路提供时钟,但向CPU提供时钟的电路被阻断,因此CPU不能工作,与CPU有关的全部通用寄存器也都被“冻结”在原状态。终止待机方式的方法有两种:(1)通过硬件复位。系统复位会使IDL位清0,单片机即退出待机状态。(2)通过中断方法。待机期间任何一个允许的中断被触发,IDL都会被硬件置0,从而结束待机方式。2.4 MCS-51单片机时钟及CPU时序2.掉电保护方式 当CPU执行一条置PCON寄存器的PD为1的指令后,系统进入掉电工作方式。在这种工作方式下,内部振荡器停止工作。

    29、由于没有振荡时钟,因此,所有的功能部件都停止工作。但内部RAM区和特殊功能寄存器区的内容被保留,而端口的输出状态值都被存在对应的SFR中。退出掉电方式的唯一方法是通过硬件复位。2.4 MCS-51单片机时钟及CPU时序谢谢观看谢谢观看!第第3章章 MCS-51单片机单片机C语言语言程序设计基础程序设计基础 3.1 C51概述概述 3.2 C51数据类型数据类型 3.3 C51变量定义变量定义 3.4 C51函数的定义函数的定义 3.5 C51中的运算符和表达式中的运算符和表达式 3.6 C51语句和控制结构语句和控制结构 3.7 C51编程实例编程实例 3.8 C51程序开发软件程序开发软件K

    30、eil C简介简介3.1 C51概述概述 MCS-51单片机C语言称为C51,它支持符合ANSI标准的C语言程序设计,同时针对8051单片机的自身特点做了专门扩展。C51对数据类型和变量的定义必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。其他的语法规定、程序结构及程序设计方法都与ANSI C相同。由于单片机在结构及编程上的特殊要求,C51有自己扩展的关键字:_at_bdata、bit、code、data、idata、interrupt、pdata、reentrant、sbit、sfr、sfr16、using、volatile、xdata。3.2 C51数据类型数据类型 C51中

    31、的数据类型如表3-1所示。数据类型表示方法长度数值范围无符号字符型unsigned char1字节0255有符号字符型signed char1字节-128127无符号整型unsigned int2字节065 535有符号整型signed int2字节-32 76832 767无符号长整型unsigned long4字节04 294 967 295有符号长整型signed long4字节-2 147 483 6482 147 483 647浮点型float4字节1.1755E-383.40E+38特殊功能寄存器型sfrsfr161字节2字节0255065 535位类型bit、sbit1位0或13

    32、.3 C51变量定义变量定义 变量是一种在程序执行过程中其值能不断变化的量。使用一个变量之前,必须进行定义,用一个标识符作为变量名并指出它的数据类型和存储模式,以便编译系统为它分配相应的存储单元。在C51中对变量进行定义的格式为:存储类型 数据类型 存储区 变量名1=初值,变量名2=初值,;或者 存储类型 存储区 数据类型 变量名1=初值,变量名2=初值,;3.3.1 变量存储类型与存储区存储类型仍沿用ANSI C的说法,C51变量有4种存储类型:动态存储(auto)、静态存储(static)、全局存储(extern)、寄存器存储(register)。动态存储的变量用auto定义,叫动态变量,

    33、也叫自动变量。其作用范围在定义它的函数内或复合语句内部。当定义它的函数或复合语句执行时,C51才为变量分配存储空间,结束时所占用的存储空间释放。定义变量时,auto可以省略,或者说如果省略了存储类型项,则认为是动态变量 在定义变量时,必须明确指出是存放在哪个区域。表3-3列出了Keil Cx51编译器所能识别的存储器类型变量的存储区域及范围。3.3 C51变量定义关键字对应的存储空间及范围codeROM 64KB全空间data片内RAM低128Bbdata片内RAM的位寻址区0 x200 x2f,可字节访问idata片内RAM256Bpdata片外RAM,分页寻址的256B(P2不变),P2改

    34、变可寻址64KB全空间xdata片外RAM 64KB全空间bit片内RAM位寻址区,位地址0 x000 x7f,128位表3-3 C51存储区与存储空间的对应关系下面列举几个C51变量定义的例子。(1)定义存储在data区域的动态unsigned char变量:unsigned char data sec=0,min=0,hou=0;(2)定义存储在data区域的静态unsigned int变量:static unsigned int data dd;(3)定义存储在idata区域的动态unsigned char数组:unsigned char idata temp20;(4)定义存储在cod

    35、e区域的unsigned char数组:unsigned char code dis_code10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/定义共阴极数码管段码数组3.3 C51变量定义3.3.2 变量的绝对定位C51有三种方式可以对变量(I/O端口)绝对定位:绝对定位关键字_at_、指针、库函数的绝对定位宏。在这里先介绍第一种。C51扩展的关键字_at_专门用于对变量作绝对定位,用在变量的定义中,其格式为:存储类型 数据类型 存储区 变量名1 _at_ 地址常数,变量名2,下面看几个使用_at_进行变量绝对定位

    36、的例子:(1)对data区域中的 unsigned char变量aa绝对定位到40H单元:unsigned char data aa _at_0 x40;(2)对pdata区域中的 unsigned int数组cc绝对定位到64H单元:unsigned int pdata cc6 _at_0 x64;(3)对xdata区域中的 unsigned char变量printer_port绝对定位到7FFFH单元:unsigned char xdata printer_port_at_0 x7fff;3.3 C51变量定义对变量的绝对定位需要注意以下几点:(1)绝对地址变量在定义时不能初始化,因此不能

    37、对code型变量绝对定位。(2)绝对地址变量只能够是全局变量,不能在函数中对变量绝对定位。(3)绝对地址变量多用于I/O端口,一般情况下不对变量作绝对定位。(4)位变量不能使用_at_绝对定位。3.3 C51变量定义3.3.3 C51位变量的定义1.bit型位变量常说的位变量指的就是bit型位变量。C51的bit型位变量定义的一般格式为:存储类型 bit 位变量名1=初值,位变量名2=初值,bit型位变量被保存在RAM中的位寻址区(字节地址为0 x200 x2f的16个存储单元)。例如:bit flag_run,receiv_bit=0;static bit send_bit;关于bit型位变

    38、量说明两点:(1)bit型位变量与其他变量一样,可以作为函数的形参,也可以作为函数的返回值,即函数的类型可以是位型的。(2)位变量不能定义指针,不能定义数组。2.sbit型位变量对于能够按位寻址的特殊功能寄存器,以及之前定义在位寻址区的变量(包括char型、int型、long int型),如果想对它们按位进行操作,则都需要使用sbit将其各位进行定义。3.3 C51变量定义1)特殊功能寄存器中位变量的定义能够按位寻址的特殊功能寄存器中位变量定义的一般格式:sbit位变量名位地址表达式 位地址在使用时有三种表达形式:直接位地址(00HFFH),如28H。特殊功能寄存器名带位号,如P13,表示P1

    39、口的第3位。字节地址带位号,如0 x900,表示90H单元的第0位。3.3 C51变量定义下面分别举例说明。(1)用直接位地址定义位变量:sbit P0_3=0 x83;/定义P0.3端口sbit P1_1=0 x91;/定义P1.1端口sbit RS0=0 xd3;/定义PSW的RS0位(2)用特殊功能寄存器名带位号定义位变量:sbit P0_3=P03;/定义P0.3端口sbit P1_1=P11;/定义P1.1端口sbit RS0=PSW3;/定义PSW的RS0位(3)用字节地址带位号定义位变量:sbit P0_3=0 x803;/定义P0.3端口sbit P1_1=0 x901;/定义

    40、P1.1端口sbit RS0=0 xd03;/定义PSW的RS0位3.3 C51变量定义几点说明:用sbit定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。用sbit定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。用sbit每次只能定义一个位变量。对其他模块定义的位变量(bit型或 sbit型)的引用声明,都使用bit。用sbit定义的是一种绝对定位的位变量,具有确定的位地址和特定的意义,在应用时不能像bit型位变量那样随便使用。3.3 C51变量定义2)位寻址区变量的位定义bdata型变量被保存在RAM中的位寻址区,访问时既可以执行字节操作,也可以执行

    41、位操作。在执行位操作前必须先对bdata型变量的各位进行位变量定义。定义格式为:sbit 位变量名bdata型变量名位号 例如,在之前已经定义了一个bdata型变量operate:unsigned char bdata operate,现在要对operate的低4位再作位变量定义,方法如下:sbit flag_key=operate0;/键盘标志位sbit flag_dis=operate1;/显示标志位sbit flag_mus=operate2;/音乐标志位sbit flag_run=operate3;/运行标志位3.3 C51变量定义【例3-1】在片内RAM的30H3FH单元存放着16个

    42、无符号字节数据,需要编写程序计算这16个数的和,请根据任务完成变量定义。解:unsigned char data xx16 _at_ 0 x30;unsigned char i;unsigned int data he;【例3-2】片内RAM的30H单元内存放着一个有符号二进制数变量X,其函数Y与变量X的关系为:X+5 X20Y=0 20X10-5 X10需要编写程序,根据变量值,将其对应的函数值送入31H中。请根据任务完成变量定义。解:signed char data x _at_ 0 x30;signed int data y _at_ 0 x31;3.3 C51变量定义3.3.4 C51

    43、特殊功能寄存器的定义在C51中,所有特殊功能寄存器在使用时都必须先进行定义。1)8位sfr特殊功能寄存器定义一般格式为:sfr特殊功能寄存器名字节地址例如:sfrP0=0 x80;/定义P0口寄存器sfrP1=0 x90;/定义P1口寄存器sfrPSW=0 xd0;/定义PSWsfrIE=0 xa8;/定义IE 2)16位sfr特殊功能寄存器定义一般格式为:sfr16 特殊功能寄存器名字节地址51单片机中的16位特殊功能寄存器只有一个,就是DPTR,字节地址是0 x82,所以定义方法为:sfr16 DPTR=0 x82;在实际应用中,单片机所有的特殊功能寄存器都已经在reg51.h、reg52

    44、.h等头文件中做了定义,编程时把头文件用预处理命令添加进工程文件即可。例如:#include 3.3 C51变量定义3.3.5 C51指针的定义C51的编译器支持两种指针类型:通用指针和不同存储区域的专用指针。(1)通用指针就是通过该类指针可以访问所有的存储空间。在C51库函数中通常使用这种指针来访问。通用指针的定义与一般C语言指针的定义相同,其格式为:存储类型 数据类型 *指针名1,*指针名2,例如:unsigned char *cpt,*dpt;/定义通用指针变量cpt,dpt通用指针具有较好的兼容性,但运行速度较慢,在存储器中需要占用三个字节。(2)存储器专用指针就是通过该类指针,只能够

    45、访问规定的存储空间区域。存储器专用指针的一般定义格式为:存储类型 数据类型 指向存储区*指针存储区 指针名1,*指针存储区 指针名2,其中,指向存储区是指针变量所指向的数据存储空间区域,不能够缺省。例如:unsigned char pdata*xdata ppt;/在xdata区定义指向pdata区的专用指针变量unsigned char code*data ccpt;/在data区定义指向code区的专用指针变量ccptunsigned char data*cpt1,*cpt2;/定义指向data区的专用指针变量cpt1,cpt2signed long xdata*lpt1,*lpt2;/定

    46、义指向xdata区的专用指针变量lpt1,lpt23.3 C51变量定义3.3.6 指针的应用下面介绍两种利用指针访问存储区的方法。1.通过指针定义的宏访问存储器通过指针定义的宏访问存储器1)访问存储器宏的原型在C51的库函数中定义了访问存储器宏的原型,这些原型分为两组。(1)按字节访问存储器的宏:#define CBYTE(unsigned char volatile code*)0)#define DBYTE(unsigned char volatile data*)0)#define PBYTE(unsigned char volatile pdata*)0)#define XBYTE(

    47、unsigned char volatile xdata*)0)(2)按整型双字节访问存储器的宏:#define CWORD(unsigned int volatile code*)0)#define DWORD(unsigned int volatile data*)0)#define PWORD(unsigned int volatile pdata*)0)#define XWORD(unsigned int volatile xdata*)0)宏定义原型中不含idata型,不能访问片内RAM高128B区域(0 x800 xff),需要时可以自己定义。这些宏定义原型放在absacc.h文件

    48、中,使用时需要用预处理命令把该头文件包含到文件中,形式为:#include 3.3 C51变量定义2)访问存储器宏的应用用宏定义访问存储器的形式类似于数组,分为两种。(1)按字节访问存储器宏。按字节访问存储器宏。形式为:宏名宏名地址地址数组中的下标就是存储器的地址,使用起来非常简单。例如:DBYTE0 x30=48;/给片内RAM的30H单元送数据48XBYTE0 x0002=0 x36;/给片外RAM的0002H单元送数据0 x36dis_buf0=CBYTETABLE+5;/从CODE区读取常数表中的数据3.3 C51变量定义(2)按整型数访问存储器宏。按整型数访问存储器宏。形式为:宏名宏

    49、名下标下标整型数占两个字节,下标与存储单元地址的关系为:存储单元地址=下标2例如:DWORD0 x20=0 x1234;/给片内RAM的40H、41H单元送数据0 x1234XWORD0 x0002=0 x5678;/给片外RAM的0004H、0005H单元送数据0 x56783.3 C51变量定义2.通过专用指针直接访问存储器通过专用指针直接访问存储器在C51中,只要定义好了指针变量,并且给指针变量赋地址值,就可以使用指针直接访问存储单元。例如:unsigned char xdata*xcpt;/定义指向xdata区的指针变量xcptxcpt=0 x2000;/给指针变量赋地址值0 x200

    50、0*xcpt=123;/将数据123送入指针指向的存储单元中xcpt+;/指针指向下一单元*xcpt=234;/继续送数3.3 C51变量定义【例3-3】编写程序,将单片机片外数据存储器中地址从0 x2000开始16个字节数据传送到片内数据存储器地址从0 x40开始的区域。解:unsigned char data i,*dcpt;unsigned char xdata*xcpt;/定义指针变量dcpt=0 x40;/给指针赋地址xcpt=0 x2000;for(i=0;i、=、X、X=(X+1)前一关系表达式结果为1,后一关系表达式结果为0。3.5 C51中的运算符和表达式5、逻辑运算符逻辑运

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:配套课件-《MCS-51单片机技术项目驱动教程》.ppt
    链接地址:https://www.163wenku.com/p-5196960.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库