单片机原理与应用(C语言版)_第1页
单片机原理与应用(C语言版)_第2页
单片机原理与应用(C语言版)_第3页
单片机原理与应用(C语言版)_第4页
单片机原理与应用(C语言版)_第5页
已阅读5页,还剩262页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用

(第1章)1.1单片机的基本概念单片机:单片机是把微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成在一块芯片上形成的单片计算机,因此被称为单片微型计算机,简称为单片机。注意区分:单板机单片机多板机第1章单片机概述

1.2单片机的发展4位单片机8位单片机

16位单片机32位单片机

第1章单片机概述1.3单片机的主要特点及应用1.3.1单片机的特点在存储器结构上,存储器采用哈佛(Harvard)结构在芯片引脚上,大部主要特分采用分时复用技术在内部资源访问上,通过采用特殊功能寄存器(SFR)在指令系统上,采用面向控制的指令系统一般都集成有全双工的串行接口有很强的外部扩展能力1.3.2单片机的主要应用单片机的优点:体积小、功耗低、面向控制、可靠性高、价格低廉、可以方便地实现多机和分布式控制等第1章单片机概述单片机的应用领域

工业测控:如机床、汽车、锅炉、温度控制系统、自动报警系统、生产自动化等。智能设备:如智能仪器、数字示波器、医疗器械等。家用电器:如全自动洗衣机、空调机、冰箱、手机、电子遥控玩具等。商用产品:如自动售货机、收款机、电子称等。网络与通信智能接口:如传真机、打印机、绘图仪等。1.4C51单片机系列第1章单片机概述1.4.180C51单片机系列

80C51单片机系列是在C51系列单片机的基础上发展起来的,按C51芯片的规则命名,例如80C31、80C51、87C51、89C51,新一代80C51单片机在芯片内增加了一些外部接口功能,例如:数/模转换器(A/D)、可编程计算器阵列(PCA)、监视定时器(WDT)、高速I/O口等功能模块1.4.280C51与8051单片机的比较兼容性:80C51单片机兼容与8051单片机,主要表现在指令、引脚信号、总线等多个方面。芯片工艺:C51系列单片机采用HMOS工艺,而80C51采用CHMOS工艺,即互补金属氧化物的HMOS工艺。CHMOS是CMOS和HMOS的结合,既保留了HMOS的高速和高密度特点,又保留了CMOS低功耗的特点。第1章单片机概述功能方面:80C51单片机增加了许多功能。例如:80C51单片机增加了待机和掉电保护两种工作方式。存储方面:在80C51系列芯片中,内部程序存储器除了ROM型和EPROM型外,增加了E2PROM型1.5单片机发展趋势

改进CPU:增加CPU的数据总线宽度;采用双CPU结构,以提高数据处理能力。改进存储器:片内程序存储器采用Flash存储器,单片机可不用扩展片外程序存储器,大大简化了应用系统结构。加大存储容量。第1章单片机概述改进片内I/O:增加I/O口的驱动能力,以减少外部驱动芯片低功耗化:8位单片机产品已CMOS化,CMOS芯片的单片机具有功耗小的优点外围电路内装化:随着集成电路技术及工艺的不断发展,把所需的众多外围电路全部集成在单片机内部,即系统的单片化是目前单片机发展趋势之一综上所述,单片机正在向多功能、高性能、高速度(时钟达40MHz)、低电压(2.7V即可工作)、低功耗、低价格(几元钱)、外围电路内装化以及片内程序存储器和数据存储器容量不断增大的方向发展第1章单片机概述1.6其它几种主流单片机Motorola单片机Microchip单片机Atmel单片机NEC单片机东芝单片机富士通单片机MSP430单片机第1章单片机概述

单片机原理及应用

(第2章)2.1MCS-51单片机的内部结构2.1.1C51单片机的内部结构89C51单片机片内集成了中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、两个16位的定时器/计数器(T0和T1)、4个8位的并行I/0口(P0、P1、P2和P3)、串行口等组成。它们通过总线连接起来第2章C51单片机的硬件结构第2章C51单片机的硬件结构

振荡器和时钟电路程序存储器4KBROM数据存储器128BRAM/SCPU两个16位定时/计数器中断系统64K字节总线扩展制并行I/O端口全双工串行口外部时钟源外部计数脉冲第2章C51单片机的硬件结构中央处理器(CPU)中央处理器由运算器和控制器组成,是单片机的核心。算术运算单元累加器ACC寄存器B运算器ALU程序状态字PSW两个暂存器位处理器第2章C51单片机的硬件结构

控制器:控制器是单片机的神经枢纽,它保证单片机的各部分能自动协调工作。定时、控制、指令寄存器、程序计数器(PC)等均属于控制器的组成部分。内部数据存储器内部程序存储器定时器/计数器并行I/O口串行口中断控制系统时钟电路第2章C51单片机的硬件结构2.1.2C51单片机的外部引脚说明C51系列单片机的引脚互相兼容,40个引脚的双列直插式封装DIP40第2章C51单片机的硬件结构电源VCC:典型值为+5V电源Vss:接地晶振XTAL1和XTAL2:外部晶振引脚

当使用内部时钟时,此二引脚用于外接石英晶体和微调电容;当使用外部时钟时,XTAL2用于外接时钟脉冲信号,XTAL1悬空。控制线:RST、、组成了89C51单片机的控制线复位地址锁外部程序访问程序

第2章C51单片机的硬件结构I/O口89C51单片机具有四个I/O口:P0、P1、P2、P3。P0口:漏极开路的双向I/O口(需加外部上拉电阻)P1口:准双向I/O口,具有内部上拉电阻,是通用的I/O口P2口:准双向I/O口,具有内部上拉电阻,是通用的I/O口P3口:准双向I/O口,具有内部上拉电阻,是通用的I/O口同时P3口还具有第二功能,在使用第二功能时,其输出锁存器应由程序置1。P3口的8条口线都定义有第二功能。第2章C51单片机的硬件结构引脚 第二功能 信号名称 P3.0 RXD 串行数据接收 P3.1 TXD 串行数据发送 P3.2 /INT0 外部中断0请求 P3.3 /INT1 外部中断1请求 P3.4 T0 定时/计数器0计数输入 P3.5 T1 定时/计数器1计数输入 P3.6 /WR 向外部写数据选通 P3.7 /RD 从外部读数据选通第2章C51单片机的硬件结构2.2C51单片机存储器结构

