《单片机原理与应用-基于Ai8051U系列高级8051单片机 (第4版)》全套教学课件_第1页
《单片机原理与应用-基于Ai8051U系列高级8051单片机 (第4版)》全套教学课件_第2页
《单片机原理与应用-基于Ai8051U系列高级8051单片机 (第4版)》全套教学课件_第3页
《单片机原理与应用-基于Ai8051U系列高级8051单片机 (第4版)》全套教学课件_第4页
《单片机原理与应用-基于Ai8051U系列高级8051单片机 (第4版)》全套教学课件_第5页
已阅读5页,还剩645页未读 继续免费阅读

下载本文档

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

文档简介

第1章

单片机系统概述

全套可编辑PPT课件课程主要内容

1、单片机的概念和发展2、单片机体系结构(重点)3、单片机指令系统(重点)4、单片机汇编程序设计(C51编程、混合编程)5、单片机中断系统(重点、难点)6、单片机定时器/计数器、串行口(重点、难点)(内部其他功能部件简介ADC、SPI、PCA/PWM等)7、单片机系统的扩展(重点介绍并行总线原理+2个实例)8、单片机与键盘、显示、打印机(重点键盘+显示与编程)9、单片机与A/D、D/A转换器接口(重点接口和数据采集方法)10、单片机应用编程设计仿真(简要演示1节课,学生自学)课程学习和考核:

(1)理论与实践并重;

(2)多做实验研究,学习翻阅科技文章;

(3)课内、课外相结合,加强动手能力训练;

(4)成绩:期终考试60,平时考核10分实验考试30第1章单片机概述

单片机产生于20世纪70年代。单片机的特点:

体积小,重量轻,抗干扰能力强,对运行环境要求不高,价格低廉,可靠性高,灵活性好。1、什么是计算机?(CPU、RAM、ROM、I/O)2、什么是单片机?

剪裁计算机的功能部件后在一块半导体硅片上集成如下部件的芯片称为单片机:

(1)微处理器(CPU)(2)存储器(RAM、ROM或EPROM)(3)各种输入、输出接口1.1什么是单片机3、单片机具有一台计算机的属性。也称为:

微控制器MCU(MicroControllerUnit)

嵌入式控制器EMCU

(EmbeddedicroControllerUnit)在我国,习惯使用“单片机”这一名称。4、单片机的组成结构1.2单片机的发展概况五个阶段:第一阶段(1974年~1976年):单片机初级阶段。双片的形式,且功能比较简单。第二阶段(1976年~1978年):低性能单片机阶段。以

Intel公司制造的MCS-48单片机为代表。第三阶段(1978年~现在):高性能单片机阶段。

Intel公司的MCS-51系列、Mortorola公司的6801系列等。第四阶段(1982年~现在):8位单片机巩固发展及16

位单片机、32位单片机推出阶段。第五阶段(1990至今):微控制器的全面发展阶段。

Intel公司单片机系列典型产品:

MCS-48(8035、8048、8748)

MCS-51(8031、8051、8751)

MCS-52(8032、8052、8752)

MCS-96(8098、8398、8798)注意:这些产品在实际应用中已经淘汰,但其原理尚存,并发扬光大。1.3单片机的特点:

1.小巧灵活、成本低、易于产品化

2.面向控制,完成各种控制任务

3.抗干扰能力强,适应温度范围宽

4.可以很方便地实现多机和分布式控制1.48位单片机的主要生产厂家和机型(1)美国Intel公司

MCS-51系列及其增强型、扩展型系列。(2)国产STC的STC89xx、STC15xx

、AI8051U(3)台湾Winbond的W78C52和W78C54系列

(4)美国Atmel公司AT89和AT90系列

以及PIC系列、MSP430系列、C8051F系列等等。51系列单片机在我国广泛应用;

8051单片机品种多、兼容性好、性价比高;

51系列的软、硬件设计资料丰富齐全;

51系列单片机及其衍生兼容机型仍将是主流产品,是现代工业检测、控制应用的重要机型。MCS-51系列单片机的演绎20世纪80年代后期:Intel公司以专利的形式把

8051内核技术转让给厂家。

这些厂家生产的兼容单片机,与8051的系统结构(主要是指令系统)相同,采用CMOS工艺。如:AMTEL、PHILIPS、ANALOGDEVICES、DALLAS公司。

不应直接称8051单片机为MCS-51系列单片机。MCS只是特指Intel公司生产的单片机的符号,即MCS-51系列。80C51系列:所有的具有8051指令系统的单片机,带C的是低功耗型。

按字长分:4位、8位、16位和32位单片机。

在8位单片机家族中,主流产品有:

(1)80C51内核(2)Motorola内核(3)PIC内核的单片机。

1.58位单片机介绍1、增强型STC单片机

STC是2005年推出中国本土的第一款具有全球竞争力的、且与MCS-51兼容的STC单片机。主要产品型号:STC89C51RC、STC89C52RC、STC89C53RCSTC12C系列、STC15F2K60S2系列

、STC8H系列、AI8051U系列等单片机。各单片机系列内部资源见课本的表1-3、1-4、1-5、1-6、1-7。1.5.180C51单片机介绍2、NXP增强型单片机

Philips公司的P89LPC900系列是采用了增强型80C51内核制造而成的增强高档型单片机。主要产品型号:

P89LPC9321、P89LPC936、P89LPC938P89C51、P89C523.AVR高速型单片机是ATMEL公司于1997年由A先生和V先生结合Flash技术,推出全新配置的精简指令集(RISC)8位单片机。主要产品型号有:ATtiny13,ATtiny24、AT90S8535、ATmega8

。4.C8051Fxxx系列高速单片机

