51单片机及其应用课件.ppt
51单片机及其应用11.1电电子子计计算机的算机的发发展概述展概述v1.1.1 1.1.1 电电子子计计算机的算机的问问世及其世及其经经典典结结构构1946年年2月月15日日,第一台电子数字第一台电子数字计算机问世,这计算机问世,这标志着计算机时标志着计算机时代的到来。代的到来。(CALCULATOR)ENIAC(“埃尼阿克埃尼阿克”)2与现代的计算机相比,有许多不足,但与现代的计算机相比,有许多不足,但它它的问世开创了计算机科学技术的新纪元,的问世开创了计算机科学技术的新纪元,对对人类的生产和生活方式产生了巨大的影响人类的生产和生活方式产生了巨大的影响。ENIAC是电子管计算机,时钟频率仅有是电子管计算机,时钟频率仅有100KHz,但能在,但能在1秒钟的时间内完成秒钟的时间内完成5000次加法次加法运算。运算。3匈匈牙牙利利籍籍数数学学家家冯冯诺诺依依曼曼在在方方案案的的设设计计上上做做出出了了重重要要的的贡贡献献。1946年年6月月,他他又又提提出出了了“程程序序存存储储”和和“二二进进制制运运算算”的的思思想想,进进一一步步构构建建了了计计算算机机由由运运算算器器、控控制制器器、存存储储器器、输输入入设设备备和和输出设备组成输出设备组成这一计算机的经典结构。这一计算机的经典结构。(EDVAC-ELECTRONIC DISCRETE VARIABLE AUTOMATIC COMPUTER)4电电子子计计算算机机技技术术的的发发展,相继经历了五个时代:展,相继经历了五个时代:电子管计算机;电子管计算机;晶体管计算机;晶体管计算机;集成电路计算机;集成电路计算机;大规模集成电路计算机;大规模集成电路计算机;超大规模集成电路计算机。超大规模集成电路计算机。计计算算机机的的结结构构仍仍然然没没有有突突破破冯冯诺诺依依曼曼提提出的计算机的经典结构框架。出的计算机的经典结构框架。5二、微型计算机的应用形态二、微型计算机的应用形态从应用形态上,微机可以分成三种:从应用形态上,微机可以分成三种:多板机(系统机)多板机(系统机)将将CPU、存储器、存储器、I/O接口电路和总线接接口电路和总线接口等组装在一块主机板(即微机主板)。各口等组装在一块主机板(即微机主板)。各种适配板卡插在主机板的扩展槽上并与电源、种适配板卡插在主机板的扩展槽上并与电源、软软/硬盘驱动器及光驱等装在同一机箱内,再硬盘驱动器及光驱等装在同一机箱内,再配上系统软件,就构成了一台完整的微型计配上系统软件,就构成了一台完整的微型计算机系统(简称系统机)。算机系统(简称系统机)。工业工业PC机机也属于多板机。也属于多板机。6 单板机单板机将将CPU芯片、芯片、存储器存储器芯片、芯片、I/O接口接口芯片芯片和简单的和简单的I/O设备设备(小键盘、(小键盘、LED显示器)等显示器)等装配在一块印刷电路板上,再配上装配在一块印刷电路板上,再配上监控程序监控程序(固化在(固化在ROM中),就构成了一台单板微型中),就构成了一台单板微型计算机(简称单板机)。计算机(简称单板机)。单单板机板机7单单板板机机的的I/O设设备备简简单单,软软件件资资源源少少,使使用用不不方方便便。早早期期主主要要用用于于微微型型计计算算机机原原理理的的教教学学及及简简单单的测控系统的测控系统,现在已很少使用。,现在已很少使用。8 单片机单片机在一片集成电路芯片上集成微处理器、存储器、在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了接口电路,从而构成了单芯片微型计算机,即单芯片微型计算机,即单片机单片机。三种应用形态的比较三种应用形态的比较:单单板机板机单单片机片机系系统统机(多板机)机(多板机)9系系统统机机(桌桌面面应应用用)属属于于通通用用计计算算机机,主主要要应应用用于于数数据据处处理理、办办公公自自动动化化及及辅辅助助设计。设计。单单片片机机(嵌嵌入入式式应应用用)属属于于专专用用计计算算机机,主主要要应应用用于于智智能能仪仪表表、智智能能传传感感器器、智智能能家家电电、智智能能办办公公设设备备、汽汽车车及及军军事事电电子子设设备等应用系统。备等应用系统。单单片片机机体体积积小小、价价格格低低、可可靠靠性性高高,其其非非凡凡的的嵌嵌入入式式应应用用形形态态对对于于满满足足嵌嵌入入式式应应用需求具有独特的优势。用需求具有独特的优势。101.2单单片机的片机的发发展展过过程及程及产产品近况品近况1.2.1 1.2.1 单单片机的片机的发发展展过过程程 单单片机技片机技术发术发展展过过程可分程可分为为三个主要三个主要阶阶段:段:单单芯片微机形成芯片微机形成阶阶段段1976年,年,Intel公司推出了公司推出了MCS-48系列系列单单片片机机。8位位CPU、1K字字节节ROM、64字字节节RAM、27根根I/O线线和和1个个8位定位定时时/计计数器数器。特点是特点是:存:存储储器容量器容量较较小,小,寻寻址范址范围围小(不小(不大于大于4K),无串行接口,指令系),无串行接口,指令系统统功能不功能不强强。11 性能完善提高阶段性能完善提高阶段1980年,年,Intel公司推出了公司推出了MCS-51系列单系列单片机:片机:8位位CPU、4K字节字节ROM、128字节字节RAM、4个个8位并口、位并口、1个全双工串行口、个全双工串行口、2个个16位定时位定时/计数器。寻址范围计数器。寻址范围64K,并有控,并有控制功能较强的布尔处理器。制功能较强的布尔处理器。特点是特点是:结构体系完善,性能已大大提高,:结构体系完善,性能已大大提高,面向控制的特点进一步突出。现在,面向控制的特点进一步突出。现在,MCS-51已成为公认的单片机经典机种已成为公认的单片机经典机种。12 微控制器化阶段微控制器化阶段 特点是特点是:片内面向测控系统外围电路增强,:片内面向测控系统外围电路增强,使单片机可以方便灵活地用于复杂的自动测控使单片机可以方便灵活地用于复杂的自动测控系统及设备。系统及设备。“微控制器微控制器”的称谓更能反应单片机的本质的称谓更能反应单片机的本质。1982年,年,Intel推出推出MCS-96系列单片机。系列单片机。芯片内集成:芯片内集成:16位位CPU、8K字节字节ROM、232字节字节RAM、5个个8位并口、位并口、1个全双工串行口、个全双工串行口、2个个16位定时位定时/计数器。寻址范围计数器。寻址范围64K。片上还有。片上还有8路路10位位ADC、1路路PWM输出及高速输出及高速I/O部件等。部件等。131.2.2 1.2.2 单单片机片机产产品近况品近况 ATMELATMEL公司融入公司融入FlashFlash存存储储器技器技术术的的AT89AT89系列;系列;PhilipsPhilips公司的公司的80C5180C51、80C55280C552系列;系列;华华邦公司的邦公司的W78C51W78C51、W77C51W77C51高速低价高速低价系列;系列;ADIADI公司的公司的ADC8xxADC8xx高精度高精度ADCADC系列;系列;LGLG公司的公司的GMS90/97GMS90/97低低压压高速高速系列;系列;MaximMaxim公司的公司的DS89C420DS89C420高速(高速(50MIPS50MIPS)系列;系列;CygnalCygnal公司的公司的C8051FC8051F系列高速系列高速SOCSOC单单片机。片机。80C5180C51系列系列单单片机片机产产品繁多,品繁多,主流地位已主流地位已经经形成,形成,近年来推出的近年来推出的与与80C5180C51兼容兼容的主要的主要产产品有:品有:14非非80C51结构单片机新品结构单片机新品不断推出,给用不断推出,给用户提供了更为广泛的选择空间户提供了更为广泛的选择空间,近年来推出的,近年来推出的非非80C51系列的主要产品有:系列的主要产品有:Intel的的MCS-96系列系列16位单片机位单片机;Microchip的的PIC系列系列RISC单片机单片机;TI的的MSP430F系列系列16位位低功耗低功耗单片机单片机。151.3单单片机的特点及片机的特点及应应用用领领域域1.3.1 1.3.1 单单片机的特点片机的特点 近期推出的近期推出的单单片机片机产产品,内部集成有高速品,内部集成有高速I/OI/O口、口、ADCADC、PWMPWM、WDTWDT等部件,并在低等部件,并在低电压电压、低功耗、串行、低功耗、串行扩扩展展总线总线、控制网、控制网络总线络总线和开和开发发方式(如在系方式(如在系统编统编程程ISPISP)等方面都有了)等方面都有了进进一步的增一步的增强强。控制性能和可靠性高控制性能和可靠性高 实时实时控制功能特控制功能特别别强强,其,其CPUCPU可以可以对对I/OI/O端口直接端口直接进进行操作,行操作,位操作能力位操作能力更是其它更是其它计计算机无法比算机无法比拟拟的。的。另外,由于另外,由于CPUCPU、存、存储储器及器及I/OI/O接口接口集成在同一芯片集成在同一芯片内内,各部件,各部件间间的的连连接接紧紧凑,数据在凑,数据在传传送送时时受干受干扰扰的的影响影响较较小小,且不易受,且不易受环环境条件的影响,所以境条件的影响,所以单单片机片机的的可靠性非常高可靠性非常高。16体积小、价格低、易于产品化体积小、价格低、易于产品化单片机芯片即是一台完整的微型计算机单片机芯片即是一台完整的微型计算机,对于批量大的专用场合,一方面可以在众多对于批量大的专用场合,一方面可以在众多的单片机品种间进行匹配选择;同时还可以的单片机品种间进行匹配选择;同时还可以专门进行芯片设计,使芯片的功能与应用具专门进行芯片设计,使芯片的功能与应用具有良好的对应关系;在单片机产品的引脚封有良好的对应关系;在单片机产品的引脚封装方面,有的单片机引脚已减少到装方面,有的单片机引脚已减少到8个或更少。个或更少。从而使应用系统的从而使应用系统的印制板减小、接插件减印制板减小、接插件减少、安装简单方便。少、安装简单方便。171.3.2 1.3.2 单单片机的片机的应应用用领领域域 智能智能仪仪器器仪仪表表 单单片机用于各种片机用于各种仪仪器器仪仪表,一方面提表,一方面提高了高了仪仪器器仪仪表的使用功能和精度,使表的使用功能和精度,使仪仪器器仪仪表智能化,同表智能化,同时还简时还简化了化了仪仪器器仪仪表表的硬件的硬件结结构,从而可以方便地完成构,从而可以方便地完成仪仪器器仪仪表表产产品的升品的升级换级换代。如代。如各种智能各种智能电电气气测测量量仪仪表、智能表、智能传传感器感器等。等。18机电一体化产品机电一体化产品机电一体化产品是集机械技术、微电机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一子技术、自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以单片机在机电一体化产品的开发中可以发挥巨大的作用。发挥巨大的作用。典型产品如机器人、典型产品如机器人、数控机床、自动包装机、点钞机、医疗数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复印机设备、打印机、传真机、复印机等。等。19实时工业控制实时工业控制单片机还可以用于各种物理量的采集单片机还可以用于各种物理量的采集与控制。电流、电压、温度、液位、流与控制。电流、电压、温度、液位、流量等物理参数的采集和控制均可以利用量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利单片机方便地实现。在这类系统中,利用单片机作为系统控制器,可以根据被用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效实现期望的控制指标,从而提高生产效率和产品质量。典型应用如率和产品质量。典型应用如电机转速控电机转速控制、温度控制、自动生产线制、温度控制、自动生产线等等。20分布式系统的前端模块分布式系统的前端模块在较复杂的工业系统中,经常要采在较复杂的工业系统中,经常要采用分布式测控系统完成大量的分布参数用分布式测控系统完成大量的分布参数的采集。在这类系统中,采用单片机作的采集。在这类系统中,采用单片机作为分布式系统的前端采集模块,系统具为分布式系统的前端采集模块,系统具有有运行可靠,数据采集方便灵活,成本运行可靠,数据采集方便灵活,成本低廉低廉等一系列优点。等一系列优点。21家用电器家用电器家用电器是单片机的又一重要应用家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。备、高档玩具等。另外,在交通领域中,汽车、火车、另外,在交通领域中,汽车、火车、飞机、航天器等均有单片机的广泛应飞机、航天器等均有单片机的广泛应用。如汽车自动驾驶系统、航天测控用。如汽车自动驾驶系统、航天测控系统、黑匣子等系统、黑匣子等。222.1 80C512.1 80C51系列概述系列概述2.1.1 MCS-512.1.1 MCS-51系列系列 (1 1)MCS-51MCS-51是是IntelIntel公司生公司生产产的一个的一个单单片片机系列名称。属于机系列名称。属于这这一系列的一系列的单单片机有多种,片机有多种,如:如:8051/8751/80318051/8751/8031;8052/8752/80328052/8752/8032;80C51/87C51/80C3180C51/87C51/80C31 80C52/87C52/80C3280C52/87C52/80C32等等。23(2)该系列生产工艺有两种:)该系列生产工艺有两种:CHMOS是是CMOS和和HMOS的的结结合合,既既保保持持了了HMOS高高速速度度和和高高密密度度的的特特点点,还还具具有有CMOS的的低低功功耗耗的的特特点点。在在产产品品型型号号中中凡凡带带有有字字母母“C”的的即即为为CHMOS芯芯片片,CHMOS芯芯片片的的电电平平既既与与TTL电电平平兼兼容容,又又与与CMOS电平兼容。电平兼容。一一是是HMOS工工艺艺(高高密密度度短短沟沟道道MOS工工艺艺)。二二是是CHMOS工工艺艺(互互补补金金属属氧氧化化物物的的HMOS工艺)。工艺)。24(3)在功能上,该系列单片机有基本型)在功能上,该系列单片机有基本型和增强型两大类:和增强型两大类:增强型增强型:8052/8752/803280C52/87C52/80C32基本型基本型:8051/8751/803180C51/87C51/80C3125(4)在在片片内内程程序序存存储储器器的的配配置置上上,该该系系列列单单片片机机有有三三种种形形式式,即即掩掩膜膜ROM、EPROM和和ROMLess(无无片片内内程序存储器程序存储器)。如:。如:80C51有有4K字节的掩膜字节的掩膜ROM;87C51有有4K字节的字节的EPROM;80C31在芯片内无程序存储器。在芯片内无程序存储器。262.1.2 80C512.1.2 80C51系列系列Intel的的:80C31、80C51、87C51,80C32、80C52、87C52等;等;ATMEL的:的:89C51、89C52、89C2051等;等;Philips、华华邦、邦、Dallas、Siemens(Infineon)等公司的等公司的许许多多产产品品。80C51是是MCS-51系系列列中中CHMOS工工艺艺的的一一个个典典型型品品种种;其其它它厂厂商商以以8051为为基基核核开开发发出出的的CMOS工工艺艺单单片片机机产产品品统统称称为为80C51系系列列。当当前前常常用用的的80C51系系列列单单片片机机主主要要产产品有:品有:272.1.3 80C512.1.3 80C51典型典型产产品品资资源配置源配置28学单片机需要具备的条件学单片机需要具备的条件v与以前所学的知识关联很少;与以前所学的知识关联很少;v对器件的概念基本上是从对器件的概念基本上是从0开始;开始;v如果要用如果要用C语言编程,需具备一定的语言编程,需具备一定的C语言基语言基础;础;v所有人都站在了同一起跑线上;所有人都站在了同一起跑线上;29v#includevunsignedcharFlag=0 x3f;vmain()vvP1=0 x55;While(1)if(Flag=0)Flag=0 x3f;P1=P1;v30v org0000hv jmpmainv org0100hvmain:movp1,#55hvamain:mov r0,#3fhvloop:djnzr0,loopv cplav movp1,av jmpamainv end318位位CPU4kbytes程序存储器程序存储器(ROM)(52为为8K)256bytes的数据存储器的数据存储器(RAM)(52有有384bytes的的RAM)32条条I/O口线口线111条指令,大部分为单字节指令条指令,大部分为单字节指令21个专用寄存器个专用寄存器2.2.2单片机的主要功能单片机的主要功能32v2个可编程定时个可编程定时/计数器计数器5个中断源,个中断源,2个优先级个优先级(52有有6个)个)一个全双工串行通信口一个全双工串行通信口外部数据存储器寻址空间为外部数据存储器寻址空间为64kB外部程序存储器寻址空间为外部程序存储器寻址空间为64kB逻辑操作位寻址功能逻辑操作位寻址功能双列直插双列直插40PinDIP封装封装单一单一+5V电源供电电源供电332.3.2 80C512.3.2 80C51的引脚封装的引脚封装总线型总线型非总线型非总线型3435vCPU:由运算和控制逻辑组成,同时还包括:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;中断系统和部分外部特殊功能寄存器;vRAM:用以存放可以读写的数据,如运算的:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;中间结果、最终结果以及欲显示的数据;vROM:用以存放程序、一些原始数据和表格;:用以存放程序、一些原始数据和表格;vI/O口:四个口:四个8位并行位并行I/O口,既可用作输入,口,既可用作输入,也可用作输出;也可用作输出;vT/C:两个定时:两个定时/记数器,既可以工作在定时记数器,既可以工作在定时模式,也可以工作在记数模式;模式,也可以工作在记数模式;36v五个中断源的中断控制系统;五个中断源的中断控制系统;v一个全双工一个全双工UART(通用异步接收发送器)(通用异步接收发送器)的串行的串行I/O口,用于实现单片机之间或单片机口,用于实现单片机之间或单片机与微机之间的串行通信;与微机之间的串行通信;v片内振荡器和时钟产生电路,石英晶体和微片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为调电容需要外接。最高振荡频率为12M。37单片机最小系统38vP0P3:通用:通用I/O口;口;vVCC:电源端,一般接:电源端,一般接5V;vGND:电源地;:电源地;vXTAL1,XTAL2:外接晶体振荡器,不能超:外接晶体振荡器,不能超过过24M;需加微调电容,一般为;需加微调电容,一般为30pF;vRST/VPD:复位端,平时为低电平;:复位端,平时为低电平;vALE/PROG:地址锁存允许信号端;:地址锁存允许信号端;vEA/Vpp:外部程序存储器地址允许输入端:外部程序存储器地址允许输入端/固化编程电压输入端;固化编程电压输入端;392.2.4控制器控制器1.时钟电路时钟电路(a)内部时钟电路;(b)HMOS型外部振荡源 (C)CHMOS型外部振荡源 40单片机工作的基本时序单片机工作的基本时序v.机器周期和指令周期机器周期和指令周期v(1)振荡周期振荡周期:也称时钟周期也称时钟周期,是指为单片机提是指为单片机提供时钟脉冲信号的振荡源的周期。供时钟脉冲信号的振荡源的周期。v(2)状态周期状态周期:每个状态周期为时钟周期的每个状态周期为时钟周期的2倍倍,是振荡周期经二分频后得到的。是振荡周期经二分频后得到的。v(3)机器周期机器周期:一个机器周期包含一个机器周期包含6个状态周个状态周期期S1S6,也就是也就是12个时钟周期。个时钟周期。在一个机器周期在一个机器周期内内,CPU可以完成一个独立的操作。可以完成一个独立的操作。v(4)指令周期指令周期:它是指它是指CPU完成一条操作所需完成一条操作所需的全部时间。的全部时间。每条指令执行时间都是有一个或几个每条指令执行时间都是有一个或几个机器周期组成。机器周期组成。MCS-51系统中系统中,有单周期指令、有单周期指令、双周期指令和四周期指令。双周期指令和四周期指令。411.时钟电路引脚:XTAL1:接外部晶振和微调电容的一端,在单片机内部,它是构成片内振荡器的反向放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部振荡器的输入端。XTAL2:接外部晶振和微调电容的另一端,在单片机内部,它是构成片内振荡器的反向放大器的输出端。当采用外部振荡器时,此引脚应悬空。42v2.控制信号引脚控制信号引脚:vRST/VPD:RST是复位信号输入端,高电平有效。当是复位信号输入端,高电平有效。当此输入端保持此输入端保持2个机器周期的高电平时,就可以完成个机器周期的高电平时,就可以完成复位操作。复位操作。RST引脚的第二功能是备用电源的输入引脚的第二功能是备用电源的输入端。端。上电复位按键复位43vALE/PROG:(AddressLatchEnable/Programming)当单片机上电正常工作后,当单片机上电正常工作后,ALE引脚不断向外输出正弦脉冲信号,此频引脚不断向外输出正弦脉冲信号,此频率为振荡器频率的率为振荡器频率的1/6。CPU访问外部存储器访问外部存储器时,时,ALE作为锁存低作为锁存低8位地址的控制信号。此位地址的控制信号。此引脚的第二功能引脚的第二功能PROG作为作为8751编程脉冲输编程脉冲输入端使用。入端使用。44vPSEN:(ProgramStoreEnable)在访问片外存储在访问片外存储器时,此端定时输出负脉冲作为片外存储器的选通器时,此端定时输出负脉冲作为片外存储器的选通信号。信号。vEA/VPP:(EnableAddress/VoltagePulseOfProgramming)当当EA接高电平时,接高电平时,CPU访问片内访问片内ROM,并执行内部程序存储器中的指令,但当,并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过(程序计数器)的值超过4K时,将自动转去执时,将自动转去执行片外存储器内的程序。当行片外存储器内的程序。当EA脚接低电平时,脚接低电平时,CPU只访问片外只访问片外ROM并执行外部程序存储器中的指令,并执行外部程序存储器中的指令,而不管是否有片内程序存储器。而不管是否有片内程序存储器。VPP是对是对8751片内片内ROM固化程序时,作为施加较高编程电压固化程序时,作为施加较高编程电压(12V21V)的输入端。)的输入端。45v3.输入输出引脚:v P0P3:4个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。4个端口都可以做输入输出口使用,其中,P0和P2通常用于对外部存储器的访问。在这种方式下,把P0口作为地址/数据总线使用,分时输出外部存储器的地址和传送8位数据。当扩充外部存储器的地址为16位时,P2口作为地址总线的高8位地址使用。46KEIL C51的应用vC语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。47C C语言作为一种非常方便的语言而得到广泛的支持,语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是国内最通用的是KeilKeil C51.C51.C C语言程序本身不依赖于机器硬件系统,基本上不语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。作修改就可将程序从不同的单片机中移植过来。C C提供了很多数学函数并支持浮点运算,开发效率提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护高,故可缩短开发时间,增加程序可读性和可维护性。性。C-51 C-51的特点的特点48C-51C-51与与ASM-51ASM-51相比,有如下优点:相比,有如下优点:1.1.对单片机的指令系统不要求了解,仅要求对单片机的指令系统不要求了解,仅要求对对8051 8051 的存贮器结构有初步了解;的存贮器结构有初步了解;2.2.寄存器分配、不同存贮器的寻址及数据类寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;型等细节可由编译器管理;3.3.程序有规范的结构,可分成不同的函数,程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;这种方式可使程序结构化;4.4.具有将可变的选择与特殊操作组合在一起具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;的能力,改善了程序的可读性;5.5.提供的库包含许多标准子程序,具有较强提供的库包含许多标准子程序,具有较强的数据处理能力;的数据处理能力;6.6.由于具有方便的模块化编程技术,使已编由于具有方便的模块化编程技术,使已编好程序可容易地移植;好程序可容易地移植;49C51存储类型存储类型寻址空间数据长度 值域范围data片内直接寻址 RAM80127idata片内间接寻址 RAM80255pdata分页寻址片外 RAM8025550存储类型寻址空间数据长度值域范围xdata片外数据存储(64K)16065535code片内统一编址ROM(64K)16065535bdata片内可位寻址的RAM(16byet)1012751vC51的数据声明的一般格式如下v类型说明符修饰符 标识符=初值v例如:unsigned char code Flag=0 x0f;就是声明一个无符号的char型变量Flag,并给他赋初值为0 x0f;并且声明他所在的存储空间在片内统一编址的ROM中。v声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内RAM中。52 C C5151的程序结构的程序结构 与一般与一般C C语言的结构相同,以语言的结构相同,以main()main()函数为程序人函数为程序人口,程序体中包含若干语句还可以包含若干函数。口,程序体中包含若干语句还可以包含若干函数。C C5151函数的一般格式函数的一般格式 类型类型 函数名(参数表)函数名(参数表)数据说明部分数据说明部分 语句执行部分语句执行部分 53 C C5151的数据类型的数据类型基本数据类型基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsigned char8025554C C语言中的基本数据类型语言中的基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsigned char8025555(续续)C C5151的数据类型的数据类型扩充定义扩充定义sfrsfr:特殊功能寄存器特殊功能寄存器声明声明sfr16:sfr16:sfrsfr的的1616位数据声明位数据声明sbitsbit:特殊功能位声明特殊功能位声明bitbit:位变量声明位变量声明例:例:sfrsfr SCON=0X98;SCON=0X98;sfr16 T2=0 xCC;sfr16 T2=0 xCC;sbitsbit OV=PSW2;OV=PSW2;56 C-51 C-51数据的存储类型数据的存储类型名名 存储空间位置存储空间位置 长度长度 数据范围数据范围 data data 直接寻址片内直接寻址片内RAM 8RAM 8位位 0 0255 255 bdatabdata 可位寻址片内可位寻址片内RAM 1RAM 1位位 0/10/1idataidata 间接寻址片内间接寻址片内RAM 8RAM 8位位 0 0255255pdatapdata 片外页片外页RAM 8RAM 8位位 0 0255255xdataxdata 片外片外RAM 16RAM 16位位 0 06553565535code code 程序程序ROM 16ROM 16位位 0 0655356553557 C-51 C-51数据的存储类型数据的存储类型(续续)例:例:数据类型数据类型 存储类型存储类型 变量变量charchar datadata var1;var1;bitbit datadata flags;flags;unsigned charunsigned char xdataxdata vextor10;vextor10;C-51 C-51数据的存储类型数据的存储类型58 C-51 C-51的的包含的头文件包含的头文件通常有通常有:reg51.h math.h reg51.h math.h ctype.hctype.h stdio.hstdio.h stdlib.hstdlib.h absacc.habsacc.h常用有常用有:reg51.h reg51.h (定义特殊功能寄存器和定义特殊功能寄存器和位寄存器);位寄存器);math.hmath.h (定义常用数学运算);定义常用数学运算);59 C-51 C-51的运算符的运算符与与C C语言基本相同:语言基本相同:+-*/+-*/(加(加 减减 乘乘 除)除)=(位右移(位右移 位左移)位左移)&|&|(按位与按位与 按位或按位或)(按位异或按位异或 按位取反按位取反)60 C-51 C-51的基本语句的基本语句与与标准标准C C语言基本相同:语言基本相同:if if 选择语言选择语言 switch/caseswitch/case 多分支选择语言多分支选择语言 whilewhile 循环语言循环语言 do-while do-while 循环语言循环语言 for for 循环语言循环语言61 中断服务程序中断服务程序函数名()函数名()interrupt ninterrupt n I/O I/O口定义口定义#include#include#define#define protprot xbyte0 x1000 xbyte0 x1000或或用指针定义用指针定义62例:例:清零程序清零程序 (将将2000H20FFH2000H20FFH的内容清零的内容清零)汇编语言程序汇编语言程序 ORG 0000HORG 0000HSE01:MOV R0,#00H SE01:MOV R0,#00H MOV DPTR,#2000H MOV DPTR,#2000H ;(0000H);(0000H)送送DPTRDPTRLOO1:CLR ALOO1:CLR A MOVX MOVX DPTR,A DPTR,A ;0;0送送(DPTR)(DPTR)INC DPTR INC DPTR ;DPTR+1;DPTR+1 INC R0 INC R0 ;字节数加字节数加1 1 CJNE R0,#00H,LOO1 CJNE R0,#00H,LOO1;不到不到FFFF个字节再清个字节再清LOOP:SJMP LOOPLOOP:SJMP LOOP63清零程序清零程序 (将将2000H20FFH2000H20FFH的内容清零的内容清零)C C5151程序程序#include#include main()main()intint i;i;unsigned char unsigned char xdataxdata*p=0 x2000;*p=0 x2000;/*/*指针指向指针指向2000H2000H单元单元*/for(ifor(i=0;i256;i+)=0;i256;i+)*p=0;p+;*p=0;p+;/*/*清零清零2000H-20FFH2000H-20FFH单元单元*/64 汇编语言程序汇编语言程序 ORG 0000HORG 0000HL00:MOV R0,#10H L00:MOV R0,#10H ;查找查找1616个字节个字节 MOV R1,#00HMOV R1,#00H MOV DPTR,#2000H MOV DPTR,#2000HL11:MOVX A,DPTRL11:MOVX A,DPTR CJNE A,#00H,L16 CJNE A,#00H,L16;取出内容与取出内容与00H00H相等吗相等吗?INC R1 INC R1 ;取出个数加取出个数加1 1L16:INC DPTRL16:INC DPTR DJNZ R0,L11 DJNZ R0,L11 ;未完继续未完继续 MOV DPTR,#2100HMOV DPTR,#2100H MOV A,R1 MOV A,R1 MOVX DPTR,A MOVX DPTR,A ;相同数个数送相同数个数送2100H2100HL1E:SJMP L1EL1E:SJMP L1E例:查找零的个数例:查找零的个数(在(在2000H-200FH2000H-200FH中查出有几个中查出有几个字字 节是零,把个数放在节是零,把个数放在2100H2100H单元中)单元中)65查找零的个数查找零的个数C C5151程序程序#include#include main()main()unsigned char unsigned char xdataxdata*p=0 x2000*p=0 x2000;/*;/*指针指针p p指向指向2000H2000H单元单元*/intint n=0,i;n=0,i;for(i=0;i16;i+)for(i=0;i16;i+)if(*p=0)n+;if(*p=0)n+;/*/*若该单元内容为零,则若该单元内容为零,则n+1*/n+1*/p+;p+;/*/*指针指向下一单元指针指向下一单元 */p=0 x2100;p=0 x2100;/*/*指针指针p p指向指向2100H2100H单元单元*/*p=n;*p=n;/*/*把个数放在把个数放在2100H2100H单元中单元中*/66KEIL的使用v掌握KEIL工程的建立和软件的开发;v掌握KEIL中软件仿真的基本应用;67