89C51系列单片机将程序存储器和数据存储器截然分开,各有自己的寻址方式、寻址空间和控制系统。这种结构对于“面向控制”的单片机极为方便、有利。89C51单片机不仅有一定容量的程序存储器、数据存储器和特殊功能的寄存器,而且还具有极强的外部存储器扩展能力,寻址范围可达64KB.在物理上存储器分为四个存储空间程序存储器:片内程序存储器和片外程序存储器数据存储器:片内数据存储器和片外数据存储器第2章C51单片机的硬件结构在逻辑上分为三个存储器地址空间 片内外统一的64KB程序存储器地址空间; 片内128字节的数据存储器地址空间;片外64KB的数据存储器地址空间。2.2.1程序存储器

程序存储器分为片内存储和片外存储两部分,可通过/EA引脚的电平确定,当引脚为高电平时,程序从片内存储器开始执行,即访问片内存储器,当PC值超过片内存储器的范围时,自动跳转到片外程序存储器空间执行;当引脚为低电平时,系统全部执行片外程序存储器程序。第2章C51单片机的硬件结构程序存储器的某些单元被保留为特定的程序入口地址特定服务程序 程序入口地址 复位或非屏蔽中断 0000H 外部中断0 0003H 定时/计数器T0中断 000BH 外部中断1 0013H 定时/计数器T1中断 001BH 串行口中断 0023H第2章C51单片机的硬件结构2.2.2数据存储器

数据存储器由RAM构成,用来存放随机数据。对于89C51单片机,内部数据存储器共有256个存储单元,分为低128单元(00H~7FH)和高128单元(80H~FFH),低128单元按用途可分为3个区域:通用寄存器、位寻址区、用户RAM区。通用寄存器内部RAM的前32个单元作为寄存器使用,共分为4个工作组,每组8个寄存器,编号分别为R0~R7,寄存器通常用于存放操作数和中间结果等,它们的功能不预先规定,因此称为通用寄存器。第2章C51单片机的硬件结构位寻址区片内数据存储区的20H~2FH的16字节单元,共包含128位,是既可字节寻址又可位寻址的RAM区。用户RAM区从片内存储区的30H~7FH,共80个字节单元,为用户RAM区,用作堆栈或存放各种数据和中间结果,起到数据缓冲的作用,可采用直接字节寻址的方式访问。特殊功能寄存器区SFR内部数据存储器的高128单元是为特殊功能寄存器提供的,因此称为特殊功能寄存器区,其单元地址为80H~FFH,专用于控制、管理单片机内部并行I/O口、串行口、算术逻辑部件、定时/计数器、中断系统等功能模块的工作。第2章C51单片机的硬件结构专用寄存器字节寻址问题的几点说明:专用寄存器不是连续地分布在内部RAM的高128单元中,且剩余空闲的寄存器,用户不能使用。21个专用寄存器都可寻址,唯独程序计数器(PC)不能寻址,此程序计数器在物理上是独立的,不占用RAM单元。只能采用直接寻址方式访问专用寄存器。在指令中既可使用寄存器符号表示,也可使用寄存器地址表示。第2章C51单片机的硬件结构2.2.3C51单片机的堆栈操作

堆栈是一种数据结构,数据写入堆栈成为入栈(push),数据的读出成为出栈(pop),堆栈的最大特点是“后进先出”的数据操作规则。堆栈在单片机系统中的功能:为子程序调用和中断操作设立,保护断点和现场,无论是执行子程序还是执行中断操作,都要返回到主程序,因此需要在转去执行子程序或中断程序前,预先保护主程序的断点,使得程序能正确返回到主程序中,即保护断点。为了能够实现多级中断嵌套及多重子程序,一般要求堆栈具有足够的容量(堆栈深度)。此外,堆栈也可用于存放临时数据。第2章C51单片机的硬件结构堆栈的设置:堆栈只能设置在单片机的内部数据存储器中,即内堆栈,其主要优点是操作速度快,但容量有限。堆栈的状态指示:堆栈有两种操作入栈和出栈,但无论是数据的入栈还是出栈都是对堆栈的栈顶单元进行操作,即对栈顶数据的读和写,为了指示栈顶地址,要设置堆栈指示器(SP,StackPointer)。SP的内容就是栈顶单元的地址。堆栈的类型:堆栈有两种类型—向上生长型和向下生长型向上生长型的堆栈—入栈:SP先加1,后写入数据;出栈:先读出数据,SP后减1。向下生长型:—入栈:SP先减1,后写入数据;出栈:先读出数据,SP后加1。第2章C51单片机的硬件结构

堆栈的使用方式:自动方式和指令方式自动方式是在调用子程序或中断时,断点自动入栈,程序返回后,断点再自动弹回PC。这种方式不需用户参与,自动完成;指令方式是使用专用的堆栈操作指令,进行进出栈操作。其入栈指令为PUSH,出栈指令为POP。2.3C51单片机的并行输入/输出接口C51共有4个、8位的并行I/O口,分别记作P0、P1、P2、P3。P0口:P0口是一个三态双向口,可作地址/数据分时复用口,也可作通用的I/O口。当控制信号为高电平“1”时,P0口作地址/数据分时复用总线使用,当控制信号为低电平“0”时,P0口作通用I/O接口使用。第2章C51单片机的硬件结构P0口的使用应注意以下几点:P0口的输出级是漏极开路电路,必须外接上拉电阻。P0口在输入数据前,应先向P0口写“1”,此时锁存器的Q端为“0”,使输出级的两个场效应管V1、V2均截止,引脚处于悬浮状态,才可作高阻输入。另外,P0口的输出级具有驱动8个LSTTL负载的能力,输出电流不大于800AP1口:P1口是准双向口,它只能作通用I/O口使用。P1口的结构与P0口不同,它的输出仅由一个场效应管V1与内部上拉电阻组成,输出时不必外接上拉电阻。第2章C51单片机的硬件结构

P2口:P2口是准双向口,它有两种用途:通用I/O接口和高8位地址线。它的1位的结构与P1口相比,它只在输出驱动电路上比P1口多了一个模拟转换开关MUX和反相器。P3口:它的输出驱动由与非门3、V1组成,输入比P0、P1、P2口多了一个缓冲器4。P3口除了作为准双向通用I/O口外,它的每一根线还具有第二种功能。当P3口作为通用I/O接口时,第二功能输出线为高电平,与非门3的输出取决于锁存器的状态。这时,P3口是一个准双向口,它的工作原理、负载能力与P1、P2口相同;当P3口作为第二功能时,锁存器的Q输出端必须为高电平,P3口的状态取决于第二功能输出线的状态。第2章C51单片机的硬件结构2.4最小单片机系统2.4.1时钟电路:内部时钟和外部时钟。