是Cygnal公司推出的、与8051指令集兼容的单片机,弥补了8051系列单片机的速度慢、内部资源少的不足。如:C8051F120--4KRAM、128KROM、8个I/O口、12位A/D、100引脚C8051F022--4KRAM、64KROM、8个I/O口、12位A/D、100引脚C8051F023--4KRAM、64KROM、4个I/O口、10位A/D、64引脚5.专用型

针对某一种产品或某一种控制应用而专门设计的,设计时已使结构最简,软硬件应用最优,可靠性及应用成本最佳。例如:电子表、电话机、电视机和空调里的就嵌入了一种专用型单片机。1.5.2Motorola内核的单片机

Motorola公司是世界上最大的单片机厂商之一。

1、MC68HC05采用HCMOS工艺制造,是一种高性能、低功耗的8位单片机。

2、MC68HC08系列单片机是在MC68HC05的基础上进行改进后的8位单片机。

1.5.3PIC内核的单片机

PIC系列单片机是美国Microchip微芯公司的制造的另一款8位单片机。特点:

1、采用RISC指令集

2、33条指令,指令最短执行时间160ns3、指令系统和开发工具与8051系列不同。主要有:PIC16C5X、PIC16CXX、PIC17CXX和PIC18CXXX系列1.5.4其他公司8位单片机

1、MDT20xx系列单片机

2、日本TOSHIBA的4位机、8位机

3、Zilog公司的单片机Z84、EPSON公司的单片机

5、NS公司的COP8单片机

6、先锋Chipcon公司推出了全新概念的新一代ZigBee无线单片机CC2430/CC24317、富士通单片机MB89P935C。等等1.616位和32位单片机系列介绍

1.6.116位单片机是高性能单片机。主要有:

1、凌阳16位单片机

2、TI公司的MSP430C系列(极低功耗的单片机)

3、PIC18CXXX系列单片机。

1.6.232位单片机

32位单片机又称嵌入式处理器,是面向特定应用,隐藏于应用系统或电子产品内部的专用计算机。主要有:

(1)Philips公司的LPC2220系列

(2)SAMSUNG公司的S3C44B0X系列

(3)IBM公司的PowerPC系列

(4)MIPS公司的MIPS系列

(5)Sun公司的Sparc

(6)ARM公司的ARM系列嵌入式处理器。

(7)ST意法半导体公司Cortex-M3为内核STM32F103系列1.7单片机的发展趋势

1.改进CPU结构

2.低电压、低功耗CMOS化

3.改善存储器性能

4.改进I/O口性能

5.外围电路内装化

6.主流与多品种共存

7.片内ROM中固化应用软件和系统软件1.8单片机的应用

单片机卓越的性能,在武器装备、卫星、通信、导航、工业自动化、民用智能产品等方面都得到了最广泛的应用,已深入到政治、经济、军事、社会生活的各个领域。使用温度:民品:

0°C—+70°C工业品:

-40°C—+85°C军品:

-65°C—+125°C。在下述的各个领域广泛的应用:1、测控系统,工业自动化系统2、智能仪器仪表3.消费类电子产品4.机电一体化产品5.军事武器装备6.终端及外部设备智能接口7.通信、卫星、导航8.多机分布式系统思政小故事:北斗导航系统建造起因起因1:海洋货运……受阻

(1)1993年中国货运银河号满载货物由天津港出发运往迪拜。

(2)这是一场再正常不过的货运贸易。

(3)中途美国突然声称银河号上载有运往伊朗的违禁化学品,要求登船检查。

(4)银河号没有理会这无理要求,美国就把银河号附近的GPS关断了。导致银河号海上漂泊33天。思政小故事:北斗导航系统建造起因起因2:台海危机……军演受挫

(1)1996年台海危机爆发,解放军三军实弹演习试射导弹震慑台湾,试射了三发,第一发命中。

(2)让解放军吃惊的是,后两枚导弹发射不久就神秘失去了联络,根本无法追踪导弹飞行轨迹。

(3)原来是美国人关停了GPS系统,使我们的导弹成了瞎子,飞到了哪都不知道。

(4)最后发现严重偏离预定目标,坠入远方的大海中。第2章

8051单片机的体系结构

2.18051单片机内部结构八大功能部件:(1)微处理器(8位CPU)(2)程序存储器(ROM、EPROM或Flash等)(3)数据存储器(RAM、E2PROM)(4)四个8位并行可编程I/O端口(P0、P1、P2、P3)(5)一个串行口(UART)(6)两个16位定时器/计数器(T0/T1)(7)中断系统(含5~8个中断源、2个优先级)(8)特殊功能寄存器(SFR)

还包含:时钟振荡器、总线控制器和供电电源此外,有的还有其它功能部件,例如:STC15系列单片机,其内部资源丰富,功能很强:

A/D、D/APWM、PCAWDTSPI、I2C、ISP、IAP2.28051单片机芯片引脚功能单片机芯片双列直插封装方式引脚图

2.28051单片机芯片引脚功能单片机芯片方形封装方式引脚图

2.28051单片机芯片引脚功能单片机芯片引脚功能1.主电源引脚(1)GND接地(2)VCC正常操作时为十5V电源。2.时钟电路引脚(1)XTAL1:(2)XTAL2:3.控制线与电源复用引脚(1)RST/VPD:RST是复位信号,高电平有效。

VPD为第二功能,备用电源输入端。(2)ALE/PROG:ALE为地址锁存允许信号输出引脚。

PROG为编程信号,第二功能,低电平有效。(3)PSEN:片外ROM选通信号输出端,低电平有效。(4)EA/VPP:EA为内部和外部ROM控制端

当EA=1时,从内ROM开始访问当EA=0时,只访问外部ROM

