




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51架构与51系列单片机概述22-1.51单片机概述51单片机的起源1980年Intel推出首款8位单片机-8051Intel在80-82年陆续推出和8051指令系统完全相同,内部结构基本相同的8031、8052和8032等型号单片机,初步形成MCS-51系列,被奉为“工业控制单片机标准”84年intel出售了8051的核心技术PHILIPSATMELADICYGNALMAXIM&DALLSSEMICONDUCTOR发展至今形成一个有近千种型号的庞大的51单片机家族。32-1.51单片机概述51系列单片机的鼻祖——80511980年诞生于美国intel公司8bit数据宽度最高运算速度1MPS可以进行乘法运算片内4KbyteROM,128byteRAM64K寻址5级中断管理、2个16bit定时器UART串口、4×8bit并口42-1.51单片机概述51系列单片机的遗传基因兼容的指令系统相同的指令相同的语法相同的基本结构——51架构引脚兼容52-2.51架构(51Architecture)串行通信接口全双工1个ROMTXDRXD中断系统并行通信接口4×8bit定时/计数器n×16bitRAM时钟电路CPU总线控制62-2.51架构(51Architecture)8051内部ROMROM:ReadOnlyMemory(只读存储器)
一般用于存放程序和表格等不常改变的数据常见的ROM种类:掩膜ROM(MaskedROM)EPROM(ElectricallyProgrammableROM)EEPROM(E2PROM)FlashROMOTPROM(OneTimeProgrammableROM)8051单片机的ROM是掩摸ROM:
容量:4096byte(212)
地址范围:0000H~1FFFH72-2.51架构(51Architecture)8051内部RAMRAM:RandomAccessMemory(随机存储器)
一般用于存放程序执行过程中产生的大量的临时数据,相当于PC的内存。
8051单片机的内部RAM:
容量:
128字节
地址范围:
00H~7FH82-2.51架构(51Architecture)8051的CPU-CentralProcessingUnit(中央处理单元)作用:控制协调片内各部分的工作时序逻辑控制和片外联络的时序逻辑运算加法运算减法运算乘法运算除法运算布尔逻辑运算(与、或、非、异或、移位等)92-3.8051单片机引脚功能描述P1口P3口P0口P2口
时钟端
复位端控制信号
接VCC(+5V)
接地端102-4.常见51系列单片机51单片机的改进方向制造工艺更新为CHMOS工艺(型号中含C)
特点:低功耗、高速、电平兼容TTL和CMOS
比如:89C51、80C51采用Pipeline(流水线)进一步提高运算速度
8051:1MIPSC8051Fxx:25MIPS片内植入A/D、D/A、PCA等功能模块向SOC(SystemOnChip)发展片内存储器扩展和改型—FlashROM、OTPROM引入更多的通信方式如SPI、SCI、I2C等采用更小的封装和功耗112-4.常见51系列单片机Philips80C51系列单片机
Philips8位8051单片机系列提供完整的产品类型,包括Flash、OTP(一次性编程)、ROM和无ROM器件。由于为实时应用而设计,这些80C51器件可以广泛应用于从消费类产品、计算机外设到自动化系统的各种领域。
122-4.常见51系列单片机Philips公司的P89LPC7XX系列OTP单片机P87LPCXX是20脚以下小型封装的单片机,适合于许多要求高集成度、低成本的场合。采用加速80C51处理器结构,指令执行速度是标准80C51CPU的两倍,有内部看门狗定时器,提供高速和低速的晶振和RC振荡方式,可编程选择。132-4.常见51系列单片机Philips公司的P89LPC90X系列单片机
P89LPC90X是一系列8脚的单片封装的微控制器,适合于许多要求高集成度、低成本的场合,可以满足多方面的性能要求。P89LPC90X系列器件内部集成了许多系统级的功能,这样可大大减少元件的数目和电路板面积并降低系统的成本。内部Flash同时用作E2PROM使用,内含RTC日历时钟功能。
142-4.常见51系列单片机Philips公司的P89LPC91X系列单片机
152-4.常见51系列单片机Philips公司的P89LPC92X系列单片机
162-4.常见51系列单片机Philips公司的P89LPC93X系列单片机
172.5增强型51单片机-P89V51RD2P89V51RD2单片机简介P89V51RD2XX是Philips公司推出的一款增强型51单片机,以8051为内核,并在8051基础上做了较大改进,性能比8051有很大提升。存储器:程序存储器:64KBFlash数据存储器:1024B时钟:频率:0~40MHz6时钟/12时钟可选定时器/计数器:3个16位的定时器/计数器可编程计数器阵列(PCA)—PWM功能中断资源:中断源:8个中断优先级:4级安全性:可编程看门狗定时器(WDT)掉电检测18CPU64KB程序FLASH1KB数据存储器PORT38-bitPORT28-bitPORT18-bitPORT08-bit片内时钟振荡电路可编程全双工串行通信口SPI(串行外围接口)16-bit定时/计数器T0、T1晶体/阻容振荡器RXDT0T1P2.0-P2.7P1.0-P1.7P0.0-P0.78-bit16-bit定时/计数器T2PCA(可编程计数器阵列)看门狗定时器内部总线TXDP3.0-P3.72.5增强型51单片机-P89V51RD2P89V51RD2单片机内部结构框图193-1.51架构与51单片机的内部存储器51架构串行通信接口全双工1个内部ROMTXDRXD中断系统并行通信接口4×8bit定时/计数器n×16bit内部RAM时钟电路CPU总线控制203-1.51架构与51单片机的内部存储器51架构单片机内部存储器内部ROM内部RAMROM:ReadOnlyMemory
只读作用:存储程序或表格类型:EPROM/FLASH/OTP容量:0~64K(0~65536)
单位-字节(byte)
容量大小视单片机型号不同而不同地址:0000H~RAM:RandomAccessMemory
可读可写作用:存放程序运行中产生的临时数据容量:128byte~
容量大小视单片机型号不同而不同类型:DATA000~127IDATA128~255XDATA000~218051单片机和P89V51RD2单片机的内部存储器对比
P89V51RD2(增强型51MCU)80513-1.51架构与51单片机的内部存储器ROM:PROM(掩膜ROM)
4KByte0000H~1FFFHRAM:DATA-128Byte 00~7FHSFR:21个
80~FFHROM:FlashMemory64KByte0000H~FFFFHRAM:DATA-128Byte00~7FHIDATA-128Byte80~FFHXDATA-768Byte00~2FFHSFR:62个
80~FFH223-2.51单片机的程序存储器管理关于51系列单片机的程序存储器ROM程序存储器用于存放程序和表格等固定数据,掉电数据不丢失每种单片机在其内部都会有0~64K容量不等的ROM如果单片机片内ROM空间不够,可以在单片机外部扩展ROM,但建议用户尽量避免外扩ROM,51系列单片机1000多种型号,一定可以找到内部ROM容量符合要求的单片机。即便是单片机略微贵点也值得目前市面上的单片机ROM主要有FlashMemory和OTP(OneTimeProgrammable)两种,PROM、EPROM等形式的单片机已经很少见了。就开发而言FlashMemory的单片机更加合适,如ATMEL公司的AT89CXX单片机和PHILIPS公司的P89CXX单片机233-2.51单片机的程序存储器管理51系列单片机的程序存储器管理每个ROM单元(byte)对应一个唯一的16bit地址编码(Address)CPU要到某个ROM单元去取指令,是通过把地址写入一个16bit的特殊功能寄存器——程序计数器PC(ProgramCounter)来实现,因此,51系列单片机的地址的编码范围(通常称为寻址范围):
0000000000000000B~1111111111111111B(二进制)
0000H~FFFFH(十六进制)
0~65535(十进制)
通常习惯说51系列单片机的ROM寻址范围是64KPC的值是CPU根据用户程序的运行流程自动装载的,它的值代表单片机下一条要执行的指令在ROM中的存放位置,用户不能直接对PC进行操作243-2.51单片机的程序存储器管理51单片机程序存储器分配0000H
:系统的启动单元系统复位后,单片机从此处开始取指令开始执行0003H
:外部中断0入口地址000BH
:定时器/计数器0中断入口地址0013H:外部中断1入口地址001BH
:定时器/计数器1中断入口地址0023H
:串行中断入口地址2551单片机外扩ROM方法强烈建议用户尽可能不要考虑外扩程序存储器,如果非扩不可,可以仿照下图所示电路进行扩展图中P0口输出外部ROM的低8位地址信号,P2口输出高8位地址信号;ALE端输出地址锁存信号,/PSEN输出程序存储器输出使能信号。3-3.51单片机的ROM扩展263-4.增强型51单片机P89V51RD2的内部ROM两个模块P89V51RD2单片机内部有64K用户ROM区和8KBOOTROM区两个模块1FFFH8KbyteBootROM模块0:存放用户程序0000HFFFFH64Kbyte用户ROMFlash0000H模块1:存放ISP引导程序和IAP函数两个模块在物理上是分开的,尽管地址重合,但一般不会发生冲突。273-4.增强型51单片机P89V51RD2的内部ROM用户程序存储区P89V51RD2内部有64KFlashROM,不需要用户再进行ROM扩展地址范围:0000H~FFFFH其内部分配和其他51系列单片机是相同的FlashROM可以反复擦除和下载程序擦除和编程的方法并行编程器ISP(在系统编程:In-SystemProgram)直接调用单片机BOOTROM区的IAP函数
IAP(在应用编程:In-ApplicationProgram)一般情况下优先使用ISP方式,更方便、更快捷283-4.增强型51单片机P89V51RD2的内部ROM关于BOOTROM区存储介质:FlashMemory容量:8K字节存储内容:ISP引导程序和IAP函数这些程序出厂时已经由PHILIPS已经写入,用户可以对其修改,但建议一般用户不要试图修改它。单片机在复位后会等待400ms,如果在此期间用户在上位计算机上运行了FlashMagic等类似ISP软件,且串口通信正常,单片机将进入BOOTROM区运行ISP引导程序;否则,单片机在400ms以后将自动从用户ROM区0000H单元开始运行用户程序4-1.51系列单片机的RAM结构51系列单片机RAM结构图片外扩展RAM低128字节RAM内部扩展RAM高128字节RAM特殊功能寄存器区00H7FH80HFFH片内片外在上图中,单片机内部低128字节RAM和特殊功能寄存器区是每种51单片机都具备的,高128字节RAM和内部扩展RAM只是部分增强型单片机才具有。大多数单片机应用系统都需要片外扩展RAM,但不绝对。4-2.51单片机的数据存储器管理51系列单片机的数据存储器管理51系列单片机对数据存储器RAM的管理是通过16bit的特殊功能寄存器DPTR(DataPointer)来实现,每个RAM单元(byte)也对应一个特定的地址编码(Address),因此,51系列单片机的地址的编码范围(通常称为寻址范围):
0000000000000000B~1111111111111111B(二进制)
0000H~FFFFH(十六进制)
0~65535(十进制)
因此51系列单片机的RAM寻址范围也是64K51系列单片机ROM和RAM的地址编码范围都是0000H~FFFFH,但由于在寻址时硬件电路上有区别,所以不会混淆。51系列单片机中,单片机外接的接口芯片如A/D、D/A等都有互不相同的地址,这些地址都是占用单片机外部RAM的地址编号。4-2.51单片机的数据存储器管理51系列单片机的数据存储器管理目前的51系列单片机视型号不同内部有128-1024byte不等的RAM空间。用户最好选择合适的单片机型号,避免外扩RAM存储器。4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM所有51单片机内部都含有低128B字节RAM和特殊功能寄存器区。低128字节RAM内部扩展RAM高128字节RAM特殊功能寄存器区00H7FH80HFFH低128字节RAM特殊功能寄存器区00H7FH80HFFH低128字节RAM32字节工作寄存器区16字节位寻址区00H2FH7FH80字节用户区1FH20H30H低128字节RAM4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——低128B低端32个字节分成4个工作寄存器组,每组8个单元(R0~R7)。当前工作寄存器组的机制便于快速现场保护。特殊功能寄存器PSW的RS1、RS0两位决定当前工作寄存器组号。32字节工作寄存器区16字节位寻址区00H2FH7FH80字节用户区1FH20H30H0组00H10H08H18H1组2组3组1FH32字节工作寄存器区组号RS1RS0R7R6R5R4R3R2R1R000007H06H05H04H03H02H01H00H1010FH0EH0DH0CH0BH0AH09H08H21017H16H15H14H13H12H11H10H3111FH1EH1DH1CH1BH1AH19H18H4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——低128B32字节工作寄存器区16字节位寻址区00H2FH7FH80字节用户区1FH20H30H16字节位寻址区4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——低128B该区域每个单元可以作为一般RAM单元整体使用。例如:MOV20H,#23H;将20H单元赋值为23H指令执行后:单元中每一位也可以作为独立的可寻址位单独使用。
例如:20H单元的最低位可表示为
00H——位地址20H.0——存储单元地址加位例如:SETB20H;将24H单元的最低位置为1
指令执行后:32字节工作寄存器区16字节位寻址区00H2FH7FH80字节用户区1FH20H30H0010001120H24H0000000120H位地址单元地址单元地址4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——低128B位寻址区之后的30H-7FH共80个字节为通用RAM区,也称用户区,这些单元可以作为数据缓冲器使用。这一区域的操作指令非常丰富,数据处理方便灵活。在实际应用中,常需在此区设置堆栈。32字节工作寄存器区16字节位寻址区00H2FH7FH80字节用户区1FH20H30H4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——堆栈堆栈——是在RAM区中划定的一个区域,对该区域RAM单元的读写操作必须遵守特定的顺序。比如先入先出,或先入后出原则。堆栈的作用——主要用在子程序的调用过程中或作为特殊的数据交换区。堆栈的开辟栈顶的位置由SP(堆栈指针)寄存器指示。复位时SP的初值为07H,在系统初始化时可以根据用户的需要重新设置。标准8051的堆栈一般设在30H~7FH的范围内。XYZ4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——堆栈堆栈的操作65H64H63H62H61H栈底60H59H内部RAMPUSHPUSHPUSHXYZ入栈过程65H64H63H62H61H栈底60H59H内部RAMPOPLPOPMPOPN
XYZ出栈过程先入后出后入先出4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM——SFR51单片机内部都含有128B的特殊功能寄存器区,其地址为80H—FFH。但不同的单片机内部特殊功能寄存器的个数是不等的。这些特殊功能寄存器用于存放单片机中相应功能部件的控制命令、状态或数据。低128字节RAM特殊功能寄存器区00H7FH80HFFH特殊功能寄存器区4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM—SFR列举其中的几个:寄存器位地址/位名称符号地址ACC0E0H0E7H0E6H0E5H0E4H0E3H0E2H0E1H0E0HB0F0H0F7H0F6H0F5H0F4H0F3H0F2H0F1H0F0HPSW0D0H0D7H0D6H0D5H0D4H0D3H0D2H0D1H0D0HCYACF0RS1RS0OV-PDPL82HDPH83H4-2.51单片机的数据存储器管理标准51系列单片机的内部RAM—SFR使用方法:在这个存储区中,除了特殊功能寄存器之外剩余的空闲单元,用户不得使用;必须使用直接寻址方式进行访问,可使用寄存器的名称或地址:
例如:0E0H——累加器的地址
A——累加器的名称只有具有位地址和位名称的寄存器才可以位寻址;
例如:0D7H——程序状态字最高位的位地址
CY——程序状态字最高位的位名称
0D0H.7——程序状态字字节地址加位
PSW.7——程序状态字字节名称加位4-3.增强型51单片机P89V51RD2的内部RAM内部RAM容量为1KB,增加了高128B和扩展RAM(768B)。低128字节RAM内部扩展RAM高128字节RAM特殊功能寄存器区00H7FH80HFFH000H2FFH4-3.增强型51单片机P89V51RD2的内部RAM内部高128B具有和SFR区相同的地址;访问方式——必须使用间接寻址方式访问例:给90H单元赋值30H可采用如下方式:MOVR0,#90H;指向90H单元MOV@R0,#30H;赋值为30H低128字节RAM内部扩展RAM高128字节RAM特殊功能寄存器区00H7FH80HFFH000H2FFH4-3.增强型51单片机P89V51RD2的内部RAM低128字节RAM内部扩展RAM高128字节RAM特殊功能寄存器区00H7FH80HFFH000H2FFH内部扩展RAM000H2FFH内部扩展RAM(768B):000H~2FFH访问受AUXR(辅助寄存器)中的EXTRAM位控制扩展RAM2FFH000HFFFFH0000H间接寻址外部数据存储器EXTRAM=0EXTRAM=10300HFFFFH间接寻址外部数据存储器内部扩展RAM(768B):000H~2FFH访问方式——间接寻址访问访问指令——MOVX例如:访问内部扩展RAM中0A0H单元可采用:方法一:MOVR0,#0A0HMOVXA,@R0方法二:MOVDPTR,#00A0HMOVXA,@DPTR4-3.增强型51单片机P89V51RD2的内部RAM内部扩展RAM000H2FFH465-1.标准80C51的时钟电路、时间单位与时序时钟电路
——用于产生供单片机各部分同步工作的时钟信号方法1:用石英晶体振荡器方法2:从外部输入时钟信号(80C51)47单片机内部的时间单位5-1.标准80C51的时钟电路、时间单位与时序S1S2S3S4S5S6机器周期TCY分频器振荡器晶振周期时钟周期(S状态)80C51P1P2ALE信号48单片机内部的时间单位振荡频率fosc=
石英晶体频率或外部输入时钟频率
振荡周期=振荡频率的倒数机器周期机器周期是单片机应用中衡量时间长短的最主要的单位在多数51系列单片机中:指令周期——
执行一条指令所需要的时间单位:机器周期
51单片机中:单周期指令、双周期指令、四周期指令5-1.标准80C51的时钟电路、时间单位与时序1机器周期=12×1/fosc49单片机内部的时间单位课堂练习:如果某单片机的振荡频率fosc=12MHz,则:振荡周期=
S=
mS=
uS;机器周期=
uS;已知乘法指令“MULAB”是一条4周期指令,则执行这条指令需要
uS;加法指令“ADDA,#01H”是单周期指令,那么1S内该单片机可以进行
次加法运算。5-1.标准80C51的时钟电路、时间单位与时序50单片机内部的时序单片机执行各种操作时,CPU都是严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序成为时序。单周期指令的操作时序5-1.标准80C51的时钟电路、时间单位与时序
单字节指令双字节指令515-1.标准80C51的时钟电路、时间单位与时序单片机内部的时序双周期指令的操作时序525-2.P89V51RD2单片机的时钟电路、时间单位与时序时钟电路时钟电路参数:频率范围:0~40MHzC1、C2:20~30pF80C51振荡器C1C2CYSXTAL2XTAL1535-2.P89V51RD2单片机的时钟电路、时间单位与时序P89V51RD2的两种时钟模式X1模式X2模式器件含有一个时钟加倍选项,可以加速器件的运行速度。此时:时钟加倍模式只可于加倍内部系统时钟和内部flash存储器(即EA=1)。在访问外部存储器和外围器件时要特别小心,还要注意晶振的输出(XTAL2)是不能加倍的。时钟加倍模式可通过外部编程器或IAP来实现。当该模式被选择时,FST寄存器的EDC位用来指示6时钟模式。1机器周期=12×1/fosc1机器周期=6×1/fosc545-2.P89V51RD2单片机的时钟电路、时间单位与时序P89V51RD2的两种时钟模式——X2模式时钟加倍模式可通过外部编程器或IAP来实现。当该模式被选择时,FST寄存器的EDC位用来指示6时钟模式。
FST-Flash状态寄存器的位分配(地址:B6H)不可位寻址;复位值:xxxxx0xxB位序D7D6D5D4D3D2D1D0位名称-SB--EDC---保密位使能加倍时钟555-3.P89V51RD2单片机的复位与复位电路复位的概念复位:将单片机系统置成特定初始状态的操作。复位后程序从头(0000H)开始重新执行。何时复位刚通电时——上电复位,进入初始状态重新启动时——回到初始状态、重新开始程序故障时——回到初始状态、重新开始复位是什么?一般在什么时候需要进行复位?565-3.P89V51RD2单片机的复位与复位电路复位后单片机的特点寄存器初始状态值寄存器初始状态值PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0、P1
P2、P30FFHSCON00HIPXXX00000BPCON0XX00000BIEN00XX00000BSBUF不定复位后单片机是什么样的呢?575-3.P89V51RD2单片机的复位与复位电路复位的方法在RST引脚上加一个持续两个机器周期以上的高电平脉冲,就可以使单片机被复位。585-3.P89V51RD2单片机的复位与复位电路复位电路上电复位595-3.P89V51RD2单片机的复位与复位电路复位电路手动复位605-3.P89V51RD2单片机的复位与复位电路复位电路采用专用的复位芯片MAX810复位615-3.P89V51RD2单片机的复位与复位电路复位电路——复位芯片MAX810MAX810是一种单一功能的微处理器复位芯片,用于监控微控制器和其他逻辑系统的电源电压。它可以在上电、掉电和节电情况下向微控制器提供复位信号。当电源电压低于预设的门槛电压时,器件会发出复位信号,直到在一段时间内电源电压又恢复到高于门槛电压为止。特性参数:监控5.0V、3.3V、3V电源;典型值17μA的低电源电流;高电平有效的RESET输出;抗电源的瞬态干扰;625-3.P89V51RD2单片机的复位与复位电路复位电路——复位芯片MAX810特性参数(续)复位延时时间最小为140ms;低至1.1V电源时仍能产生有效的复位信号;小型的三管脚SOT-23封装;无需外部配件;适用于-40℃~+105℃的温度范围。635-3.P89V51RD2单片机的复位与复位电路P89V51RD2单片机的软件复位通过将FCF.1(SWR)从‘0’变为‘1’来实现软件复位。软件复位后,程序计数器指向0000H地址。所有SFR寄存器都被设置成各自的复位值,但FCF.1(SWR)、WDTC.2(WDTS)和RAM数据将保持不变。646-1.51单片机汇编语言的指令格式一个简单的彩灯设计下图中的8个发光二极管代表8组彩灯,让它们按你的想法显示吧图3-1彩灯电路656-1.51单片机汇编语言的指令格式汇编语言程序MAIN:MOVSP,#60H;初始化
MOVTMOD,#11H
CLRIT1
CLRIT0
MOVR0,#7FH
MOVR1,#7CHSET:MOV@R0,#00H;清除数据区
DECR0
DJNZR1,MAIN1
MOVDPTR,#PORT;8279控制口
SETBP1.7758158758911C28AC288787F797C760018D9FB90A000D297程序是如何进单片机的?编程器开发软件666-1.51单片机汇编语言的指令格式51单片机指令格式程序片段机器码
MOVSCON,#00H;SCON←00H,串口工作于方式0MOVSBUF,A;将SBUF←(ACC)WAIT0:JCTI,WAIT0;发送完一个字节吗?
CLRTI;清除TI中断标志
INCA759800F5992099FDC29904676-1.51单片机汇编语言的指令格式汇编语言指令格式[标号]:操作码[操作数];[注释]
↓↓↙↘↓WAIT0:JCTI,WAIT0;发送完一个字节吗?标号又称为指令地址符号。对标号有如下规定:一般由1~8个ASCII字符组成,以字母开头,其余字符可以是字母、数字和其他特定字符。不能使用助记符、伪指令或者寄存器的符号名称做标号。与操作码之间用冒号分开,带方括号表示为可选项。一个标号只能在程序中出现一次,不能重复出现。操作码是由助记符表示的字符串,它规定了指令要完成的具体操作。操作数是指参加操作的数据或数据的地址。注释是为该条指令所做的说明,以便于阅读,中英文不限,用“;”和指令分开。68分类方法6-1.51单片机汇编语言的指令格式51单片机汇编语言指令分类按指令占用的ROM空间双字节指令单字节指令三字节指令按指令执行的时间双周期指令单周期指令四周期指令按指令功能控制转移类指令逻辑运算类指令位操作类指令算术运算类指令数据传送类指令696-1.51单片机汇编语言的指令格式汇编指令及其注释中常用的符号Rn(n=0~7)------当前选中的工作寄存器组中的寄存器R0~R7之一Ri(i=0,1)------当前选中的工作寄存器组中的寄存器R0或R1@---------------间址寄存器前缀#data------------8位立即数#data16-----------16位立即数direct------------片内低128个RAM单元地址及SFR地址(可用符号名称表示)addr11------------11位目的地址addr16------------16位目的地址rel---------------补码形式表示的8位地址偏移量,值在-128~+127范围内bit---------------片内RAM位地址、SFR的位地址(可用符号或名称表示)/-----------------位操作数的取反操作前缀(×)------------表示×地址单元或寄存器中的内容((×))--------表示以×单元或寄存器内容为地址单元的内容706-2.指令表的查阅从指令表中可以得到的信息指令名称——指令的书写规范机器代码——指令在单片机中的存储内容指令功能——指令的执行效果指令的字节数——指令的长度(所占存储单元的个数)指令周期——指令的执行时间(以机器周期为单位)716-2.指令表的查阅指令表的作用用于修改指令中的语法错误。例如:查找指令MOVR8,#30中的语法错误。
语法错误一般会出现在标号处(标号过长、标号名称重复)、操作码处(操作码使用不当、书写错误)、操作数处(操作数使用不当、书写错误)、符号错误等处。本条指令中操作数R8是错误的,在指令表中词条指令的格式为:
MOVRn,#data,其中Rn代表R0~R7,并没有R8。726-2.指令表的查阅用于了解指令功能例如:若CY=1,(A)=30H,(55H)=70H,问以下两条指令的执行效果一样吗?
a)ADDA,55H;
b)ADDCA,55H;答:查阅指令表后可知:
a)指令的功能为A(A)+(55H)b)指令的功能为A(A)+(55H)+CY
可见指令a为两个数相加,而指令b为三个数相加,而此时CY=1,故执行的效果不一样。(A)=0A0H(A)=0A1H736-2.指令表的查阅例如:若(SP)=62H,问以下程序段中4200H:LCALLDISPLAY4203H:MOV41H,#33…………4500H:DISPLAY:MOV40H,A…………
LCALL指令执行后(SP)=(62H)=(63H)=
(64H)=(PC)=查阅指令表后可知LCALL指令为子程序调用指令,其功能为:此时,会将LCALL指令的下一条指令的首地址(4203H)放入堆栈中保存,以便子程序执行后返回正确的位置,然后程序转向DISPLAY(4500H)处执行。PC(PC)+3,SP(SP)+1,(SP)(PC)7~0,SP(SP)+1,(SP)(PC)8~15,PCaddr1664H××H03H42H4500H746-3.寻址方式立即寻址例:
MOV30H,#00H
;将立即数00H送给30H单元,即
30H←00H
在上面这条指令中,带下划线的操作数(在传送指令中称源操作数)是一个立即数,即一个指定的常数,这种寻址方式就称为立即寻址。注意:立即数的前面必有“#”标志。
比如:
ADDA,#0AFH;A←(A)+AFH756-3.寻址方式直接寻址例:
MOVA,30H
;将内部RAM中30H单元内的数据;送给累加器A,即A←(30H)
在上面这条指令中,带下划线的操作数(源操作数)是直接给出内部RAM中某个单元的地址或名称(特殊功能寄存器),这种寻址方式称为直接寻址。比如:
MOV40H,A
;40H←(A)SUBBA,60H
;A←(A)-(60H)-CY766-3.寻址方式寄存器寻址例:
MOVA,R7
;将通用寄存器R7中的数据送给A,即A←(R7)
在上面这条指令中,带下划线的操作数(源操作数)是当前工作寄存器组中某个寄存器,这种寻址方式称为寄存器寻址。比如:
XCHA,R1
;累加器A和寄存器R1中的数互换776-3.寻址方式寄存器间接寻址例:
MOVR0,#3FH;R0←3FH,立即寻址方式
MOVA,@R0
;A←((R0)),即:A←(3FH)
在上面的第2条指令中,带下划线的操作数不是R0,而是以(R0)为地址,间接找到内部RAM中的3FH单元,将(3FH)送给A,这种寻址方式称为寄存器间接寻址。可用R0、R1和DPTR作间址寄存器,访问片内RAM或片外64KB的RAM地址空间。
比如:
MOVDPTR,#0CFA0H;将十六位地址CFA0H赋给数据指针DPTRMOVXA,@DPTR
;将片外RAM(CFA0H)单元内的数送给A786-3.寻址方式变址寻址例:
MOVCA,@A+DPTR
;将地址为(A)+(DPTR)的ROM
;单元中的数送给A
在上面这条指令中,带下划线的操作数是以(DPTR)为基址,(A)为变址,将两者之和作为地址,找出该地址对应的ROM单元,再将该单元的数送给A,这种寻址方式称为变址寻址方式。MCS-51单片机中还有两条变址寻址指令:
MOVCA,@A+PCJMP@A+DPTR796-3.寻址方式相对寻址例:
CJNEA,#80H,BUDENG
;如(A)≠80H,跳转到BUDENGJNCDAYU
;如(A)>80H,跳转到DAYU……BUDENG:SETBFLAG0;置位标志位FLAG0……DAYU:SETBFLAG1;置位标志位FLAG1……
在上面这个程序片段中,带下划线的操作数指明了程序跳转的目的位置,这个目的位置的PC相对于下一条程序语句的PC不得超出-128~+127字节的范围。
806-3.寻址方式位寻址例:
MOVC,30H
;将地址为30H的位的状态赋给进位位CySETBP1.0
;将P1口(对应特殊功能寄存器P1)的P1.0位置1
在上面这两条指令中,带下划线的操作数不是某个字节地址或某个数,而是内部RAM中某个可直接寻址位的地址或名称,是针对位(bit)进行的操作,这种寻址方式称为位寻址。在指令表中,凡用bit和C做操作数的指令都属此类,它主要用在位操作指令和部分条件转移指令中。比如:
ANLC,OV;位C和溢出位OV相与,结果再赋给C,即;C←C∧OVCLRRI;将串口接收中断位RI清0817-1.设计范例——数码管显示要求在最左侧的数码管上显示数字1。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.0827-1.设计范例——数码管显示范例分析:硬件分析电路中用到了单片机的并行I/O口和数码管软件设计由于硬件电路中数码管接在单片机的P0口上,故将显示内容送至单片机的P0口就可以在数码管上看到显示内容。
837-2.单片机的并行I/O接口8051单片机的并口是几位的?在四个并口中,真正的双向口是哪一个?它的用法有多少种?四个并口中功能相对较为简单的是哪一个?在作为输入、输出口使用时有何不同?在实际应用中,并口的使用要考虑其负载能力,在四个并口中负载力相对较强的是哪一个?84P0口P1口P2口P3口7-2.单片机的并行I/O接口857-2.单片机的并行I/O接口四个并口的比较作通用I/O口其他用法备注输入口输出口P0口MOVA,P1需要外接上拉电阻数据总线(双向)地址总线低8位地址范围00H—FFHP1口先向锁存器写1例如:MOVP1,#0FFHSETBP1.0SETBP3.3SETBP3.7MOVP1,#30MOVP2,#50MOVP3,#60P2口地址总线高8位地址范围00**H—FF**HP3口第二功能第二功能优先867-2.单片机的并行I/O接口例1:电路如下图所示,试用二极管显示按键当前状态。电路分析:电路中P1口的低四位接按键,作输入口使用,高四位接发光二极管,作输出口使用。87软件设计:7-2.单片机的并行I/O接口………L:MOVP1,#0FHMOVA,P1ANLA,#0FHSWAPAMOVP1,ASJMPL;将P1口低四位置为输入口;将按键状态读回单片机;将读回数据的高四位清零;将状态值交换到A的高四位;将状态值送至P1口的高四位;返回起始点这是流程图,在设计程序之前应首先绘制流程图,流程图是编写和修改程序的依据。887-2.单片机的并行I/O接口从这一实例中我们可以看到:同一个并口的每一位可以单独使用,例如:
SETBP1.0;将P1.0置1也可以设置某些位为输入口,某些位为输出口。例如本例中P1口的低四位为输入口,高四位为输出口。897-3.数码管基础知识与单片机接口的常用显示器件有LED(LightEmitingDiode)和LCD(LiquidCrystalDisplay),这里主要介绍LED数码管的相关知识。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.0907-3.数码管基础知识——预备知识七段显示器的原理共阴结构共阳结构917-3.数码管基础知识——预备知识数码管的显示代码表COMdpgfedcba段码00001111113FH100000011006H20010110115BHCOMdpgfedcba段码0111000000C0H1111111001F9H2110100100A4H
共阳数码管段码
共阴数码管段码927-3.数码管基础知识——预备知识共阴、共阳数码管比较例2:使下面两个数码管都显示H。H的段码:H的段码:#76H#89H937-3.数码管基础知识本讲范例中使用的是4位动态数码管连接关系段码输入端四位的位选端94P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.07-3.数码管基础知识怎样才能只让最左侧的数码管显示,其他的3个熄灭呢?(图中为共阳数码管)?01111选中最左侧的:CLRP3.5SETBP3.4SETBP3.3SETBP3.2957-4.数据传送类指令外部RAM外部I/O接口芯片外部ROMMOVCMOVXMOVCMOV内部RAM内部ROMCPUXCHXCHDPUSHPOPSWAP967-4.数据传送类指令内部RAM中的数据传送类指令directA@RiRn#data格式:
MOV
目的操作数,源操作数
图中箭头为双向的表示数据可双向传递,例如direct(直接寻址单元,例如内部RAM的30H单元)与A之间,数据可由direct送给A,也可由A送给direct。977-4.数据传送类指令数据指针赋值指令(16bit数据传送指令)
当要对片外RAM、I/O接口进行访问,一般要先给数据指针DPTR赋值,此时应用该条指令:
MOVDPTR,#data16
;将16bit二进制立即数赋给数据指针DPTR比如:将数据指针指向片外RAM的2000H单元。
MOVDPTR,#2000H片外数据传送指令(4条)
当你想把一个数送到单片机外部扩展RAM的某个单元或外部扩展I/O口某个端口,或者你想从该单元、端口将数据取回到单片机内部的时候,就要用到片外数据传送指令。
MOVXA,@Ri;A←((Ri))片外
MOVXA,@DPTR;A←((DPTR))片外
MOVX@Ri,A;(Ri)片外←A
MOVX@DPTR,A;(DPTR)片外←A
如果以Ri作指针,只能访问00~FFH地址段的外部RAM或I/O端口。如果以DPTR作指针,则能访问0000~FFFFH地址段的任何外部RAM单元或I/O端口。987-4.数据传送类指令数据交换类指令整字节交换指令XCH(字节单元与累加器A进行8位数据交换)
XCHA,RnXCHA,directXCHA,@RiARnDirect@Ri例如:若(A)=35H,(R1)=79H,执行指令XCHA,R1后(A)=(R1)=
0011010101111001A:R1:011110010011010179H35H997-4.数据传送类指令低半字节交换指令XCHD(字节单元与累加器A进行低4位数据交换)
XCHDA,@Ri(A)0~3((Ri))0~3例如:若(A)=45H,(R1)=30H,(30H)=89H,执行指令
XCHDA,@R1后(A)=(R1)=(30H)=A:R1:30H:01000101001100001000100101001001001100001000010149H30H85H1007-4.数据传送类指令累加器A高低半字节交换指令SWAP(累加器A的高、低半字节互相交换)
SWAPA例如:若(A)=45H,执行指令SWAPA后(A)=54H(A)0~3(A)4~7
注:此条指令通常用于数据处理时,同逻辑与指令相配合,将数据的高、低四位拆分后分别存放。1017-1.设计范例——数码管显示P0口P3.5P3.4P3.3P3.2P1.3P1.2P1.1P1.0MOVP0,#0C0H此时对P0口操作,应使用MOV指令。1027-5.程序设计一般步骤分析课题,确定解决方案和算法;分配系统资源及存储单元;绘制程序流程图;设计程序,并反复调试和修改。1037-5.程序设计一般步骤例3:彩灯循环设计。1047-5.程序设计一般步骤——彩灯循环程序设计实例
ORG0000HMAIN:MOVP1,#80H;D7发光
MOVP1,#40H;D6发光
MOVP1,#20H;D5发光
MOVP1,#10H;D4发光
MOVP1,#08H;D3发光
MOVP1,#04H;D2发光
MOVP1,#02H;D1发光
MOVP1,#01H;D0发光
SJMPMAIN;循环1057-5.程序设计一般步骤——彩灯循环程序设计实例彩灯循环另一种程序结构:
ORG0000HMAIN:MOVA,#01H;初始状态
MOVR0,#08;共8位
L1:MOVP1,A;D1发光
LCALLDEL;延时子程序
RLA;状态上移1位
DJNZR0,L1;循环判断
SJMPMAIN;循环1068-1.设计范例——数码管循环显示要求在最右侧的数码管上循环显示数字1~5。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.01078-1.设计范例——数码管循环显示范例分析:硬件分析设计中要求选中最右侧的数码管,根据电路结构,应通过P3.2选中该位数码管。软件设计设计中要求循环显示1~5,很显然应采用循环的方法来实现,最简单的方法是将1~5的段码依次由P0口送出。108准备程序:
ORG0000HMAIN:CLRP3.2MOVP0,#0F9HMOVP0,#0A4HMOVP0,#0B0HMOVP0,#99HMOVP0,#92H
SJMPMAIN延时一段时间相邻数字之间需要间隔一段时间吗?如果不间隔时间,在数码管上会看到什么现象?相邻数字之间需要间隔一段时间吗?如果不间隔时间,在数码管上会看到什么现象?8-1.设计范例——数码管循环显示1098-2.控制转移类指令(1)长转移指令
LJMP目标语句说明:目标语句可以是程序存储器64KB空间的任何地方。绝对转移指令
AJMP目标语句例:4002HAJMPMM……4600HMM:MOVA,#00H注意:目标语句必须和当前语句同页。在51单片机中,64KB程序存储器分成32页,每页2KB(7FFH)。1108-2.控制转移类指令(1)短跳转指令
SJMP目标语句(rel)例:
4060HSJMPLOOP……4090HLOOP:MOVA,#0FFH……注意:短跳转的目标语句地址必须在当前语句向前127(7FH)字节,向后128(80H)字节,否则在进行程序编译时会出错。1118-2.控制转移类指令(1)变址寻址转移指令
JMP@A+DPTR
该指令主要用于多分支的跳转程序设计。跳转的目标地址是累加器A和数据指针DPTR之和,它可以是64KB存储空间的任何地方。程序设计举例:如果(A)=00H,执行SS子程序;如果(A)=01H,执行MM子程序;如果(A)=02H,执行XX子程序。
ORG4000HMOVDPTR,#5000HMOVR2,A
CLRCRLCAADDA,R2JMP@A+DPTR……ORG5000H5000HLJMPSS5003HLJMPMM5006HLJMPXX
1128-2.控制转移类指令(1)减1条件转移指令组
DJNZRn,目标地址(rel);如果(Rn)-1≠0,则程序跳转到目标语句,否则顺序执行下一条语句。
DJNZdirect,目标地址(rel)
;如果(direct)-1≠0,则程序跳转到目标语句,否则顺序执行下一条语句。例:问执行以下程序段后,(A)=?
MOVR5,#02HDJNZR5,L1SJMPL2SJMP$L1:MOVA,#00HSJMP$L2:MOVA,#01HSJMP$程序执行后(A)=00H;(R5)=02H;(R5)-1=01H,程序转至L1处执行1138-3.延时程序的编写延时程序是一种应用较为广泛的小程序,一般采用多条语句循环执行来实现延时。例1:当前fosc=6MHz,试计算下面延时程序的延时时间。因为fosc=6MHz,故T机=12/fosc=2usDEL1:MOVR6,#50DEL2:NOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广西壮族自治区柳州市2024-2025学年八年级下学期6月期末道德与法治试题(含答案)
- 山东省聊城市东昌府区2026届中考三模英语试题含答案
- 成人继续教育线上学习模式在2025年的在线教育市场拓展策略
- 餐饮用工合同(30篇)
- 库房管理管理制度(33篇)
- 2025年医药卫生考试-深圳药师上岗能力测试历年参考题库含答案解析(5卷100道合辑-单选题)
- 深海风电项目技术创新与产业发展趋势:2025年海上风能资源评估与发展规划研究报告
- 2026届湖北省襄阳市宜城区重点名校中考语文模试卷含解析
- 2026届江西省全南县初中语文毕业考试模拟冲刺卷含解析
- 2025四川成都九洲迪飞科技有限责任公司招聘射频工程师等岗位测试笔试历年参考题库附带答案详解
- 2025年新版三级安全教育考试试题及答案
- 银行企业文化故事课件
- DB41-T 2881-2025 水利工程水文化建设导则
- 2026届四川省成都市高三上学期摸底测试(零诊)历史试卷(含答案)
- 四川省建制镇生活污水处理设施建设和运 行管理技术导则
- 超声科副主任竞聘演讲
- 乡镇统计培训会课件
- 公司技术项目管理办法
- 环境检测工(采样技术)岗位面试问题及答案
- 2025年食品安全监管员专业知识测试试题A卷-附答案
- 2025年公需科目考试试题及答案
评论
0/150
提交评论