内部时钟电路:单片机的XTAL1端和XTAL2端将晶振电容C1和C2和内部的反相放大器组成并联谐振电路,C1、C2取30pF,振荡频率范围在2~12MHz。振荡电路产生的振荡脉冲并不直接使用,而是经过分频后再为系统使用。

外部方式时钟电路:在多单片机组成的系统中,为使各单片机间时钟信号同步,应引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。第2章C51单片机的硬件结构

XTAL1XTAL2VCC外部振荡信号XTAL2XTAL1第2章C51单片机的硬件结构2.4.2CPU时序

C51单片机有111条指令,CPU在执行这些指令时,各控制信号按时序工作,时序由四种周期构成。

振荡周期(T):晶体振荡器产生的振荡信号的周期。

时钟周期(S):一个时钟周期等于两个振荡周期,即对振荡信号进行二分频得到时钟信号。

机器周期:完成一个基本操作所需的时间。一个机器周期等于6个时钟周期,12个振荡周期。

指令周期(IC):执行一条指令所需的时间。MCS-51单片机的指令周期一般为1、2、4个机器周期。第2章C51单片机的硬件结构【例2-1】已知单片机的外接晶体振荡频率为6MHz、12MHz,试分别计算出机器周期和指令周期。 解:当晶振频率为6MHz时,振荡周期=1/振荡频率=1/6(us),时钟周期=2*振荡周期=2/6(us),机器周期=6*时钟周期=2(us),指令周期=(1~4)*机器周期=2~8(us)。 当晶振频率为12MHz时,振荡周期=1/振荡频率=1/12(us),时钟周期=2*振荡周期=1/6(us),机器周期=6*时钟周期=1(us),指令周期=(1~4)*机器周期=1~4(us)。2.4.3复位电路单片机有三种复位方式:上电自动复位、按键手动复位和外部脉冲复位第2章C51单片机的硬件结构上电自动复位:通过电容充电实现,只要电源Vcc的上升时间不超过1ms就可实现自动上电复位,即接通电源就完成系统的复位初始化。按键复位:通过按键使复位端经电阻与电源接通实现VccRSTVssVccRSTVssMCS-511k1k200第2章C51单片机的硬件结构外部脉冲复位:由外部提供一个复位脉冲,复位脉冲后,通过内部下拉电阻保证RST端的低电平2.4.4C51单片机工作方式程序执行方式:程序执行方式是单片机的基本工作方式。低功耗工作方式:89C51提供两种节电方式:空闲方式和掉电方式。这两种工作方式都是通过对电源控制寄存器(PCON)的相关位控制来执行。电源控制寄存器PCON各位定义如下:

SMOD:波特率倍增位,在串行通信时使用;

GF1:通用标志位1;第2章C51单片机的硬件结构

GF0:通用标志位0;

PD:掉电方式位,PD=1,则进入掉电方式;

IDL:待机方式位,IDL=1,则进入待机方式。

待机方式的进入:若使PCON寄存器的IDL位置“1”,则89C51单片机进入待机状态。这时振荡器仍处于运行状态,并向中断逻辑、串行口和定时器/计数器电路提供时钟,但不给CPU电路提供时钟。

待机方式的退出:采用中断方式退出待机状态。在待机状态下,若引入一个外部中断请求信号,单片机在相应中断请求的同时,IDL位被硬件自动清零,单片机退出待机方式。

第2章C51单片机的硬件结构掉电方式的进入:当89C51单片机检测到电源故障时,除进行信息保护后,还将PD位置“1”,进入掉电状态。此时单片机停止一切工作,只有内部的RAM单元内容被保存。

掉电方式的退出:当恢复正常后,主要硬件复位信号维持10ms,单片机退出掉电方式。第2章C51单片机的硬件结构本章小结

C51单片机是将CPU、ROM、RAM、I/O口、UART、C/T、中断系统等集成在一块芯片上的器件。存储器在物理上设计为程序存储器和数据存储器,两个独立的空间。89C51内部有4KB的程序存储空间,可扩展外部程序存储空间至64KB。89C51有256字节的片内RAM,片外的RAM最多为64KB。89C51有4个、8位的并行I/O口P0~P3和一个可编程的全双工串行接口,两个16位的定时/计数器。

单片机原理及应用

(第3章)第3章C51单片机的指令系统与程序设计

单片机通过执行程序来完成一定的任务和功能,而程序由若干条指令构成,CPU能识别、执行的指令集合就构成该CPU的指令系统。指令也叫语句,它是构成程序的基础。3.1概述3.1.1指令格式

C51单片机的指令系统共有255种指令,绝大多数指令包含操作码和操作数两个部分。

操作码:指令要执行的操作

操作数:即操作对象,指明参与操作的数据或数据所存放的地址第3章C51单片机的指令系统与程序设计

C51单片机的所有指令都是以机器语言形式表示,分为单字节、双字节、三字节,共3种格式;用二进制编码表示的机器语言由于阅读困难,且难记忆。因此采用汇编语言指令来编写程序如下表:代码字指令代码汇编指令指令周期单字节84 DIVAB 四周期单字A3INCDPTR双周期双字7410 MOVA,#10H 单周期三字B440relCJNEA,#40H,LOOP双周期第3章C51单片机的指令系统与程序设计一条汇编语言指令中最多包含4个部分,其格式如下:

标号:操作码目的操作数,源操作数;注释

标号是由用户定义的符号组成,必须由英文字母开始,标号可有可无,标号又称为符号地址,在汇编时把该地址赋值给标号。

操作码是指令的功能部分,不能缺省

操作数是指令要操作的数据信息。根据指令的不同功能,有3、2、1或0个操作数

注释可有可无,注释可便于阅读例如“MOVA,#20H”,包含了两个操作数“A”和“#20H,MOV是操作码第3章C51单片机的指令系统与程序设计3.1.2指令分类及指令系统中使用的符号

C51指令系统有42种助记符,代表了33种功能,指令助记符与寻址方式相结合,构成111条指令。按指令的功能,C51指令系统可分为下列5类: (1)数据传送类指令(29条) (2)算术运算类指令(24条) (3)逻辑运算及移位类指令(24条) (4)位操作类指令(17条) (5)控制转移类指令(17条)C51指令系统中,一些符号的意义约定:。