VPP是编程电源输入端4.并行输入/输出引脚(1)P0口:P0.0~P0.7统称为P0口(2)P1口:P1.0~P1.7统称为P1口(3)P2口:P2.0~P2.7统称为P2口(4)P3口:P3.0~P3.7统称为P3口

2.2.2STC8H系列高级8051单片机引脚功能

1.时钟引脚:科连接4~45MHz的外部晶振和外部时钟作为时钟源;2.控制线与复用引脚:去掉了PSEN、EA、RST引脚。保留了ALE地址锁存控制信号,增加了ADC_VRef+接ADC的基准电源脚,将UCap作为电容触摸屏脚。3.并行I/O口引脚:STC8H8K64U采用LQFP64封装,包含P0、P1、P2、P3、P4、P5、P6、P7共8个并行8位端口、60根I/O口线,并集成了可通/断的4.1kΩ上拉电阻。2.3经典8051中央处理器

单片机的CPU是完整的1位微计算机。这个1位微计算机包含CPU、位寄存器、I/O口和指令集。

CPU内部包含:

1、运算器

2、控制器

3、存储器。2.3.1运算器

运算器包含:

1.算术逻辑运算单元ALU---算术运算、逻辑运算

2.累加器A---相当于数据加工厂

3.位处理器---位运算

4.BCD码修正电路---十进制数的运算处理

5.PSW---记录程序运行状态2.3.2控制器

主要工作任务:识别指令,控制各功能部件,保证各部分有序工作。

控制器包括:指令寄存器、指令译码器、程序计数器、程序地址寄存器、条件转移逻辑电路、时序控制逻辑电路。

1、指令、指令译码及控制器指令---就是完成某项操作的命令。指令译码---对指令进行解析和翻译控制器---发出相应的控制信息,指挥运算器和存储器协同完成指令所要求的操作。例如:下面是单片机的一条指令:

0010010100110000

(A)+(30H)

该指令是加法指令,指令占2字节2、指令集和指令助记符指令译码器所能解析系统在设计时规定的。为直观表达,用指令助记符表示。例如,上面的加法指令的助记符为:

ADDA,30H3、程序及程序计数器PC什么叫计算机程序:为完成一个完整的运算任务,按照执行步骤用计算机指令编写的指令集合。执行程序指示:地址由PC指示。2.3.3程序执行过程

PC象引路人,称为程序运行指针,执行流程如图:程序指令取指执行过程1、复位PC=00002、从PC取指,PC+13、取数据4、执行指令5、取下一条指令……2.48051单片机的存储结构

8051单片机存储器采用哈佛结构:

1、有一根地址和数据总线。

2、程序存储器空间和数据存储器空间采用独立编址。

3、拥有各自的寻址方式和寻址空间。2.4.18051单片机的存储器结构8051单片机存储器从物理结构上分四种:

1、片内程序存储器(只读存储器ROM)

(类型:ROM、PROM、EPROM、E2PROM、Flash)

2、片外程序存储器(类型同上)

3、片内数据存储器(读写存储器RAM)

(类型:SRAM、DRAM、E2PROM、Flash)

4、片外数据存储器(类型同上)从寻址空间分布上分三种:程序存储器、内部数据存储器外部数据存储器。从功能作用上可五种:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间存储器和外部数据存储器。2.4.18051单片机的存储器结构图2.4.2程序存储器:可寻址的地址空间为64KB,编址0000H~FFFFH。用EA信号选择片内、片外程序存储器:对于STC89C51单片机(片内有4KB),编址为0000~0FFFH,EA接高电平,从片内0000H开始执行程序。对于8051单片机无内部程序存储器,EA接低电平,从片外读取程序执行。2.4.3片内数据存储器1、片内RAM编址片内数据存储器(RAM),128B/256B),用来存放程序运行时所需要的常数或变量。编址如下:51子系列片内RAM有128字节编址为00~7FH

特殊功能寄存器块有128字节编址为为80~FFH52子系列片内RAM有256字节低128字节编址为00~7FH(直接寻址、间接寻址)高128字节编址为80~FFH(间接寻址)

SFR有128字节编址为为80~FFH

(直接寻址)中断向量:经典8051单片机至少有5个中断入口地址,中断地址如下:STC8H系列高级8051单片机程序存储器(1)最大容量64KB(编址0000~FFFFH);(2)最大扩展了59个中断源(其中STC8H8K64U单片机有22个中断源)(3)在0003H~01DBH地址之间、定义59个特殊地址(中断向量地址)、作为59个中断源的中断服务程序入口地址。2、内部数据存储器的划分

片内RAM编址为00~7FH,结构如下图:(1)工作寄存器区单片机内部RAM的00~1FH区是工作寄存器区,分为四个组,由RS1、RS0配置选择:(2)位寻址区内部RAM的20H~2FH为位寻址区域(见表2-4)。位地址编址范00H~7FH。(3)数据缓冲区内部RAM的30H~7FH是数据缓冲区,也称为用户RAM区,共80个单元。

52子系列内部有256个单元的数据存储器,用户RAM区范围为30H~FFH,共208个单元。工作寄存器区和位寻址区的地址及单元数与上述一致。3、堆栈和堆栈指针堆栈的概念:把一组数据项按序排列的数据结构采用后进先出把这种后进先出操作的缓冲器区称为堆栈。堆栈特点:后进先出堆栈有3个具体功能:

(1)保护断点

(2)现场保护

(3)临时暂存数据2.4.4特殊功能寄存器单片机是通过特殊功能寄存器(SFR)对各种功能部件进行集中控制。如下表:2.4.5外部数据存储器单片机一般的内部RAM只有128B或256B。现在有大RAM容量单片机或集成了DataFlash的单片机。系统需要海量存储器必须扩展外部存储器。