Rn:R0~R7,即n=0~7。第3章C51单片机的指令系统与程序设计

Ri:R0、R1,即i=0、1。

Direct:8位内部RAM单元的地址,它可是一个内部数据区RAM单元(00H~7FH)或特殊功能寄存器地址(I/O端口、控制寄存器、状态寄存器80H~FFH)。

#data:指令中的8位常数。

#data16:指令中的16位常数。

addr16:16位地址,用于LJMP、LCALL,可指向64KB程序存储器的地址空间。

addr11:11位地址,用于AJMP、ACALL指令。

rel:8位带符号的偏移量字节,用于SJMP和所有条件转移指令中。偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值。

bit:内部数据RAM或特殊功能寄存器中的可直接寻址位。

DPTR:数据指针,可用作16位的地址寄存器。第3章C51单片机的指令系统与程序设计

A:累加器。

B:寄存器,用于MUL和DIV指令中。

C:进位或借位位。

@:间接寄存器或基址寄存器的前缀,如@Ri,@DPTR。

/:位操作前缀,表示对该位取反。(X):X中的内容。

((X)):由X寻址的单元中的内容。

←:箭头左边的内容被箭头右边的内容所替代。3.2寻址方式与寻址空间

寻址方式指CPU指令系统中规定的寻找操作数所在地址的方式,通常所讨论的寻址方式指源操作数的寻址方式。因为1)源操作数的寻址方式比目的操作数的寻址方杂2)目的操作数的地址一般都很明确。第3章C51单片机的指令系统与程序设计C51单片机有七种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、位寻址、基址寄存器加变址寄存器间接寻址、相对寻址。(1)立即寻址指以立即数为操作数,因此由指令可直接知道操作数的具体数。注意:立即寻址没有寻址空间;立即数只能作为源操作数,不能作为目的操作数。

MOVA,#52H;A←52HMOVDPTR,#5678H;DPTR←5678H第3章C51单片机的指令系统与程序设计(2)直接寻址指以直接地址为操作数,因此由指令可直接知道操作数所在的具体地址,可为字节地址也可为位地址。

MOVA,52H;把片内RAM字节地址52H单元的内容送累加器A中 MOV50H,60H;把片内RAM字节地址60H单元的内容送到50H单元中 INCDPTR;地址指针DPTR所指的地址自加1第3章C51单片机的指令系统与程序设计

在C51单片机指令系统中,直接寻址方式可访问2种存储空间:内部数据存储器的低128个字节单元(00H~7FH);80H~FFH中的特殊功能寄存器。

注意:指令“MOVA,#52H”与“MOVA,52H”的区别,前者表示把立即数52H送到累加器A,后者表示把片内RAM字节地址为52H单元的内容送到累加器A,即#52H因为带“#”表示立即数,而52H因为无“#”表示地址。(3)寄存器寻址是寄存器直接寻址的简称,指以寄存器的内容为操作数,寄存器直接给出了操作数的数值。寄存器一般指累加器A和工作寄存器R0~R7。

MOVA,Rn;A←(Rn)其中n的范围为0~7, MOVRn,A;Rn←(A) MOVB,A;B←(A)寄存器寻址只能使用当前寄存器组,因此指令中的寄存器名称只能是R0~R7。第3章C51单片机的指令系统与程序设计(4)寄存器间接寻址指以寄存器的内容作为操作数的地址,通过寄存器给出操作数的地址,即没有直接给出操作数的数值,只是间接给出操作数的数值。寄存器间接寻址只能使用寄存器R0或Rl作为地址指针,来寻址内部RAM(00H~FFH)中的数据。寄存器间接寻址也适用于访问外部RAM,可使用R0,Rl或DPTR作为地址指针。寄存器间接寻址用符号“@”表示 例1MOVR0,#31H;R0←31H MOVA,@R0;A←((R0))这两条指令的功能是把R0所指出的内部RAM地址31H单元中的内容送累加器A。如果(31H)=20H,则指令的功能是将20H这个数送到累加器A。第3章C51单片机的指令系统与程序设计例MOVDPTR,#3456H;DPTR←3456H MOVXA,@DPTR;A←((DPTR))这两条指令的功能是把数据指针DPTR所指的3456H外部数据存储器的内容传送给A,如果(3456H)=99H,指令运行后(A)=99H。第3章C51单片机的指令系统与程序设计(5)位寻址:位操作指令能对内部RAM中的位寻址区(20H~2FH)和某些有位地址的特殊功能寄存器进行位操作,实现位状态传送、状态控制、逻辑运算操作。例 SETBTR0;TR0←1 CLR00H;(00H)←0 MOVC,57H;将57H位地址的内容传送到位C中ANLC,5FH;将5FH位状态与位C相与,结果放在C中(6)基址寄存器加变址寄存器间接寻址方式用于访问程序存储器中的数据表格,它以基址寄存器(DPTR或PC)的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。通常将基址寄存器加变址寄存器间接寻址简称为基址、变址寻址。第3章C51单片机的指令系统与程序设计

例MOVCA,@A+DPTR MOVCA,@A+PC JMP@A+DPTR第3章C51单片机的指令系统与程序设计(7)相对寻址以程序计数器PC的当前值作为基地址,与指令中给出的相对偏移量rel进行相加,把所得之和作为程序的转移地址。这种寻址方式用于相对转移指令中,指令中的相对偏移量是一个8位带符号数,用补码表示。可正可负,转移的范围为-128~+127。例 JZLOOP DJNER0,DISPLAY第3章C51单片机的指令系统与程序设计3.3指令系统3.3.1数据传送类指令

数据传送类指令是把源操作数传送到目的操作数。因此,执行完该指令后,源操作数保持不变,而目的操作数被源操作数所替代。数据一般传送指令用助记符“MOV”表示。

其格式:MOV[目的操作数],[源操作数]。

源操作数可以是:A、Rn、direct、@Ri、#data;

目的操作数可以是:A、Rn、direct、@Ri。以累加器A为目的操作数的内部数据传送指令 例如:MOVA,#10H,该指令执行后,将立即数10H送入累加器A中。第3章C51单片机的指令系统与程序设计数据传送到工作寄存器Rn指令例如MOVRn,A;Rn←(A)数据传送到内部RAM单元或特殊功能寄存器SFR的指令 例如MOVdirect,Rn;direct←(Rn) MOV@Ri,#data;(Ri)←data累加器A与外部数据存储器间的传送指令例如MOVXA,@Ri;A←((Ri)) MOVX@DPTR,A;(DPTR)←A程序存储器内容送累加器A指令例如MOVCA,@A+PCMOVCA,@A+DPTR第3章C51单片机的指令系统与程序设计堆栈操作指令 例如PUSHdirect POPdirect字节交换指令 数据交换主要是在内部RAM单元与累加器A之间进行,有字节和半字节两种交换。3.3.2算术运算类指令

算术运算类指令共有24条,包括加、减、乘、除4种基本算术运算指令(1)加法指令普通加法指令第3章C51单片机的指令系统与程序设计

ADDA,Rn;A←(A)+(Rn)ADDA,direct;A←(A)+(direct)这组指令的功能是将累加器A的内容与源操作数相加,并将结果放在累加器A中带进位加法指令 ADDCA,Rn;A←(A)+(Rn)+(CY) ADDCA,direct;A←(A)+(direct)+(CY)增量指令(加1指令)INCA;A←(A)+1INCRn;Rn←(Rn)+1这组指令的功能是将指令中操作数的内容加1第3章C51单片机的指令系统与程序设计十进制调整指令

DAA

这条指令对累加器A参与的BCD码加法运算所获得的8位结果进行十进制调整,使累加器A中的内容调整为二位压缩型BCD码的数。(2)减法指令

带进位减法指令 SUBBA,Rn;A←(A)-(Rn)-(CY)SUBBA,direct;A←(A)-(direct)-(CY)减1指令 DECA;A←(A)-1DECRn;Rn←(Rn)-1第3章C51单片机的指令系统与程序设计(3)乘法指令MULAB这条指令的功能是将累加器A的内容与寄存器B的内容相乘,乘积的低8存放在累加器A中,高8位存放于寄存器B中,如果乘积超过FFH,则溢出标志OV置“1”,否则清“0”,进位标志CY总是被清“0”。(4)除法指令DIVAB这条指令的功能是将累加器A中的内容除以寄存器B中的8位无符号整数,所得商的整数部分放在累加器A中,余数部分放在寄存器B中,进借位标志CY和溢出标志OV都为“0”第3章C51单片机的指令系统与程序设计3.3.3逻辑运算类指令

逻辑运算指令共有24条,分为简单逻辑操作指令、逻辑与指令、逻辑或指令和逻辑异或指令。(1)简单逻辑操作指令

CLRA;累加器A的内容清“0” CPLA;累加器A的内容按位取反 RLA;累加器A的内容向左循环移1位 RLCA;累加器A的内容带进位标志向左循环移1位 RRA;累加器A的内容向右循环移1位RRCA;累加器A的内容带进位标志向右循环移1位第3章C51单片机的指令系统与程序设计循环左移指令示意图循环右移指令示意图第3章C51单片机的指令系统与程序设计(2)逻辑与指令 ANLA,Rn;A←(A)∧(Rn)ANLA,direct;A←(A)∧(direct)这组指令的功能是将两个操作数的内容按位进行逻辑与操作,并将结果送回目的操作数的单元中。(3)逻辑或指令 ORLA,Rn;A←(A)∨(Rn)ORLA,direct;A←(A)∨(direct) 这组指令的功能是将两个操作数的内容按位进行逻辑或操作,并将结果送回目的操作数的单元中。(4)逻辑异或指令第3章C51单片机的指令系统与程序设计

XRLA,Rn;A←(A)⊕(Rn)XRLA,direct;A←(A)⊕(direct)这组指令的功能是将两个操作数的内容按位进行逻辑异或操作,并将结果送回目的操作数的单元中。3.3.4.控制转移类指令控制转移指令共有17条,不包括按布尔变量控制程序转移指令。无条件转移指令(1)绝对转移指令AJMPaddr11第3章C51单片机的指令系统与程序设计

这是2KB范围内的无条件跳转指令,执行该指令时,先将PC+2,然后将addr11送入PC10~PC0,而PC15~PC11保持不变。这样得到跳转的目的地址。操作过程可表示为:PC←(PC)+2;PC10~PC0←addr11。

(2)相对转移指令 SJMPrel 执行指令时,先将PC+2,再把指令中带符号的偏移量加到PC上,得到跳转的目的地址送入PC。即:目标地址=源地址+2+rel。

(3)长跳转指令 LJMPaddr16;PC←addr16执行该指令时,将16位目标地址addr16装入PC,程序无条件转向指定的目标地址。第3章C51单片机的指令系统与程序设计(4)间接转移指令(散转指令) JMP@A+DPTR;PC←(A)+(DPTR)这条指令的功能是把累加器A中的8位无符号数与数据指针DPTR的16位数相加,相加之和作为下一条指令的地址送入PC中,不改变A和DPTR的内容,也不影响标志。条件转移指令JZrel;(A)=0转移JNZrel;(A)≠0转移比较转移指令CJNEA,direct,rel;(A)≠(direct)转移CJNEA,#data,rel;(A)≠data转移CJNERn,#data,rel;(Rn)≠data转移CJNE@Ri,#data,rel;((Ri))≠data转移第3章C51单片机的指令系统与程序设计减1不为0转移指令