扩展外部存储器方式:(1)并行方式扩展(最大64KB)(2)串行方式扩展(最大1MB以上)存储器使用总结如下:

(1)地址有重叠性,用不同的控制命令分开。

(2)(RAM)和(ROM)在操作使用上是严格区分的,不同的操作指令不能混用。

(3)位地址空间有两个区域:

20H~2FH区和SFR区

(4)片外数据存储器区中,RAM存储单元与单片机外部扩展的I/O端口是统一编址的。STC8H系列高级8051单片机的存储结构:1.新增SFR:在经典8051单片机的基础上增加了81个2.数据存储器:内部集成了8KB的数据存储器,分为两个地址空间:(1)低256B的基本RAM(00H~7FH)+(80H~FFH)(2)高7936B的内部扩充RAM(0100H~1FFFH)。由AUXR辅助寄存器的EXTRAM位控制:置EXTRAM=0,访问内部扩充RAM;置EXTRAM=1,只访问外部RAM。3.扩展XFR(使能寄存器)的使用:在内部0FA00H~0FFFFH区域扩展了XFR空间作为特殊功能寄存器(SFR),用P_SW2中的位EAXFR控制访问。EAXFR=1,访问XFR地址;EAXFR=0;访问外部RAM地址。4.DPTR的使用:STC8H系列高级8051单片机在扩展外部RAM时,设计了两个16位数据指针DPTR0、DPTR1,它们共用同一个名字DPTR,用DPS寄存器进行设置选择。ID0、ID1:对DPTR0、DPTR1设置递增方式。若=0,在对DPTR操作后自动加1;若=1,则对DPTR操作后自动减1。SEL:目标指针选择。SEL=0,选DPTR0为当前指针;SEL=1,选DPTR1为当前指针。TSL:自动切换控制。TSL=0,禁止两个指针自动切换;TSL=1,使能两个指针自动切换。AU0、AU1:递增方式控制。若=0,禁止指针操作后递增/递减;若=1,允许对DPTR操作后自动加1/减1。2.5并行I/O端口

共有4个8位双向I/O口,共32口线。每位均有自己的锁存器(SFR),输出驱动器和输入缓冲器。多路开关功能:用于控制选通I/O方式还是地址/数据输出方式方式控制:由内部控制信号产生输入锁存器两个输入缓冲器(BUF1和BUF2)推拉式I/O驱动器2.5.1P0口位图内部结构BUF2BUF15、P0R2为读引脚信号,执行“MOVA,P0”时该信号有效6、读引脚(端口)时,输出锁存器应为“1”说明:1、当控制信号为0时,P0口做双向I/O口,为漏极开路(三态)2、控制信号为1时,P0口为地址/数据复用总线(用于口扩展)3、P0W为端口输出写信号,用于锁存输出状态4、P0R1为读锁存器信号,执行“ANLP0,#0FH”时该信号有效QQDCVcc控制AD0P0R1

P0R2D0P0W图1、P0口内部结构读锁存器读引脚锁存器内部总线写锁存器地址/数据P00多路开关102.5.2P1口内部结构P1口内部结构如图2所示输出部分有内部上拉电阻R*约为20K。其他部分与P0端口使用相类似(读引脚时先写入1)。写数据读端口2.5.3P2口内部结构2、当控制信号为1时P2口输出地址信息,此时单片机完成外部的取指操作或对外部数据存储器16位地址的读写操作。3、当P2口作为普通I/O口使用时用法和P1口类似。说明:1、P2可以作为通用的I/O,也可以作为高8位地址输出。2.5.4P3口内部结构说明:1、做普通端口使用时,第二功能应为“1”。2、使用第二功能时,输出端口锁存器应为“1”。3、变异功能()

P3.0TXDP3.4T0P3.1RXDP3.5T1P3.2INT0P3.6WRP3.3INT1P3.7RD1输出I/O口1读I/O口11STC8H系列高级8051单片机I/O口的使用所有I/O口都有4种工作模式:(1)准双向口(标准8051输出模式)(2)推挽输出(3)高阻输入(4)开漏输出模式每个端口由2个寄存器PxM1、PxM0(x=0~7)设置I/O口的工作模式STC8H系列高级8051单片机工作模式设置1.使用寄存器PxM1、PxM0设置工作模式,如下:2.PxPU(x=0~7)端口上拉电阻控制寄存器3.PxDR(x=0~7)端口驱动能力控制寄存器4.PxSR(x=0~7)端口输出速度控制寄存器5.PxIE(x=0~7)端口数字信号输入控制寄存器6.P_SW1外设端口切换控制寄存器17.P_SW2外设端口切换控制寄存器28.MCLKOCR和T3T4PIN时钟选择与T3/T4选择寄存器(触类旁通,举一反三)2.6单片机时序与复位时钟电路用于产生单片机工作所必需的时钟控制信号。2.6.1时钟电路时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。一、内部时钟方式

内部有一个用于构成振荡器的高增益反相放大器,其输入端:XTAL1,输出端:XTAL2。

C1和C2典型值通常选择为30pF左右。晶体的振荡频率在1.2MHz~12MHz之间。某些高速单片机芯片的时钟频率已达40MHz。二、外部时钟方式

常用于多片单片机同时工作。

三、时钟信号的输出为应用系统中的其它芯片提供时钟,但需增加驱动能力。