DJNZRn,rel;Rn←(Rn)-1≠0转移 DJNZdirect,rel;direct←(direct)-1≠0转移调用及返回指令(1)绝对调用指令 ACALLaddr11 这是一条2KB范围内的子程序调用指令,执行该指令时的过程: PC←PC+2 SP←(SP)+1,(SP)←(PC7~PC0) SP←(SP)+1,(SP)←(PC15~PC8) PC10~PC0←addr11第3章C51单片机的指令系统与程序设计(2)长调用指令 LCALLaddr16这条指令无条件调用位于16位地址addr16的子程序。其操作过程如下: PC←PC+3 SP←(SP)+1,(SP)←(PC7~PC0) SP←(SP)+1,(SP)←(PC15~PC8)PC10~PC0←addr16 (3)子程序返回指令RET第3章C51单片机的指令系统与程序设计(4)中断返回指令 RETI RETI指令的功能与RET指令相类似,通常安排在中断服务程序的最后。(5)空操作指令 NOP;PC←PC+13.3.5位操作指令 1.位传送指令 MOVC,bit;CY←(bit) MOVbit,C;bit←(CY)2.位修改指令第3章C51单片机的指令系统与程序设计CLRC;CY←0CPLC;CY←(CY)SETBC;CY←1这组指令对操作数的位进行清“0”、取反、置“1”操作,不影响其它标志.3.位逻辑与指令 ANLC,bit;CY←(CY)∧(bit)4.位逻辑或指令 ORLC,bit;CY←(CY)∨(bit)5.位变量条件转移指令 JC rel ;若(CY)=1,则转移PC←(PC)+2+rel JNCrel;若(CY)=0,则转移PC←(PC)+2+relJBbit,rel;若(bit)=1,则转移PC←(PC)+3+rel第3章C51单片机的指令系统与程序设计JNB bit,rel;若(bit)=0,则转移PC←(PC)+3+relJBC bit,rel;若(bit)=1,则转移PC←(PC)+3+rel并bit←0 【例3-8】指出下列程序段的每条指令的寻址方式,并写出每步运算的结果。设程序存储器(1050H)=5AH。 MOVA,#0FH A=0FH,立即寻址 MOV 30H,#0F0H (30H)=F0H,立即寻址 MOVR2,A R2=0FH,寄存器寻址 MOV R1,#30H R1=30H,立即寻址 MOVA,@R1 A=F0H,寄存器间接寻址 MOV DPTR,#1000H DPTR=1000H,立即寻址 MOVA,#50H A=50H,立即寻址 MOVA,@A+DPTR A=5AH,基址变址寻址 JMP @A+DPTR PC目标=105AH,基址变址寻址 CLR C C=0,寄存器寻址 MOV20H,C (20H)=0,寄存器寻址第3章C51单片机的指令系统与程序设计 【例3-9】用数据传送指令实现下列要求的数据传送。 (1)R0的内容传送到R1。 (2)内部RAM20H单元的内容传送到A。 (3)外部RAM30H单元的内容送到R0。 (4)外部RAM30H单元的内容传送到内部RAM20H单元。 (5)外部RAM1000H单元的内容传送到内部RAM20H单元。 (6)程序存储器ROM2000H单元的内容送R1。 (7)ROM2000H单元的内容传送到内部RAM20H单元。 (8)ROM2000H单元的内容传送到外部RAM30H单元。 (9)ROM2000H单元的内容送外部RAM1000H单元。第3章C51单片机的指令系统与程序设计 【例3-9】用数据传送指令实现下列要求的数据传送。 (1)R0的内容传送到R1。 (2)内部RAM20H单元的内容传送到A。 (3)外部RAM30H单元的内容送到R0。 (4)外部RAM30H单元的内容传送到内部RAM20H单元。 (5)外部RAM1000H单元的内容传送到内部RAM20H单元。 (6)程序存储器ROM2000H单元的内容送R1。 (7)ROM2000H单元的内容传送到内部RAM20H单元。 (8)ROM2000H单元的内容传送到外部RAM30H单元。 (9)ROM2000H单元的内容送外部RAM1000H单元。第3章C51单片机的指令系统与程序设计 【例3-9】用数据传送指令实现下列要求的数据传送。 (1)R0的内容传送到R1。 (2)内部RAM20H单元的内容传送到A。 (3)外部RAM30H单元的内容送到R0。 (4)外部RAM30H单元的内容传送到内部RAM20H单元。 (5)外部RAM1000H单元的内容传送到内部RAM20H单元。 (6)程序存储器ROM2000H单元的内容送R1。 (7)ROM2000H单元的内容传送到内部RAM20H单元。 (8)ROM2000H单元的内容传送到外部RAM30H单元。 (9)ROM2000H单元的内容送外部RAM1000H单元。第3章C51单片机的指令系统与程序设计(1)MOV A,R0MOV R1,A(2)MOV A,20H(3)MOV R0,#30H MOVXA,@R0MOV R0,A(4)MOV R0,#30H MOVXA,@R0 MOV 20H,A(5)MOV DPTR,#1000HMOVX A,@DPTRMOV 20H,A第3章C51单片机的指令系统与程序设计(6)MOVDPTR,#2000H CLRA MOVCA,@A+DPTRMOV R1,A(7)MOVDPTR,#2000HCLRAMOVCA,@A+DPTRMOV 20H,A(8)MOVDPTR,#2000H CLRA MOVCA,@A+DPTR MOV R0,#30HMOVX@R0,A第3章C51单片机的指令系统与程序设计(9)MOV DPTR,#2000H CLRA MOVC A,@A+DPTR MOV DPTR,#1000HMOVX @DPTR,A3.4汇编语言及其程序设计3.4.1汇编语言语句的种类和格式汇编语言语句有两种基本类型:指令语句和伪指令语句指令语句:每一条指令语句在汇编时都产生一个指令代码—机器代码伪指令语句为汇编服务,在汇编时无机器代码与之对应第3章C51单片机的指令系统与程序设计汇编语言语句基本语法规则:1.标号字段:标号后边必须紧跟冒号“:”2.操作码字段:汇编程序就是根据操作码字段来生成机器代码3.操作数字段:通常有单操作数、双操作数和无操作数三种情况。如果是双操作数,则操作数间要用逗号隔开4.注释字段:必须以分号“;”分号开头,换行书写时也必须以分号“;”分号开头。3.4.2伪指令语句在C51单片机汇编语言源程序中应有向汇编程序发出的指示信息,告诉它如何完成汇编工作,这些要通过使用伪指令来实现,也称为汇编程序控制命令。第3章C51单片机的指令系统与程序设计常用的伪指令主要有以下五种:1.ORG地址对准命令2.END汇编终止命令3.DB定义字节命令4.DW定义数据字命令5.EQU赋值命令3.4.3汇编语言程序设计步骤 (1)分析问题,确定算法; (2)根据算法,画出程序流程图; (3)分配内存工作区及有关端口地址; (4)编写程序;(5)上机调试。第3章C51单片机的指令系统与程序设计汇编可分为手工汇编和机器汇编两类。手工汇编:人工查表翻译指令,不仅麻烦,且容易出错。机器汇编:用编辑软件进行源程序的汇编。3.4.4汇编语言程序设计与程序结构 汇编语言程序有三种基本结构:顺序结构、分支结构和循环结构,另外还有子程序和中断服务子程序。1.顺序结构 【例3-10】程序初始化。初始化是为变量、寄存器、存储单元赋初值,是最简单、最常用的操作。如将R0~R3、P1、30H和40H单元初始化为0,把R4、R5初始化为FFH。第3章C51单片机的指令系统与程序设计 参考程序如下: ORG0000H ;PC起始地址 LJMPSTART ;转主程序 ORG0030H ;主程序起始地址 START:MOVSP,#68H;设置堆栈空间 MOVR0,#00H ;初始化 MOVR1,#00H MOVR2,#00H MOVR3,#00H MOVP1,#00H MOVR4,#0FFH MOVR5,#0FFH MOV30H,#00H MOV40H,#00H HERE:SJMPHERE ;反复执行该指令,相当于等待 END第3章C51单片机的指令系统与程序设计2.分支结构(1)单分支选择结构分支程序的主要特点是程序包含有判断环节,不同的条件对应不同的执行路径,一般情况下,每个选择分支均需单独一段程序,并有特定的名字,以便当条件满足时实现转移。第3章C51单片机的指令系统与程序设计

(a)中当条件满足时执行分支程序1,否则执行分支程序2。 (b)中当条件满足时跳过程序段1,从程序段2顺序执行;否则顺序执行程序段1和程序段2。 (c)中当条件满足时程序顺序执行程序段2;否则重复执行程序段1,直到条件满足为止。(2) 多分支选择结构第3章C51单片机的指令系统与程序设计3.循环结构 在实际应用中经常会遇到功能相同,需要多次重复执行某段程序的情况,这时可把该段程序设计成循环结构,有助于节省程序存储空间,提高程序质量。循环程序一般由4部分组成:(1)初始化(2)循环体(3)循环控制(4)循环结束处理第3章C51单片机的指令系统与程序设计

图(a)是“先执行后判断”结构,适用于循环次数已知的情况,其特点是进入循环后,先执行循环处理部分,然后根据循环次数判断是否结束循环。 图(b)是“先判断后执行”结构,适用于循环次数未知的情况。其特点是将循环控制部分放在循环的入口处,先根据循环控制条件判断是否结束循环,若不结束则执行循环操作;若结束则退出循环。4.子程序:能够完成一定功能、可被其它程序调用的程序段称为子程序(1)在编写子程序时要注意以下几点:①要给每个子程序赋一个名字。它是子程序入口地址的符号,便于调用。第3章C51单片机的指令系统与程序设计

②明确入口参数、出口参数。③保护现场和恢复现场。(2)子程序的调用与返回

主程序调用子程序时,CPU会自动首先将PC中的当前值(调用指令下一条指令地址,称断点地址)压入堆栈(即保护断点),然后将子程序入口地址送入PC,使程序转入子程序运行。

子程序的返回是通过返回指令RET实现的。这条指令的功能是将堆栈中返回地址(即断点)弹出堆栈,送回到PC,使程序返回到主程序断点处继续往下执行。第3章C51单片机的指令系统与程序设计(3)子程序嵌套:子程序嵌套是指在子程序执行过程中,还调用其他子程序5.查表程序 数据补偿、修正、计算、转换等各种功能都需要查表来实现,因为查表具有简单、执行速度快等优点。查表就是根据自变量x,在表格中寻找y,使y=f(x)。 执行查表指令时,发出读程序存储器选通脉冲。在C51单片机的指令系统中,给用户提供了两条查表指令:MOVCA,@A+DPTR和MOVCA,@A+PC。6.关键字查找程序设计 从第1项开始逐项顺序查找,判断所取数据是否与关键字相等。第3章C51单片机的指令系统与程序设计7.数据极值查找程序设计:在指定的数据区中找出最大值或最小值。进行数值大小的比较,从这批数据中找出最大值(或最小值)并存于某一单元中。

单片机原理及应用

(第4章)第4章C51单片机程序设计基础4.1C51的数据类型标准C语言的数据类型分为基本数据类型和组合数据类型。

基本数据类型:字符型(char)、整型(int)、长整型(long)、浮点型(float)和双精度型(double)

组合数据类型:数组类型(array)、结构体类型(struct)、共同体类型(union)、枚举类型(enum)、指针类型、空类型。1.字符型charchar型的长度是一个字节,常用于定义变量或常量。分无符号字符类型unsigned

char和有符号字符类型signed

char,默认值为signed

char类型。第4章C51单片机程序设计基础signedchar:最高位是符号位,“0”表示正数,“1”表示负数,以补码形式表示,表示的数值范围是-128~+127。unsignedchar:数值范围是0~255,可用来存放无符号的数值,也可存放西文字符。注意:正数的反码、补码和原码三者相同,而负二进制数的补码等于它的绝对值按位取反后加1。2.整型int

int型长度为两个字节,用于存放一个双字节数据。分为有符号整型数signedint和无符号整型数unsignedint,默认值为signedint类型。signedint:存放双字节有符号的数值,以补码表示,表示的数值范围是-32768~+32767,字节中最高位表示数据的符号,“0”表示正数,“1”表示负数第4章C51单片机程序设计基础unsignedint:存放双字节无符号的数值,表示的数值范围是0~65535。3.长整型longlong型长度为四个字节,用于存放一个四字节数据。long分为有符号长整型signedlong和无符号长整型unsignedlong,默认值为signed

long类型。signedlong:它存放4字节有符号的数值,以补码表示,表示的数值范围是-2147483648~+2147483647;unsignedlong:它存放4字节无符号的数值,表示的数值范围是0~42949672954.浮点型float第4章C51单片机程序设计基础

float型数据长度为四个字节,格式符合IEEE-754标准的单精度浮点型数据,包含指数和尾数两部分,最高位为符号位,“0”表示正数,“1”表示负数,其余8位为阶码,最后23位为尾数的有效数位字节地址 浮点数的内容3SEEEEEEE2EMMMMMMM1MMMMMMMM0 MMMMMMMM其中S表示符号位,E为阶码位,共8位,用补码表示,M为尾数的小数部分,共23位,尾数的整数部分始终为“1”。第4章C51单片机程序设计基础5.特殊功能寄存器型sfr特殊功能寄存器型是C51扩展的数据类型,它分为sfr和sfr16两种类型。sfr为字节型特殊功能寄存器类型,占一个字节单元,利用它可访问单片机内部占一个字节的特殊功能寄存器;sfr16为双字节型特殊功能寄存器类型,占两个字节单元,利用它可访问单片机内部占两个字节的特殊功能寄存器。6.位类型bitbit型是C51扩展的数据类型,用于访问MCS-51单片机中可寻址的位单元。它分为bit和sbit两种类型,它们在内存中都只占一个二进制位。bit定义的位变量在不同的时候位地址可变化,而sbit定义的位变量其对应的位地址不可变化.第4章C51单片机程序设计基础