2.6.2机器周期、指令周期与指令时序一、时钟周期单片机的基本时间单位。若时钟的晶体的振荡频率为fosc,则时钟周期Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。二、机器周期CPU完成一个基本操作所需要的时间。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-51单片机每12个时钟周期为一个机器周期,一个机器周期又分为6个状态:S1~S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、…、SP6P1、S6P2三、指令周期执行一条指令时,可分为取指令阶段和指令执行阶段。取指令阶段,并从程序存储器取出需要执行指令的操作码和操作数。指令执行阶段,指令译码产生一系列控制信号完成指令的执行。ALE信号是为地址锁存,每机器周期出现两次有效信号。8051X2X1VssTTL外接时钟源Vcc时钟电路需外接晶振的频率1.2~12MHZ,C1和C2取30±10PFX1X2C2

C1X

8051振荡电路S1S2S3S4S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2fosc一个状态周期一个机器周期T=12*(1/fosc)X2CPU的时序(时钟周期、状态周期、机器周期)若外接晶振为12MHz时,则单片机的四个周期的具体值为:

时钟周期=1/12MHz=1/12μs=0.0833μs

状态周期=1/6μs=0.167μs

机器周期=1μs

指令周期=1~4μs可用于计算指令、程序的执行时间,以及定时器的定时时间2.6.3复位电路引脚RST加上大于2个机器周期复位时,PC=0000H,从0000H开始执行程序。复位操作对寄存器有影响,见表2-8。2.7.2复位电路

片内复位结构:

上电自动复位和按钮复位

最简单的上电自动复位电路:WatchDog复位电路

STC8H系列高级8051单片机的时钟系统STC8H8K64U单片机可自由选择下面3种时钟源:内部高速IRC,可产生4~45MHz的时钟频率内部32kHz低速IRC,精度低、误差较大外部时钟,用XTALI、XTALO接外部晶振4~45MHz或外部时钟。STC8H系列高级8051单片机的时钟系统STC8H系列高级8051单片机的时钟系统STC8H系列高级8051单片机的工作时钟可以在ISP下载程序时,在ISP下载软件上选中“本次下载需要调节IRC频率”,并在“输入用户程序运行时的IRC频率”进行选择设定。IRC频率选定好后,再单击“下载/编程”按钮,就可以将用户程序、时钟频率一起下载确定。2.7单片机的省电工作模式单片机工作模式:(1)正常工作方式(2)空闲模式(3)掉电模式空闲模式和掉电模式由PCON中的IDL和PD位设置。PCON电源控制寄存器格式如下:

PCON的字节地址为87H,不能位寻址,系统复位时PCON=00x10000B。IDL=1进入空闲模式。

(1)用中断方式退出空闲模式。

(2)用硬件复位方式退出空闲模式。PD=1进入掉电模式。STC89C51单片机的功耗:(1)正常工作时功耗为25mA

(2)空闲节电模式下功耗是6.5mA

(3)掉电模式时功耗仅50

A。第3章

8051单片机指令系统

3.1指令系统概述

MCS-51的基本指令共111条。按指令所占的字节来分:

(1)单字节指令49条;

(2)双字节指令45条;

(3)三字节指令17条。按指令的执行时间来分:

(1)1个机器周期(12个时钟振荡周期)指令64条

(2)2个机器周期(24个时钟振荡周期)指令45条(3)只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。12MHz晶振:机器周期为1

s。3.2指令格式

两部分组成,即操作码和操作数。

操作码用来规定指令进行什么操作

操作数则是指令操作的对象有单字节指令、双字节指令、三字节不同长度的指令。指令格式不同:(1)单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。(2)双字节指令:一个字节为操作码,另一个字节是操作数。

(3)三字节指令:操作码占一个字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。3.2.3指令中常用的符号指令中符号的意义:Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)。Ri当前选中的寄存器区中可作间接寻址寄存器的2个寄存器R0、R1(i=0,1)。Direct

直接地址,即8位的内部数据存储器单元或特殊功能寄存器的地址。#data

包含在指令中的8位立即数。#data16

包含在指令中的16位立即数。rel

相对转移指令中的偏移量,为8位的带符号补码数DPTR

数据指针,可用作16位的数据地址寄存器。bit

内部RAM或特殊功能寄存器中的直接寻址位。C(或Cy)进位标志位或位处理机中的累加器。addr11

11位目的地址addr16

16位目的地址@间接寻址寄存器前缀,如@Ri,@A+DPTR(X)X中的内容。((X))

由X寻址的单元中的内容。→箭头右边的内容被箭头左边的内容所取代。3.3指令系统的寻址方式

寻址方式就是在指令中说明操作数所在地址的方法。共7种寻址方式。

1.寄存器寻址方式

操作数在寄存器中

MOVA,Rn;(Rn)→A,n=0~7

表示把寄存器Rn的内容传送给累加器A

2.直接寻址方式

操作数直接以单元地址的形式给出:

MOVA,40H

寻址范围:

(1)内部RAM的128个单元

(2)特殊功能寄存器。除了以单元地址的形式外,还可用寄存器符号的形式给出。例如:

MOVA,80H与MOVA,P0是等价的。3.寄存器间接寻址方式

寄存器中存放的是操作数的地址在寄存器的名称前面加前缀标志“@”

访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器。例如:

MOVA,@Ri

;i=0或1

其中Ri中的内容为40H,把内部RAM40H单元内容送A。4.立即寻址方式

操作数在指令中直接给出,需在操作数前面加前缀“#”。例如:

MOVA,#40H

5.基址寄存器加变址寄存器间址寻址方式

本寻址方式是以DPTR或PC作基址寄存器,以累加器A作为变址寄存器。

6.位寻址方式

8051单片机有位处理功能,可以对数据位进行操作,例如:

MOVC,40H

是把位40H的值送到进位位C。可寻址位在指令中有如下4种的表示方法:a.直接使用位地址。例如:78H,D5H等。

b.位名称的表示。例如:F0,AC等。c.地址单元+位数。例如:(0D0H).5。d.点操作法。特殊功能寄存器符号加位数的表示方法。例如:PSW.5。7.相对寻址方式