KeilC51编译器识别的基本数据类型

基本数据类型 长度 取值范围 unsignedchar 1字节 0~255 signedchar 1字节 -128~127 unsignedint 2字节0~65535 signedint 2字节 -327698~32767 unsignedlong 4字节 0~4294967295 signedlong 4字节-2147483648~2147483647float 4字节 1.175494E-38±3.402823E+38 bit 1位 0或1 sbit 1位 0或1 sfr 1字节 0~255 sfr16 2字节 0~65535第4章C51单片机程序设计基础7.数据类型的转换 C51允许任何标准数据类型的转换,分为自动转换和强制转换两种。

自动转换:如果计算中包含不同类型的数据,则根据情况,先自动转换成相同类型的数据,转换规则是向高精度数据类型转换、向有符号数据类型转换.

自动转换的优先级顺序如下:

bit→char→int→long→floatsigned→unsigned

强制转换:通过强制转换的方式实现数据转换第4章C51单片机程序设计基础4.2C51的运算量4.2.1常量 常量在运行过程中不能改变,其数据类型有整型、浮点型、字符型、字符串型和位类型。1.整型常量:整型常量可表示为十进制数,如123、0、-2等;也可表示为十六进制数,以0x开头,如0x23、-0x3F等;长整型常量,如102L、037L、0xe245L等。2.浮点型常量:十进制表示由数字和小数点组成,如123.45、-34.56等。指数表示:[±]数字[.数字]e[±]数字。例如:12.34e-3、-4.55e4等。3.字符型常量:字符型常量是用单引号括起的字符,如‘a’、‘2’、‘F’等。第4章C51单片机程序设计基础

常用的转义字符转义字符含义ASCII码(十六进制数)\0 空字符00H \n 换行字符(LF) 0AH \r 回车符(CR) 0DH \t 水平制表符(HT) 09H \b 退格符(BS) 08H \f 换页符(FF) 0CH \’ 单引号 27H \” 双引号 22H \\ 反斜杠 5CH第4章C51单片机程序设计基础4.字符串型常量字符串型常量是用双引号括起来的字符组成,如“D”、“1234”、“12Acd”等注意:字符串常量和字符常量是不一样的,一个字符常量在内存中占用一个字节的存储单元,而一个字符串常量在内存中存储时,不仅引号内的一个字符各占用一个字节,而且系统会自动在字符串后面加一个转义字符“\0”作为字符串结束5.位标志位标志是一个二进制位。 常量可用在数值不改变的场合,如固定的数据表、字库等。常量的定义方式有以下几种:第4章C51单片机程序设计基础

#defineFalse0x0;//用预定义语句定义常量,定义False为0,True为1 #defineTrue0x1;

//在程序中False编译时自动用0替换,True替换为1 unsignedintcodea=100;//用code定义a为无符号int常量并赋值100constunsignedintc=100;//用const定义c为无符号int常量并赋值100。4.2.2变量变量是在程序运行过程中可改变的量,变量由变量名和变量值两部分组成, 变量的数据类型不同,占用存储单元个数也不同。在存储单元中存储变量值。

第4章C51单片机程序设计基础在C51中,变量在使用前必须进行定义,指出变量的数据类型和存储模式,便于编译系统为它分配存储单元,变量定义为: [存储类型]数据类型说明符[存储器类型]变量名1[=初值],变量名2[=初值],等;1.数据类型说明符:数据类型说明符指明数据的类型和在存储器中占用的字节数。可以是基本数据类型,也可以是组合数据类型格式如下: typedef数据类型说明符别名; #define别名数据类型说明符;第4章C51单片机程序设计基础

【例4-3】利用typedef和#define定义变量。 typedefunsignedintWORD; #defineBYTEunsignedchar; BYTEa1=0x12; WORDa2=0x1234;2.变量的存储类型 C51变量的存储类型有四类:自动(auto)、外部(extern)、静态(static)和寄存器(register),默认类型为自动(auto)。(1)自动auto变量:自动变量只在定义它的函数体和复合体内有效。它属于动态存储,只有在使用它时,即该函数或复合体被调用时才给它分配存储单元,结束调用时释放存储单元。第4章C51单片机程序设计基础(2)外部extern变量在一个函数体内,要使用一个在该函数体外或其他程序中定义过的外部变量时,该变量在该函数体内要用extern说明。外部变量定义后被分配固定的存储空间,在程序的整个执行过程中都有效.(3)静态static变量静态变量分为内部静态变量和外部静态变量,在函数体内定义的静态变量为内部静态变量,它在对应的函数体内有效,一直存在,但在函数体外不可见,即函数体外得到保护;在函数体外定义的静态变量为外部静态变量,它在定义的文件内可任意使用和修改,外部静态变量一直存在,但在文件外不可见,即在文件外得到保护。第4章C51单片机程序设计基础(4)寄存器register变量寄存器变量存放在CPU的寄存器中,这种变量处理速度快,但数目少。C51编译时能自动识别使用频率高的变量,并将其安排为寄存器变量,不需要用户专门声明。3.存储器类型MCS-51单片机有四个存储空间,分为三类:片内数据存储空间、片外数据存储空间和程序存储空间.由于片内数据存储器和片外数据存储器又分为不同的区域,所以变量有更多的存储区域。在定义变量时需指明存放在哪个区域.第4章C51单片机程序设计基础符号 存储空间和存储范围bit 片内数据区的位寻址区,位地址0x00~0x7F,128位(字节地址0x20~0x2f)data 直接寻址片内数据区的低128字节bdata 片内数据区的位寻址区0x20~0x2f,16字节,也可字节访问idata 间接寻址片内数据区的256字节pdata 分页寻址片外数据区的256字节xdata 片外数据区的全空间,64KBcode 全部程序存储空间,64KB第4章C51单片机程序设计基础4.C51的位变量C51编程时定义了位变量,有两种类型:bit型和sbit型。(1)bit型位变量 C51的bit型位变量定义的格式为:[存储类型]bit位变量名1[=初值],位变量名2[=初值],…; 例如:bitdirection_bit,receiv_bit=0; /*direction_bit,receiv_bit定义为位变量*/ staticbitlook_pointer; /*把loo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论