在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址:目的地址=转移指令所在的地址+转移指令的字节数+rel

偏移量rel是一带符号的8位二进制数补码数。范围是:–128~+127

3.48051单片机指令系统8051单片机指令系统按功能分为五大类:

1、数据传送类指令

2、算术运算类指令

3、逻辑运算类指令

4、控制转移类指令

5、位操作(布尔操作)类指令下面分类介绍指令的功能和使用方法。3.4.1数据传送类指令

使用最频繁的一类指令,通用格式:

MOV<目的操作数>,<源操作数>属“复制”性质,而不是“搬家”数据传送类指令不影响标志位,Cy、Ac和OV,但会影响奇偶标志位P。1.以累加器为目的操作数的指令

MOVA,Rn;(Rn)→A,n=0~7 MOVA,@Ri;((Ri))→A,i=0,1 MOVA,direct;(direct)→A MOVA,#data;#data→A

例如:

MOVA,R6;(R6)→A,寄存器寻址

MOVA,70H;(70H)→A,直接寻址

MOVA,@R0;((R0))→A,间接寻址

MOVA,#78H;78H→A,立即寻址2.以Rn为目的操作数的指令

MOVRn,A;(A)→Rn,n=0~7 MOVRn,direct;(direct)→Rn,n=0~7MOVRn,#data;#data→Rn,n=0~7功能:是把源操作数的内容送入当前一组工作寄存器区的R0~R7中的某一个寄存器。3.以直接地址direct为目的操作数的指令

MOVdirect,A;(A)→directMOV direct,Rn;(Rn)→direct,n=0~7MOVdirect1,direct2; MOVdirect,@Ri;((Ri))→direct MOV direct,#data;#data→direct功能:把源操作数送入直接地址指出的存储单元。direct指的是内部RAM或SFR的地址。4.以寄存器间接地址为目的操作数的指令

MOV@Ri,A;(A)→((Ri)),i=0,1MOV@Ri,direct;(direct)→((Ri))MOV@Ri,#data;#data→((Ri))5.外部数据存储器传送指令

MOVDPTR,#data16;#data16→DPTR MOVXA,@DPTR;((DPTR))→A,读外部RAM/IOMOVXA,@Ri;((Ri))→A,读外部RAM/IOMOVX@DPTR,A;(A)→((DPTR)),写外部RAM/IOMOVX@Ri,A;(A)→((Ri)),写外部RAM/IO功能:读外部RAM存储器或I/O中的一个字节,或把A中一个字节的数据写到外部RAM存储器或I/O中。

注意:RD*或WR*信号有效。6.查表指令

共两条,用于读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。

(1)MOVCA,@A+PC

(2)MOVCA,@A+DPTR例如把0~9对应的平方值做表格,查表求04的平方值,分析下面程序段的结果:ORG1030HMOVA,#04H ;DPTR←#04HADDA,#03H ;A←#03H,偏移量是03HMOVCA,@A+PC ;A←((A)+(DPTR))MOV30H,ARETDB 00,01,04,09,16,25,36,49,64,81;0~9对应的平方值表格……7.堆栈操作指令

8051单片机片内RAM中可以设定一个后进先出(LIFO-LastInFirstOut)的区域称作堆栈.堆栈指针SP指出堆栈的栈顶位置。(1)进栈指令

PUSHdirect先将栈指针SP加1,然后把direct中的内容送到栈指针SP指示的片内RAM单元中。例如:当(SP)=60H,(A)=30H,(B)=70H时,执行:PUSHACC ;

则:(SP)+1→SP=61H,(A)→61H

PUSHB ;

则:(SP)+1=62H→SP,(B)→62H

结果:(61H)=30H,(62H)=70H,(SP)=62H(2)出栈指令

POPdirectSP指示的栈顶(片内RAM单元)内容送入direct字节单元中,栈指针SP减1.

例如:

当(SP)=62H,(62H)=70H,(61H)=30H,

执行:

POPDPH;((SP))→DPH,(SP)-1→SPPOPDPL;((SP))→DPL,(SP)-1→SP

结果:(DPTR)=7030H,(SP)=60H9.字节数据交换指令

XCHA,Rn XCHA,direct XCHA,@Ri XCHDA,@Ri SWAPA例如:(A)=80H,(R7)=08H,(40H)=F0H(R0)=30H,(30H)=OFH执行下列指令:

XCHA,R7;(A)与(R7)互换

XCHA,40H;(A)与(40H)互换

XCHA,@R0;(A)与((R0))互换结果:(A)=0FH,(R7)=80H,(40H)=08H,(30H)=F0H累加器的低4位与内部RAM低4位交换: XCHDA,@Ri例如:

(R0)=60H,(60H)=3EH,(A)=59H执行完XCHDA,@RO

指令,则(A)=5EH,(60H)=39H。累加器半字节交换指令

SWAPA将累加器A的高半字节(Acc.7~Acc.4)和低半字节(Acc.3~Acc.0)互换。例(A)=0C5H,执行指令:

SWAPA

结果:(A)=5CH3.4.2算术操作类指令

单字节的加、减、乘、除法指令,都是针对8位二进制无符号数。执行的结果对Cy、Ac、OV

三种标志位有影响。但增1和减1指令不影响上述标志。1.加法指令

共有4条加法运算指令:

ADDA,Rn;(A)+(Rn)→A,n=0~7ADDA,direct;(A)+(direct)→AADDA,@Ri;(A)+((Ri))→A,i=0,1ADDA,#data ;(A)+#data→A加法运算对标志位的影响:(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位)(3)如果位6、位7中只有一个有进位,则溢出标志位OV=“1”,否则如果位6、位7中都没有进位,则OV=“0”

。注意:实际上,溢出标志位OV的状态,只有在带符号数加法运算时才有意义。

(A)=53H,(R0)=FCH,执行指令

ADDA,R0结果:(A)=4FH,Cy=1,Ac=0,OV=0,P=1注意:上面的运算中,由于位6和位7同时有进位,所以标志位OV=0。

(A)=85H,(R0)=20H,(20H)=AFH,执行指令:

ADDA,@R0

结果:(A)=34H,Cy=1,Ac=1,OV=1,P=1注意:由于位7有进位,而位6无进位,所以标志位OV=1

2.带进位加法指令标志位Cy参加运算,因此是三个数相加。共4条:

ADDC A,Rn ;(A)+(Rn)+C→A,n=0~7ADDC A,direct ;(A)+(direct)+C→AADDC A,@Ri ;(A)+(Ri)+C→A,i=0,1ADDC A,#data ;(A)+#data+C→A

例:(A)=85H,(20H)=FFH,Cy=1,执行指令:

ADDCA,20H结果为:(A)=85H,Cy=1,Ac=1,OV=0,P=1(A中1的位数为奇数)3.增1指令

5条增1指令:

INCA INCRn;n=0~7 INCdirect INC@Ri;i=0,1 INCDPTR不影响PSW中的任何标志。4.十进制调整指令用于对BCD码十进制数加法运算结果的内容修正。

指令格式:DAA两个BCD码按二进制相加之后,必须经本指令的调整才能得到正确的压缩BCD码的和数。二进制数的加法运算原则并不能适用于十进制数的加法运算,有时会产生错误结果。例如:(a)3+6=90011+0101=1001运算结果正确(b)7+8=150111+1000=1111运算结果出错(c)9+8=171001+1000=00001C=1运算结果出错出错原因和调整方法:

BCD码只用了了其中的10个,6个没用到的编码。(1010,1011,1100,1101,1110,1111)为无效码凡结果进入或者跳过无效码编码区时,其结果就是错误的。修正方法应是:(a)累加器低4位大于9或辅助进位位Ac=1,则进行低4位加6修正。(b)累加器高4位大于9或进位位Cy=1,则进行高4位加6修正。(c)累加器高4位为9,低4位大于9,则高4位和低4位分别加6修正。具体是通过执行指令:DAA来自动实现的。例(A)=56H,(R5)=67H,把它们看作为两个压缩的BCD数,进行BCD数的加法。执行指令:

ADDA,R5DAA

由于高、低4位分别大于9,所以要分别加6进行十进制调整对结果进行修正。结果为:(A)=23H,Cy=1

可见,56+67=123,结果是正确的。5.带借位的减法指令

4条指令:

SUBBA,Rn;(A)-(Rn)-Cy→A,n=0~7SUBBA,direct;(A)-(direct)-Cy→ASUBBA,@Ri;(A)-((Ri))-Cy→A,i=0,1SUBBA,#data;(A)-#data-Cy→A

从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存在累加器A中。如果位7需借位则置“1”Cy,否则清“0”Cy;如果位3需借位则置“1”Ac,否则清“0”Ac;如果位6需借位而位7不需要借位,或者位7需借位,位6不需借位,则置“1”溢出标志位OV,否则清“0”OV。例(A)=C9H,(R2)=54H,Cy=1,执行指令:SUBBA,R2

结果:(A)=74H,

其中Cy=0,Ac=0,OV=1(位6向位7借位)

6.减1指令

4条指令:

DECA ;(A)-1→A DECRn ;(Rn)-1→Rn,n=0~7 DECdirect ;(direct)-1→direct DEC@Ri ;((Ri))-1→(Ri),i=0,1减1指令不影响标志位。

7.乘法指令

MULAB;(A)×(B)→BA如果乘积大于255,则溢出标志位OV=“1”8.除法指令

DIVAB;(A)/(B)→A(商),余数→B

如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并溢出标志位OV=“1”例如计算(R3R2)×(R4)的值,乘积存放在寄存器(R7、R6、R5)中。

算法思路如下:

参考程序如下:MOV A,R2 ;取被乘数低字节送AMOV B,R4 ;取乘数送BMUL AB ;(A)×(B)MOV R5,A ;乘积低8位存R5MOV R6,B ;高8位暂存R6MOV A,R3 ;取被乘数高字节送AMOV B,R4 ;取乘数送BMUL AB ;(A)×(B)ADD A,R6 ;(A)+(R6)得乘积第二字节MOV R6,A ;乘积存R6MOV A,B ;乘积高8位送AADDC A,#00 ;(A)+Cy得到高字节MOV R7,A ;乘积的高字节送R73.4.3逻辑运算与移位指令1.简单逻辑操作指令

(1)CLRA功能是累加器A清“0”。不影响Cy、Ac、OV等标志。

(2)CPLA功能是将累加器A的内容按位逻辑取反,不影响标志。

2.左环移指令

RLA功能是累加器A的8位向左循环移位,位7循环移入位0,不影响标志。3.带进位左环移指令

RLCA功能是将累加器A的内容和进位标志位Cy一起向左环移一位,Acc.7移入进位位Cy,Cy移入Acc.0,不影响其它标志。

4.右环移指令

RRA功能是累加器A的内容向右环移一位,Acc.0移入Acc.7,不影响其它标志。5.带进位环移指令

RRCA这条指令的功能是累加器A的内容和进位标志Cy一起向右环移一位,Acc.0进入Cy,Cy移入Acc.7。7.逻辑与指令

ANLA,Rn;(A)∧(Rn)→A,n=0~7 ANLA,direct;(A)∧(direct)→A ANLA,#data;(A)∧#data→AANLA,@Ri;(A)∧((Ri))→A,i=0~1 ANLdirect,A;(direct)∧(A)→direct ANL direct,#data ;(direct)∧#data→direct例(A)=07H,(R0)=0FDH,执行指令:

ANLA,R0

结果:(A)=05H8.逻辑或指令

ORLA,Rn;(A)∨(Rn)→A,n=0~7 ORLA,direct;(A)∨(direct)→A ORLA,#data;(A)∨data→A ORLA,@Ri;(A)∨((Ri))→A,i=0,1 ORLdirect,A;(direct)∨(A)→direct ORLdirect,#data

;(direct)∨#data→direct

例(P1)=05H,(A)=33H,执行指令

ORLP1,A

结果:(P1)=37H

9.逻辑异或指令

XRLA,Rn;(A)⊕(Rn)→A XRLA,direct;(A)⊕(direct)→A XRLA,@Ri;(A)⊕((Ri))→A,i=0,1 XRLA,#data;(A)⊕#data→A XRLdirect,A;(direct)⊕(A)→direct XRLdirect,#data

;(direct)⊕#data→direct例(A)=90H,(R3)=73H执行指令:

XRLA,R3结果:(A)=E3H3.4.4控制转移类指令

1.无条件转移指令(1)绝对转移指令AJMPaddrll2K字节范围内的无条件跳转指令。64K程序存储器空间分为32个区,每区2K字节。(2)相对转移指令

SJMPrel

实现的程序转移是双向的。在编写程序时,直接写上要转向的目标地址标号就可以。例如:

LOOP: MOVA,R6

SJMPLOOP ┇

程序在汇编时,由汇编程序自动计算和填入偏移量。

手工汇编时,偏移量rel的值则需设计人员计算。

(3)长跳转指令

LJMPaddr16

指令执行时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向addr16指出的目标地址。目标地址可以在64K程序存储器地址空间的任何位置。(4)间接跳转指令

JMP@A+DPTR

由A中8位无符号数与DPTR的16位数内容之和来确定。以DPTR内容作为基址,A的内容作变址。给A赋予不同的值,即可实现程序的多分支转移。2.条件转移指令

(1)累加器判零转移指令

JZrel ;如果Z=1,则(A)=“0”,则转移

JNZrel ;如果NZ=0,(A)≠“0”,则转移

规定的条件满足,则进行转移,条件不满足则顺序执行下一条指令。

(2)比较不相等转移指令

CJNEA,direct,rel CJNEA,#data,rel CJNERn,#data,rel CJNE@Ri,#data,rel

比较前面两个操作数的大小,如果它们的值不相等则转移。如果第1操作数(无符号整数)小于第2操作数(无符号整数),则置进位标志位Cy,否则清“0”Cy。例4

把首地址为DAT1的外部RAM数据块传送到单片机内部RAM的DAT2地址开始存放,如果遇到传送的数据为零,则停止传送。参考程序如下:DAT1 EQU 1020HDAT2 EQU 30HMRAM: MOV DPTR,#DAT1 MOV R0,#DAT2LOOP: MOVX A,@DPTR JZ EXT MOV @R0,A INC DPTR INC R0 SJMP LOOPEXT: RET(3)减1不为0转移指令这是一组把减1与条件转移两种功能结合在一起的指令。共两条指令:

DJNZRn,rel ;n=0~7 DJNZdirect,rel

将源操作数减1,结果回送到Rn或direct中去。如果结果不为0则转移。可实现按次数控制循环。例5

将内部30H开始的10个无符号单字节数相加,相加结果存放在内部RAM单元中。假设结果存放在(R3R2),程序如下BADD: MOV R0,#30H MOV R7,#10LOOP: MOV A,R2 ADD A,@R0 MOV R2,A CLR A ADDC A,R3

MOV R3,A INC R0 DJNZ R7,LOOP

RET3.子程序调用和返回指令(1)短调用指令

ACALLaddrll与AJMP指令相类似,是为了与MCS-48中的CALL指令兼容而设的。(2)长调用指令

LCALLaddr16

(3)子程序返回指令

RET;子程序的返回指令

RETI;中断子程序返回指令执行指令时:

(SP)→PCH,然后((SP)-1)→SP

(SP)→PCL,然后((SP)-1)→SP功能是从堆栈中退出PC的高8位和低8位字节,把栈指针减2,从PC值开始继续执行程序。4.空操作指令

NOP

3.4.5位操作指令

1.数据位传送指令

MOVC,bit MOVbit,C

MOVC,06H

;(20H).6→Cy 06H是内部RAM20H字节位6的位地址。

MOVP1.0,C

;Cy→P1.0bit位就是所有位地址,如00~7FH,可以有位地址的SFR2.位变量修改指令

CLRC ;Cy清“0” CLRbit ;bit位清“0” CPLC ;Cy求反

bit位就是位地址3.位变量逻辑与指令

ANLC,bit ;bit∧Cy→Cy ANLC,/bit; ;/bit∧Cy→Cy

CPLbit ;bit位求反

SETBC ;置“1”Cy SETBbit ;置“1”bit位这组指令将操作数指出的位清“0”、求反、置“1”,不影响其它标志。

CLRC ;0→Cy CLR27H ;0→(24H).7位

CPL08H ;→(21H).0位

SETBP1.7 ;1→P1.7位

4.位变量逻辑或指令

ORLC,bit ORLC,/bit

5.条件转移类指令

JCrel ;如果进位位Cy=1,则转移

JNCrel ;如果进位位Cy=0,则转移

JBbit,rel ;如果直接寻址位=1, 则转移

JNBbit,rel ;如果直接寻址位=0, 则转移

JBCbit,rel ;如果直接寻址位=1, 则转移,并清0直接寻址位

温馨提示

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

评论

0/150

提交评论