单片机应用电子课件_第1页
单片机应用电子课件_第2页
单片机应用电子课件_第3页
单片机应用电子课件_第4页
单片机应用电子课件_第5页
已阅读5页,还剩808页未读 继续免费阅读

下载本文档

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

文档简介

单片机应用电子课件本章学习目标

:明确单片机的概念,了解其发展趋势能说出80C51单片机的硬件组成和各功能部件的作用总体了解80C51单片机的内部结构和引脚分类熟悉80C51单片机并行I/O口的特点和功能能画出80C51单片机内外存储器的配置图理解时钟和机器周期的概念,明确时序的含义第1章80C51单片机基础什么是单片机?

将构成计算机的五大组成部分集成在一个芯片上就构成单芯片微型计算机,简称单片机1.1单片机及其发展应用1.单片机的产生背景:

1946年世界上第一台电子计算机ENIAC诞生,1.1.1单片机的产生及发展18000个电子管,占地1800平方英尺,耗电180千瓦,其运算速度为每秒5000次。它通过不同部分之间的重新接线编程,还拥有并行计算能力。它使用于1946到1955年,被公认为第一台成功的高速电子数字计算机。ENIAC由美国政府和宾夕法尼亚大学合作开发,使用了在工业控制领域,人们对计算机提出了控制要求:

能面向控制对象,便于进行控制变量的输入输出;能适应工业现场较为恶劣的工作环境;体积小巧,能嵌入到控制系统的内部;控制能力突出,有丰富的用于控制的指令系统和I/O接口等。怎样改进计算机使其更好地用作控制?70年代初微处理器诞生了!微处理器的问世:

70年代初,“微处理器”问世了,微处理器以及以微处理器为核心部件构成的微型计算机的诞生,为电子计算机的普及和应用开拓了广阔的道路。

1971年11月15日:MarcianE.Hoff在INTEL公司开发成功第一块微处理器4004。70年代中期,为满足广泛应用的需要,微型计算机向着两个不同的方向发展:高速度、大容量、高性能的高档微机方向——PC机功能完善、稳定可靠、体积小、价格低廉、面向控制的方向——单片机

1.1单片机及其发展应用计算机能比现在的运算速度快10000倍吗?要是计算机能放进我的口袋里多好啊!

第一阶段(1974~1976年):单片机探索阶段这一阶段的单片机采用双片形式,而且功能简单。如仙童公司生产的F8单片机,它只有8位CPU、64个字节的RAM和2个并行口,需加装一块3851芯片(含1KBROM、定时器/计数器和2个并行I/O口)才能完成控制功能。

第二阶段(1976~1978年):低性能单片机阶段

代表机型:Intel公司在1976年推出的8位机MCS-48系列,它以其体积小、控制功能全、价格低廉等特点,一经推出就获得了广泛的应用和好评,为单片机的发展奠定了坚实的基础,成为单片机发展史上的一个重要阶段。

发展历程:2.单片机的发展历程——4个阶段

第三阶段(1978~1982年):高性能单片机阶段普遍带有串行I/O接口、多级中断系统、16位定时器/计数器等,片内RAM、ROM的容量加大,寻址范围增加到64KB。

代表机型:Intel公司推出的MCS-51系列单片机。这仍是当前单片机的主流系列。第四阶段(1982年~现在):8位单片机巩固发展及

16位、32位单片机推出阶段继8位单片机之后,Intel公司又在1983年推出了16位单片机MCS-96系列,与MCS-51相比,MCS-96不但字长增加一倍,而且在其它性能方面也有很大提高,如在片内增加了一个4路或8路的10位A/D转换器,具有A/D转换功能等。3.单片机的发展趋势高集成度外部电路内装化低功耗

随着单片机集成度的不断提高,由单片机构成的系统体积越来越小,低功耗将是设计单片机产品时首先要考虑的指标。引脚多功能化高性能芯片专用化1.1.2单片机、单片机系统及单片机应用系统1.单片机通常是指芯片本身,如80C51芯片、AT89C51芯片等。2.单片机系统

是指在单片机芯片的基础上辅以必要的外围设备构成的具有一定应用能力的计算机系统。它包括硬件和软件两部分。图1-1单片机系统的组成图1-2单片机应用系统的三个层次结构3.单片机应用系统单片机应用系统是能满足控制对象全部要求的电路系统和应用软件的总称。1.1.3常用单片机简介

单片机的制造商:美国的Intel公司、Motorola公司、Zilog公司、NS(美国国家半导体)公司和荷兰的PHILIPS公司、日本的NEC(日本电气)公司等。典型产品:(1)Intel公司的MCS-51系列、80C51系列及其增强型系列产品产量最大、派生产品最多,在8位单片机市场中占据约50%的份额,成为当之无愧的主流产品。(2)美国Microchip公司生产的PIC系列单片机,性能实用、价格低廉、抗干扰能力强,一经投放市场,就获得了广大用户的青睐,目前已大量生产,应用也很普遍。1.1.4单片机的应用1.单片机的应用特点常用来替代微机实现控制系统的在线应用用单片机代替模拟电路或数字电路,软硬件结合控制可以提高控制系统的技术性能、技术含量和防盗能力。与PC机相比,能适应较为恶劣的工作环境

例如,民用单片机的环境适应温度范围是0~+70℃。有些单片机芯片可以在2.2V甚至是0.9V到1.2V的低电压下正常工作(通常单片机的工作电压是+5V)。软件固化在程序存储器中,可以避免病毒侵袭和人为修改,性能稳定

2.单片机的应用1、工业控制领域

数控线切割机床数控车床2、家用电器领域

3、智能仪器仪表数字式测角仪交直流电压电流表位移传感器4、办公自动化领域

5、商业营销领域

条码打印机条码阅读器打印机考勤机医用呼吸机6、航空航天等高科技领域1.1.5实训1单片机应用系统的开发演示一.实训目的

1.观察单片机应用系统的功能演示,激发学生的学习热情。2.了解单片机应用系统的开发过程。二.背景知识1.单片机应用系统开发的意义

单片机虽然功能很强,但它却无法独立完成程序录入、查错、改错和程序固化等功能,必需借助于开发工具(仿真器、编程器等)才能实现相关操作。仿真器编程器

(1)利用独立型仿真器开发

这种仿真器不需要依赖PC机就能独立完成单片机应用系统的在线仿真,便于在现场对应用软件进行调试和修改。

图1-3利用独立型仿真器开发示意图2.单片机应用系统的开发方式

单片机应用系统通常由仿真器来开发。

(2)利用非独立型仿真器开发

如图1-4所示,这种开发方式要由PC机和仿真器共同实现。仿真器与PC机之间以串行通讯方式连接,利用PC机配置的组合软件完成开发任务。有些仿真器上还有固化插座,能够将开发调试后的用户程序写入存储器芯片。与前一种相比,这种开发方式在现场参数的修改和调试方面不够方便。

图1-4利用非独立型仿真器开发示意图3.单片机开发方式的发展

新型单片机开发系统可以不使用仿真器,而是直接将单片机安装到印刷线路板上,利用PC机完成应用程序的编辑、汇编和模拟运行,最后将目标程序串行下载到单片机应用系统。

典型产品:如SST公司推出的SST89C54和ST89C58芯片分别有20KB和30KB的SuperFlash存储器,利用这种存储器能够进行高速读/写的特点,可以实现在系统编程(ISP)和在应用编程(IAP)功能。现在的89S51单片机也有在系统编程(ISP)功能。三.演示电路利用AT89C51模拟十字路口交通灯管理系统(第3章课题与实训4)电路如图1-5所示。四.演示内容1.系统上电后P1口控制的四个双色LED(南北2个,东西2个)按交通灯规律变化。2.在P3.3(外部中断1)引脚外接一个开关,以开关闭合模拟救护车到来,观察有救护车出现时,交通灯是否发生变化,如何变化?(选做)3.在微机上修改汇编语言源程序,以联机仿真的方式观察交通灯的变化。4.将程序固化到AT89C51芯片,观察系统脱机运行情况。1.280C51单片机的内部结构1.2.180C51单片机和80C51系列单片机

80C51单片机属于美国Intel公司的MCS-51系列产品中的一个型号,它采用CHMOS工艺,功耗低,性能优良,在市场中获得了广泛的应用。

80C51系列单片机,泛指所有具有MCS-51指令系统,同时采用CHMOS工艺的单片机。

在我国,80C51系列单片机因其性能价格比高、开发方式多、芯片功能适用、且为国内技术人员所熟知等特点得到了极其广泛的应用。1.2.280C51单片机的基本组成

图1-6所示为80C51单片机的基本组成,可以看出在该芯片上集成了一个微型计算机

1.CPU系统1个8位微处理器CPU内部时钟电路总线控制逻辑

2.内部存储器4KB的片内程序存储器(ROM/EPROM/Flash)128B数据存储器(RAM)和128B特殊功能寄存器SFR(80C51只用到其中21B)

3.I/O接口及中断定时功能4个8位可编程的I/O(输入/输出)并行接口5个中断源的中断控制系统,可编程为2个优先级2个16位定时/计数器,既可以定时,又可以对外部事件进行计数1个全双工的串行I/O接口,用于数据的串行通信所有这些都通过单片机内部的总线相连接。

表1-180C51典型产品资源配置

1.基本型与增强型

基本型

如80C51。能满足基本的控制要求。

增强型

如80C52。在存储器配置和中断定时控制上进行了加强。

2.片内ROM形式

无ROM型

如80C31。已淘汰。

掩模ROM型

如80C51。用户程序只能由芯片生产厂家写入,但不能更改,适合成型后的批量生产。

EPROM型

如87C51。用户程序由编程器写入,通过紫外线照射擦除,使用不便。

FlashROM型

如89C51。用户程序可以由电写入或者擦除,这是当前的主流芯片。1.2.480C51的内部结构1.中央处理器CPU

CPU是80C51内部的1个字长为8位的中央处理单元,它由运算器、控制器两部分组成。实际上构成了单片机的核心。

(1)运算器以算术逻辑单元ALU(ArithmeticLogicUnit)为核心,还包括累加器A、程序状态字寄存器PSW(ProgramStatusWord)、B寄存器、两个8位暂存器TMP1和TMP2等部件。可以进行加、减、乘、除、加1、减1、BCD数十进制调整、比较等算术运算;也可以进行与、或、非、异或等逻辑运算;还能完成循环移位、判断和程序转移等控制功能。

(2)控制器包括程序计数器PC、指令寄存器、指令译码器、振荡器、定时电路及控制电路等部件;它能根据不同的指令产生相应的操作时序和控制信号,控制单片机各部分的运行;单片机执行哪条指令受PC控制。

PC是一个16位计数器,具有自动加1功能。CPU每读取一个字节的指令则PC自动加1,指向要执行的下一指令的地址。PC的最大寻址范围为64K。可以通过控制转移指令改变PC值,实现程序的转移。关于PC3.I/O口(1)并行口

有4个8位并行I/O口P0~P3,均可并行输入输出8位数据。

(2)串行口

有1个串行I/O口,用于数据的串行输入输出4.定时器/计数器(1)产生定时脉冲,实现单片机的定时控制;(2)用于计数方式,记录外部事件的脉冲个数。2.存储器

(1)片内ROM是程序存储器;(2)片内RAM,可用于存放输入、输出数据和中间计算结果,或作为数据堆栈区。1.2.580C51的引脚功能描述图1-880C51系列单片机DIP40封装引脚结构

1.总线型DIP40引脚封装

(1)电源引脚(2个)VCC:接+5V电源VSS:接地端

(2)外接晶体引脚(2个)XTAL1:外接晶振输入端XTAL2:外接晶振输入端

(3)并行输入输出引脚(32个,分成4个8位口)P0.0~P0.7:通用I/O引脚或数据/低8位地址总线复用引脚P1.0~P1.7:通用I/O引脚P2.0~P2.7:通用I/O引脚或高8位地址总线复用引脚P3.0~P3.7:通用I/O引脚或第二功能引脚

(4)控制引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚ALE/:地址锁存允许信号输出引脚/编程脉冲输入引脚

/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚:片外程序存储器读选通信号输出引脚

2.非总线型DIP20引脚封装(1)电源引脚(2个)VCC:接+5V电源GND:接地端(2)外接晶体引脚(2个)XTAL1:外接晶振输入端XTAL2:外接晶振输入端

图1-9非总线型DIP20引脚(3)并行输入输出引脚(15个)P1.0~P1.7:通用I/O引脚(P1.0和P1.1兼作模拟信号输入引脚AIN0、AIN1)P3.0~P3.5、P3.7:通用I/O引脚或第二功能引脚(4)控制引脚(1个)RST:复位信号输入引脚1.380C51单片机的存储器结构

80C51系列单片机有两个存储器:程序存储器(ROM)和数据存储器(RAM),且各自独立编址。

从用户使用角度,80C51单片机的存储器可以分为三个存储空间:片内、片外统一连续编址的0000H~0FFFFH共64KB的程序存储器空间。地址从0000H~0FFFFH的片外数据存储器空间。地址从00H~0FFH的256B的片内数据存储器空间,其中只有前128B能供用户作存储器使用。图1-1080C51单片机的存储器结构

程序存储器包括片内和片外程序存储器两个部分程序存储器主要用来存放编好的用户程序和表格常数它以16位的程序计数器PC作为地址指针,能寻址64KB。

1.引脚的连接接高电平(即=1):

1.3.1程序存储器ROM片内、片外地址空间在0000H~0FFFH有重叠,单片机如何访问?由某一引脚的高、低电平状态决定PC输出值在0000H~0FFFH范围内时,CPU访问片内程序存储器;当PC输出值超过0FFFH时,CPU自动转去访问片外程序存储器。

接低电平时(即=0):片内程序存储器不起作用。CPU总是访问片外程序存储器。当片外程序存储器扩展为64KB时,则其地址范围为0000H~0FFFFH。

存储器单元保留单元的作用0000H~0002H复位后初始化引导程序入口0003H~000AH外部中断0入口000BH~0012H定时器0溢出中断入口0013H~001AH外部中断1入口001BH~0022H定时器1溢出中断入口0023H~002AH串行口中断入口002BH定时器2溢出中断入口注:标注灰色背景的存储空间为增强型芯片所独有

在程序存储器中,某些单元保留给系统使用,见表1-2。2.部分关键的程序存储单元

存储单元0000H~0002H:

80C51上电复位后引导程序的存放单元。

80C51上电复位后CPU总是从0000H单元开始执行。如果在这3个单元中存放一条转移指令(如LJMP1000H),单片机就会转移到1000H单元,开始执行应用程序。应用程序的引导过程见图1-11。图1-11应用程序的引导过程

0003H~002AH单元:被均匀地分为5段,用作5个中断服务程序的入口;只有增强型单片机才占用002BH单元。1.3.2数据存储器RAM

数据存储器主要用于存放运算的中间结果、数据等,它可以分为片内数据存储器和片外数据存储器两大部分。

1.片外数据存储器

片外数据存储器可以扩展到64KB,对应地址范围为0000H~0FFFFH2.片内数据存储器片内数据存储器共有256B,在功能上分为两部分:

低128B(地址为00H~7FH)是真正的数据存储区;

高128B(地址为80H~0FFH)用于特殊功能寄存器。

单片机器件设计者为用户提供了两类不同的传送指令:

MOV指令用于片内00H~0FFH范围内的寻址,

MOVX指令用于片外0000H~0FFFFH范围内的寻址。

片内、片外低地址空间在0000H~00FFH有重叠,单片机如何访问?

用户通过使用不同的指令,指挥单片机访问不同的存储空间(1)工作寄存器区(00H~1FH)此空间被均匀地分为4段(即4个工作寄存器组),每段8个单元,组成8个工作寄存器,分别被记做R0~R7。在使用这些工作寄存器前,可以通过对程序状态字PSW的RS1、RS0位置1或清0,确定选用哪组工作寄存器,否则默认使用0区。程序运行时,只能有一个工作寄存器组作为当前工作寄存器组。(2)位寻址区(20H~2FH)

该空间有16个单元中共128个二进制位,都可以直接进行位操作。80C51低128B的数据存储空间的功能分区图1-12数据存储功能分区

我们根据指令的类型来区分!例:对字节地址20H单元清0,要用字节操作指令“MOV20H,#00H”;对位地址20H位清0,则使用位操作指令“CLR20H”。(3)用户区(30H~7FH)该区域主要用作堆栈、数据缓冲、数据暂存。用户一般应将堆栈设置在这个区间。位寻址区的字节地址和位地址也是重合的,单片机如何访问?1.3.3特殊功能寄存器(SFR)

SFR是80C51内部具有特殊用途的寄存器

80C51内部共有21个特殊功能寄存器,每个SFR占用1个RAM单元,它们分布在80H~0FFH的地址范围内。程序计数器PC不属于SFR,它是独立的。在21个SFR中,有11个SFR既可以进行位寻址,也可以进行字节寻址。它们的特征是字节地址可以被8整除(以0H或8H结尾,在表中以灰背景表示),如P1、IP。下表列出了SFR区的标识符、名称和字节地址。关于SFR符号名称位地址和位符号字节地址P0P0口寄存器87H86H85H84H83H82H81H80H80HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0SP堆栈指针81HDPL数据指针低8位82HDPH数据指针高8位83HPCON电源控制寄存器SMOD×××GF1GF0PDIDL87HTCON定时/计数器控制寄存器8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0TMOD定时/计数器方式寄存器GATEM1M0GATEM1M089HTL0T0低8位寄存器8AHTL1T1低8位寄存器8BHTH0T0高8位寄存器8CHTH1T1高8位寄存器8DHP1P1口寄存器97H96H95H94H93H92H91H90H90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0

表1-380C51特殊功能寄存器(SFR)表

表1-380C51特殊功能寄存器(SFR)表

(续)符号名称位地址和位符号字节地址SCON串行口控制寄存器9FH9EH9DH9CH9BH9AH99H98H98HSM0SM1SM2RENTB8RB8TIRISBUF串行数据缓冲器99HP2P2口寄存器A7HA6HA5HA4HA3HA2HA1HA0HA0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0IE中断允许控制寄存器AFH——ACHABHAAHA9HA8HA8HEA——ESET1EX1ET0EX0P3P3口寄存器B7HB6HB5HB4HB3HB2HB1HB0HB0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IP中断优先级控制寄存器———BCHBBHBAHB9HB8HB8H———PSPT1PX1PT0PX0PSW程序状态寄存器D7HD6HD5HD4HD3HD2HD1HD0HD0HCYACF0RS1RS0OV—PACC累加器E7HE6HE5HE4HE3HE2HE1HE0HE0HACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.0BB寄存器F7HF6HF5HF4HF3HF2HF1HF0HF0HB.7B.6B.5B.4B.3B.2B.1B.0常用特殊功能寄存器SFR的功能和用法。1.运算类寄存器(3个)

(1)累加器A(ACC-Accumulator)

8位,向ALU提供操作数,存放运算的结果(2)寄存器B8位,主要用于乘、除法运算。或作为RAM的一个单元使用。(3)程序状态字寄存器PSW(ProgramStatusWord)

8位,存储指令执行的状态信息。用户可以通过指令来设置PSW中某些指定位的状态,也可以通过查询有关位的状态来进行判断、转移。

PSW格式和各位含义为:PSW

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

PCY:进位/借位标志。有进位/借位时CY=1,否则CY=0;AC:辅助进位/借位标志。低4位向高4位有进/借位时AC=1,否则AC=0;F0:用户标志位,由用户自己定义;RS1、RS0:当前工作寄存器组选择位,用法如下表:

RS1

RS0寄存器区

地址

0

0

0

00H~07H

0

1

1

08H~0FH

1

0

2

10H~17H

1

1

3

18H~1FHOV:溢出标志位。有溢出时OV=1,否则OV=0;P:奇偶标志位。ACC中结果有奇数个1时P=1,否则P=0。2.指针类寄存器(3个)

(1)堆栈指针SP

8位,用来指示堆栈的位置,它总是指向栈顶。关于堆栈

堆栈是用户在80C51内部数据存储器中开辟的一个用于暂时存放部分数据的“仓库”。堆栈由若干个存储单元组成,存储单元的个数称为堆栈的深度。堆栈中数据的存取依照“先进后出”的原则。堆栈的位置由堆栈指针SP确定,可以通过软件来设置。

80C51单片机复位后堆栈指针SP指向07H。为保证数据存储正确,用户应把堆栈设在30H~7FH区域。图1-13堆栈示意图

如“MOVSP,#58H”是把堆栈指针设在58H单元,真正的堆栈是从59H为起始地址的位置开始向上生长的。该堆栈的深度为5。(2)数据指针DPTR16位,它是80C51内部唯一一个供用户使用的16位寄存器。DPTR使用灵活,即可用作16位寄存器,对外部数据存储空间的64K范围进行访问,也可拆成两个8位的寄存器DPH和DPL使用。

3.接口类寄存器(7个)(1)并行I/O口P0、P1、P2、P3

均为8位,通过对这4个寄存器的读写,可实现数据从相应口的输入输出。(2)串行口数据缓冲器SBUF(3)串行口控制寄存器SCON(4)电源控制寄存器PCON4.中断类寄存器(2个)

(1)中断允许寄存器IE(2)中断优先级寄存器IP

5.定时/计数类寄存器(6个)(1)定时/计数器T0

由两个8位计数初值寄存器TH0、TL0组成,在构成16位计数器时,TH0存放高8位,TL0存放低8位;

(2)定时/计数器T1

由两个8位计数初值寄存器TH1、TL1组成,在构成16位计数器时,TH1存放高8位,TL1存放低8位(3)定时/计数器的工作方式寄存器TMOD;(4)定时/计数器的控制寄存器TCON1.480C51单片机的并行I/O接口

80C51内部有4个8位并行I/O接口,分别称为P0、P1、P2和P3口1.4.1并行I/O接口的结构特点

口引脚第二功能口引脚第二功能P3.0RXD(串行输入)P3.4T0(定时/计数器0外部输入)P3.1TXD(串行输出)P3.5T1(定时/计数器1外部输入)P3.2外部中断0输入P3.6外部RAM写信号P3.3外部中断1输入P3.7外部RAM读信号

1.都具有“数据锁存器+输入缓冲器+输出驱动电路”的典型结构

2.I/O接口的复用功能

(1)P0、P2口的总线复用

80C51单片机在作并行总线扩展时,P0口可作为数据/地址总线使用,分时作地址、数据的传送:先传送低8位地址,然后传送8位数据信号;

P2口用来传送高8位地址信号。

(2)P3口的功能复用

1.4.1并行I/O接口的特点

3.准双向口结构

P0~P3口在作通用输入/输出口使用时,我们称其为准双向口结构,其输入操作和输出操作具有本质的不同:

(1)输入操作:当P0~P3口作输入口使用时,必须要对口锁存器进行写“1”操作。由于在输入操作前有这种准备工作,所以P0~P3口叫做准双向口。

(2)输出操作:

实际上是对口锁存器作写入操作。由图1-14结构可知,当由内部总线给口锁存器置“0”或“1”时,锁存器中“0”或“1”的状态立即通过输出驱动电路反映到引脚上。1.4.2并行I/O口的应用特性

1.P0~P3口作通用输入/输出口使用时的硬件连接

P0~P3口都能用于输入或输出操作。而且对每个接口都可将一部分管脚定义为输入,另一部分管脚定义为输出。由于P0~P3口的内部结构不同,所以在作通用输入/输出口使用时,其外部的硬件电路也不相同:

(1)P0口

P0口既可用作通用I/O口,也可作为地址/数据总线使用。当单片机系统需要扩展片外存储器或者需要扩展具有地址/数据线的芯片时,P0口只能用作地址/数据线,而不能再作通用I/O口使用。

P0口作为地址/数据总线使用时,无需外接上拉电阻;

P0口用作通用I/O接口使用时,必须外接上拉电阻。

(2)P1口

P1口只能作为通用I/O口使用,没有第二功能。

P1口在作为通用输出口使用时,不需要再外接上拉电阻。

(3)P2口当P2口作为通用I/O口使用时,不需要外接上拉电阻;当系统有外部扩展存储器或I/O接口时,P2口作为地址高8位信号线,此时P2口只能作地址线用,而不能作通用I/O口。

(4)P3口

P3口除可作为通用I/O口使用外,还具有第二功能。当某些口线作第二功能使用时,不能再把它当作通用输入/输出口使用;其它未用的口线仍可作通用输入/输出口线使用。

P3口作通用I/O口使用时,不需要外接上拉电阻。

2.并行I/O端口具有自动识别功能

3.准双向口的输入操作由于P0~P3口是准双向口结构,所以在进行输入操作时,必须先向相应口的锁存器写“1”,以保证输入数据的正确。如把P1口的状态送累加器A,要用以下指令完成:

MOVP1,#0FFH;写1MOVA,P1;P1口状态送A4.读引脚与读锁存器(1)读引脚读引脚就是读芯片引脚上的数据端口处于输入状态时单片机进行读引脚操作。

MOV类传送指令进行的读口操作就是读引脚。

(2)读锁存器

许多涉及到I/O端口的操作,实际上只是对口锁存器中所存储的内容进行“读出—修改—写入”操作。

除MOV类传送指令以外的其它口操作指令都属于读锁存器,如逻辑运算指令(如ANLP1,A)、置位/清除指令(如SETBP1.0)、条件转移指令(JBP1.2,NEXT)等。

由于4个并行口的输出级在结构上不同,因此它们的负载能力和对接口的要求也各不相同:

P0口的每一位输出可以驱动8个LSTTL。

P1、P2、P3口的输出驱动电路可以驱动4个LSTTL。

CMOS单片机的I/O口通常只能提供几毫安的驱动电流在全CMOS应用系统中,几毫安的输出电流足以满足多CMOS电路输入驱动的要求。1.4.3并行I/O口的负载能力1.4.4实训2单灯点亮

一.实训目的

1.熟悉单片机I/O接口的线路连接。

2.学习仿真器的使用方法。

3.学习单片机I/O接口的控制方法。二.课题要求

用单片机的P1.0控制1只LED灯,实现亮灭的变化,间隔0.2秒。三.背景知识

1.点亮原理

控制LED的亮灭,是通过改变其两端电平的高低实现的。我们可以通过改变P1.0引脚的电平状态控制灯的亮灭。方法如下:从P1.0引脚输出高电平“1”,LED灭;从P1.0引脚输出低电平“0”,LED亮

2.从P1.0引脚输出高、低电平的方法。由指令来实现。

如SETBP1.0表示从P1.0引脚输出高电平“1”,CLRP1.0表示从P1.0引脚输出低电平“0”。3.点亮时间

灯亮或灭的持续时间可以通过一个专门的延时子程序(子程序名为DELAY)来实现。在本次实训中我们只要学会调用它就可以了(用指令ACALLDELAY实现)。四.硬件电路

图1-15单灯点亮电路

五.软件设计参考程序如下:

ORG0000HSTART:CLRP1.0;从P1.0引脚输出低电平“0”,LED亮

ACALLDELLY;延时0.2秒

SETBP1.0;从P1.0引脚输出高电平“1”,LED灭

ACALL

DELAY;延时0.2秒

AJMP

START;重新开始

DELAY:MOV

R5,#4;延时子程序,0.2秒

D1:MOV

R6,#20D2:MOV

R7,#123NOPDJNZ

R7,$DJNZ

R6,D2DJNZ

R5,D1RETEND六.总结与提高

本实训方法简单,易于实现。如果对该实训电路作一些改进,在P1.0~P1.7分别接上8只LED,你能设计出8只灯轮流点亮的效果吗?试试看。

1.5时钟与时序

单片机就像一个庞大的军队,它的各种操作都要有一个统一的信号来指挥:

时钟电路为单片机的工作提供基准步调,这样,当单片机执行指令时,就能按照“从程序存储器中取出指令代码→译码→完成指令功能”的顺序有条不紊地进行。在时钟电路的指挥下,还要安排出各种操作的先后次序,按顺序来执行。我们将单片机执行指令时各控制信号产生的先后次序称为CPU的时序。

1.5.1时钟电路

图1-1680C51单片机时钟电路80C51单片机内部有一个振荡器,其XTALI端和XTAL2端必须外接石英晶体和微调电容,其中电容C1、C2对振荡频率有稳定作用;振荡器的频率选择范围为1.2~12MHz。单片机也可以使用外部时钟。1.5.2CPU时序

1.时序单位

描述80C51单片机时序的基本单位有振荡周期、状态周期、机器周期和指令周期。振荡周期P

由石英晶体振荡器产生的时钟信号的周期。称为振荡周期,用P表示,它是80C51单片机中最小的时序单位。状态周期S

对时钟信号二分频后形成的脉冲信号的周期。称状态周期,用S表示。1S=2P。机器周期

单片机完成一个基本操作所需的时间称为机器周期。一个机器周期包含12个振荡周期,即6个状态周期,依次表示为S1~S6。指令周期

CPU执行一条指令所需要的时间就是一个指令周期,它是时序中最大的时间单位。

一个指令周期通常含有1~4个机器周期。80C51单片机只有乘法和除法两条指令占用4个机器周期;其余指令只要1~2个机器周期就能完成。图1-17双机器周期指令的基本时序关系

2.80C51的指令时序

80C51单片机执行指令时,是在控制信号ALE、等的指挥下,按照时钟电路产生的节拍协调、有序地工作。根据指令性质的不同,单片机读取指令的形式也不一样。图1-18列出了几种典型的单机器周期和双机器周期指令时序。图中的ALE信号在一个机器周期内ALE信号两次有效,分别出现在S1P2~S2P1期间和S4P2~S5P1期间,有效宽度为一个状态。该信号每有效一次,单片机进行一次读指令操作。图1-18几种典型的单机器周期和双机器周期指令时序

单字节单机器周期指令(例如INCA)当第二个ALE有效时,假读。双字节单机器周期指令(例如ADDA,#DATA)

这时ALE进行的两次读指令操作都是有效的,第一次是读指令的操作码,决定干什么;,第二次是取操作数,决定对谁操作。单字节双机器周期指令一般类型(例如INCDPTR)

两个机器周期共进行了四次读指令操作,但后三次都是假读。访问外RAM指令(例如MOVXA,@DPTR)

在第一机器周期的操作过程同其它指令一样(先读操作码,然后假读);在第二机器周期时,访问外RAM,此时与ALE信号无关,因此不产生读指令操作。

1.6复位电路

任何单片机在工作之前都要有个复位的过程,对单片机来说,复位则是在程序执行前进行的一种准备工作。显然,准备工作不需要太长的时间,因此复位时间不超过5ms。

1.6.1复位方式

80C51单片机有一个复位信号引脚RST/VPD,只要在该引脚上保持2个机器周期以上的高电平,单片机就会被复位。复位后,单片机从程序存储器0000H单元开始执行程序。当单片机运行出错或进入死循环后,为摆脱困境,也可以利用复位操作重新启动。单片机复位后不改变片内RAM中的内容。

表1-621个复位后的SFR的初始状态

SFR初始状态SFR初始状态ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0~P30FFHSBUF不定IP×××00000BSCON00HIE0××00000BPCON0×××0000B

80C51单片机的复位方法有以下几种:

1.上电复位打开电源后利用RC充电自动完成。

2.上电复位兼手动复位

既可以上电复位,又可以利用按键闭合使单片机复位引脚保持2个机器周期以上的高电平完成手动复位功能。图1-19复位电路

1.6.2复位方法

本章首先介绍了单片机的概念及其发展应用,目的在于使读者能正确区分单片机和单片机系统,清楚所学单片机在整个单片机领域中的地位。

80C51系列单片机种类很多,但结构基本相同,都是将运算器、控制器、存储器、输入/输出设备接口等部件集成在一块半导体硅片上构成的。对于单片机的硬件组成,我们侧重于面向用户的部分,重点讨论其应用特性和外部特性,如并行I/O接口的功能和特点。这是以后进行单片机应用系统设计的基础。单片机内部数据存储器和程序存储器是非常重要的内容,因为它们与单片机的程序设计关系密切,编程时一刻也离不开这些数据存储单元和专用寄存器。时钟电路和复位电路在单片机系统中起着十分重要的作用,前者为单片机提供工作的基本节奏,后者能使单片机摆脱困境。对于上述重要内容,读者要用心体会,以便为后面的学习打好基础。本章小结1.什么叫单片机?它有哪些主要特点?2.单片机主要用在哪些方面?在你生活中应用单片机的例子有哪些?

3.单片机有哪几个发展阶段?8位单片机会不会过时?为什么?

4.80C51单片机按片内ROM的结构形式可分成哪几类?其中80C31属于哪一类?80C51属于哪一类?87C51属于哪一类?89C51属于哪一类?5.80C51单片机主要由哪几部分组成?各主要功能部件的作用是什么?6.决定程序执行顺序的寄存器是哪一个?它最大能寻址多大范围?7.80C51单片机的存储器结构如何划分?各自的存储空间有多大?8.80C51单片机内部RAM的低128单元划分为哪3个主要部分?说明各部分的功能。9.80C51单片机的信号有何功能?在使用80C51单片机时信号引脚该如何处理?思考题与习题10.位地址的00H~7FH和内RAM字节地址00H~7FH编址相同,读写时会不会搞错?为什么?11.80C51单片机的SFR有哪几类?各是什么?12.80C51的PSW寄存器各位标志的意义如何?13.DPTR是什么寄存器?它的作用是什么?它是一个寄存器吗?14.80C51的P0~P3口在使用上有何特点?其负载能力如何?在对这些I/O接口进行输入操作时有什么特殊的要求吗?15.什么是节拍、状态、机器周期和指令周期?16.当80C51晶振频率为12MHz的时候,时钟周期、机器周期为多少?执行一条最长的指令需要多长时间?17.80C51单片机运行出错或程序进入死循环应如何摆脱困境?18.80C51复位后的状态如何?复位方法有哪几种?思考题与习题本章学习目标

:了解指令及指令系统常识熟悉指令中常用符号在理解的基础上牢记7种寻址方式熟悉各类指令的功能及应用范围能使用指令完成各种常规任务第2章单片机的指令系统2.1.1指令系统概述

2.1指令系统概述与寻址方式

1.指令

单片机是靠软件和硬件结合起来完成控制功能的,软件的基础就是指令和指令系统。指令是计算机设计人员预先设计好的用以完成某种操作的命令。例如用计算机指令来完成10+20的加法运算,用机器代码表示如下:

0111010000001010;把10送累加器A中

0010010000010100;A加20,结果存A中什么是指令?机器语言指令

用二进制编码表示的,能够被计算机直接识别和执行的语言称为机器语言。它不便于记忆、查错和修改。

用助记符、符号和数字来表示指令的程序语言,称为汇编语言。它与机器语言指令一一对应,便于理解和记忆。上面两条指令用汇编语言可表示为:

MOVA,#10

ADDA,#20

查找附录A,可以得到这两条指令的十六进制机器代码如下:

74H0AH

24H14H

什么是机器语言?

机器语言是计算机唯一能够识别和执行的语言,因而我们编写的汇编语言程序必须通过翻译将其转换为机器语言才能被计算机执行,这一翻译过程称为汇编。

汇编语言是一种面向机器的语言,它不能在不同类型的计算机上互相移植;

高级语言是独立于机器的,即用高级语言编写的程序可以方便地移植到不同的单片机上。针对单片机的主要有C(C51)语言和PLM语言,本教材我们只学习汇编语言。因汇编语言编写程序时是面向机器的,结合单片机的硬件资源来学习汇编语言,对初学者来说是最合适不过的了。下面我们给出典型的汇编语言指令的书写格式:

[标号:]操作码[操作数1,操作数2,操作数3][;注释]NEXT:MOVA,R0;A←(R0)

合法字符举例:LOOP,NEXT_1,START

非法字符举例:2SUM,S+L,ADD,DB

方括号内的字段可以省略标号是一个名字,用来标明指令的地址,由1~6个字符组成,首字符必须是字母,后面可跟数字和字母字符,也可以是下划线,但系统保留字不能作标号,如操作码等。MOV是操作码,它表示指令的性质和功能,此处其功能是将R0中的内容送到累加器A中,A是数据传送的目的地,称为目的操作数R0是数据的来源,称为源操作数2.指令系统

一台计算机的CPU所能执行的全部指令的集合称为这个CPU的指令系统。指令系统是开发和生产厂商定义的,如要使用其单片机,用户就必须了解和遵循这些指令标准,要掌握某种(类)单片机,指令系统的学习是必须的。

80C51共有111条指令:其指令字节少,单字节指令49条,双字节指令45条,三字节指令17条;指令执行时间短,单机器周期指令64条,双机器周期指令45条,4机器周期指令2条,该指令系统还有极为丰富的位操作指令,充分体现了单片机面向控制的特点。Rn当前选中的工作寄存器组区的8个寄存器R0~R7(n=0~7)之一Ri当前选中的工作寄存器组区中的寄存器R0或R1(i=0,1)direct8位片内RAM单元的直接地址。包括特殊功能寄存器地址#data指令中的8位立即数#data16指令中的16位立即数addr11用于ACALL和AJMP指令中的11位目的地址,该地址必须放在与下条指令第一个字节同在一个2KB的ROM空间之中addr16用于LCALL和LJMP指令中的16位目的地址,该地址在64KB的ROM空间内rel补码形式的8位地址偏移量。用于所有的条件转移和SJMP指令中,以下一条指令的第一个字节地址为基准,其值在-128~+127范围内@寄存器间接寻址或变址寻址的前缀bit内部RAM或SFR中的可直接寻址位C布尔处理器的累加器也就是进位/借位标志CY(×)某地址单元或寄存器中的内容((×))以×单元或寄存器中的内容为地址间接寻址单元的内容←将箭头右边的内容送入箭头左边的单元3.指令系统中常用符号说明

对于一条汇编语言指令来说,有两个问题要解决:一是要说明进行什么操作二是要指出参与操作的数据的值是多少或者到何处取得,以及操作结果放到何处。

寻址方式就是寻找操作数的方法。

在计算机中寻址方式越多,操作数的寻找越容易,程序设计也就越方便。

51系列单片机共有7种寻址方式,分别为立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。

对于两操作数指令,源操作数和目的操作数都有寻址方式,我们下面提到的都是源操作数的寻址方式。

2.1.2寻址方式由操作码指出由寻址方式决定1.立即数寻址

在指令中直接给出参与操作的数据,这种寻址方式称为立即数寻址。这一直接给出的数据称为立即数,立即数前要加上“#”符号,例如:

MOVA,#0EH;A←0EHMOVDPTR,#2100H;DPTR←2100H将8位的立即数0EH送到累加器A将16位的立即数2100H送到数据指针寄存器DPTR,立即数的高8位21H装入DPH,低8位00H装入DPL。

2.寄存器寻址

参与操作的数据由寄存器给出,这种寻址方式称为寄存器寻址。

由于寄存器在CPU的内部,所以采用该寻址方式可以获得较高的运算速度,可用于该寻址方式的寄存器有R0~R7、DPTR、A、B。如:MOVA,R1;A←(R1)

该指令将R1内的数据传送到累加器A中,源操作数R1和目的操作数均采用了寄存器寻址。再比如:INCDPTR;DPTR←(DPTR)+13.直接寻址

在指令中直接给出操作数的地址的寻址方式称为直接寻址。在该寻址方式中,操作数存放在片内数据存储器中,地址长度为8位。这种寻址方式可以访问:内部数据RAM低128B(该空间还可以采用寄存器间接寻址)和特殊功能寄存器SFR(该空间只能采用直接寻址)。

例如:在片内RAM60H单元存放一个8位二进制数3CH,执行指令MOVA,60H后,结果为(A)=3CH。如图2-1所示。

4.寄存器间接寻址在指令中以指定寄存器的内容作为操作数地址的寻址方式称为寄存器间接寻址。这种方式可用于访问内部RAM和外部数据存储器。能够用于寄存器间接寻址方式的寄存器有:R0、R1、DPTR和SP。在间接寻址寄存器前加“@”表示间接寻址。例如:MOVA,@R0;A←((R0))

假定R0中的内容为50H,50H单元内容为45H,图2-2给出了寄存器间接寻址方式的执行过程。寄存器间接寻址的寻址范围:

(1)片内128B的RAM,用R0,R1作间址寄存器,如MOVA,@R0;(2)片外64KB的数据存储器,用DPTR作间址寄存器,如MOVXA,@DPTR;(3)堆栈区域,用SP作间址寄存器,如PUSHACC;(4)片外256B数据存储器,用R0,R1作间址寄存器,如MOVXA,@R0;5.变址寻址

基址寄存器(DPTR或PC)的内容与变址寄存器(累加器A)的内容相加,其和形成16位地址作为操作数的地址的寻址方式称为变址寻址。该类寻址方式用于程序存储器的访问,多用于查表程序。

例如:MOVCA,@A+DPTR;A←((A)+(DPTR))

设(A)=12H,(DPTR)=02E3H,(02F5H)=1EH,则结果为(A)=1EH,执行情况见图2-3所示。

变址寻址指令只有3条,另外两条是:

MOVCA,@A+PCJMP@A+DPTR6.相对寻址

相对寻址是以程序计数器PC的当前值(是指当前跳转指令的下一条指令的地址)为基准,加上指令中给出的相对偏移量rel以得到程序执行地址的寻址方式。这种寻址方式的目的是修改PC的值,从而实现程序的转移。转移的目的地址可参见如下表达式:目的地址=转移指令地址+转移指令字节数+rel

值得注意的是,偏移量rel有正负之分,其取值范围是-128~+127。

其中,操作码80H存放在3000H单元中,54H是设定的相对偏移量rel,存放在3001H单元。指令的执行过程如图2-4所示。例如:有双字节相对转移指令

指令地址操作码操作数指令注释

3000H8054HSJMPrel;PC←(PC)+2+rel7.位寻址

位寻址是将8位二进制数中的某一位作为操作数,在指令中给出的是位地址,一般用bit表示。

例如:CLRP1.0;将P1口的第0位清零位寻址的范围为:

片内RAM区的20H~2FH的16个单元中的128位,

如MOVC,30H字节地址能被8整除的SFR,

如SETBP1.0

表2-2寻址方式及寻址空间

寻址方式描述方法寻址空间立即数寻址#data程序存储器寄存器寻址R0~R7、A、DPTR工作寄存器直接寻址direct内部RAM和SFR寄存器间接寻址@R0、@R1、SP内部数据存储器@R0、@R1、@DPTR外部数据存储器变址寻址@A+DPTR、@A+PC程序存储器相对寻址PC+rel程序存储器位寻址Bit位地址空间2.2数据传送指令(29条)

2.2.1通用传送指令

通用传送指令的助记符为MOV(Move),格式如下:

MOV<目的操作数>,<源操作数>

此类指令的功能是把源操作数指定的数据传送到目的操作数(目的地址)所指定的存储单元中。MOV指令的传送关系如图2-5所示。

例1设内部RAM中(50H)=40H,(40H)=10H,P1口作输入口,(P1)=0ABH,问程序执行后各存储器中的数据是什么?

MOVR0,#50H;立即数50H送R0中,(R0)=50HMOVA,@R0;R0间接寻址,将50H单元内容送A,(A)=40HMOVR1,A;A送R1,(R1)=40HMOVB,@R1;R1间接寻址,将40H单元内容送B,(B)=10HMOV@R1,P1;将P1内容送40H单元,(40H)=0ABHMOVP2,P1;将P1内容送P2,(P2)=0ABH执行结果:

(R0)=50H,(A)=40H,(R1)=40H(B)=10H,(P1)=0ABH,(40H)=0ABH(P2)=0ABH任何不符合格式要求的“指令”都是不合法的。

这类指令用于访问片外RAM或扩展的I/O口。1.读写片外RAM指令MOVX

(1)用@DPTR进行间接寻址的指令读:MOVXA,@DPTR;A←((DPTR))写:MOVX@DPTR,A;(DPTR)←A

DPTR为16位数据指针,该指令可以寻址外部RAM的64KB范围(0000H—0FFFFH),地址的低8位由P0口输出,高8位由P2口输出,数据通过P0口输入/输出。2.2.2特殊传送指令(2)用@Ri进行间接寻址的指令读:MOVXA,@Ri;(A)←((Ri))

写:MOVX@Ri,A;(Ri)←A

指令可寻址范围:当片外RAM小于或等于256个单元,用@Ri间接寻址进行数据传送时,8位地址线足够使用。当片外RAM单元较多时,8位地址线不够用,此时低8位地址在R0或R1中,P0口分时作低8位地址线和数据线;高8位地址由P2口提供,因此P2口应预先设置。若设计循环程序,则Ri被加到0或减到0时必须考虑对P2口高8位地址进位或借位的影响。

例2把片外RAM的36H单元中的数据送到片外RAM的1200H单元。〈分析〉(36H)→(1200H)程序如下:

MOVR1,#36HMOVXA,@R1MOVDPTR,#1200HMOVX@DPTR,A<想一想>下面的程序可以实现吗?

MOVDPTR,#1200HMOVR1,#36HMOV@DPTR,@R1注意:片外RAM之间不能直接传送数据,必须经过累加器A

2.查表指令MOVC

MOVCA,@A+DPTR;A←((A)+(DPTR))

MOVCA,@A+PC;A←((A)+(PC))

这两条指令主要用于查表,可以完成从程序存储器中取得数据并送入累加器A的功能。

(1)第一条指令以DPTR为基址寄存器,查表时DPTR用于存放表格的起始地址。表格起始地址可以设置在64KB程序存储器中的任何位置。

(2)第二条指令以PC为基址寄存器,因A为8位无符号数,故该指令的查找范围是从PC当前值开始的255个地址单元内。

若(DPTR)=3000H,(A)=60H,执行指令“MOVCA,@A+DPTR”后,将程序存储器3060H单元的内容送A。例3

已知累加器A中有一个0~9范围内的数,请用查表法编程求出该数的平方值。设平方表表头地址为1000H。〈方法1〉以DPTR为基址寄存器

MOVDPTR,#1000H;表头地址

MOVCA,@A+DPTR;查表求出平方值送A若原(A)=3,查表后(A)=9。〈方法2〉以PC为基址寄存器

ORG0FFBH0FFBHADDA,#data;加修正量,此例data=02H0FFDHMOVCA,@A+PC;查表

0FFEHSJMP$;暂停1000HDB01001HDB11002HDB4┇1009HDB81END

修正量=表头地址-PC当前值=1000H-0FFEH=02H所以data=02H(SJMP指令2字节)。查表指令和被查表格通常在同一页内(页内地址00H~0FFH即0~255)例如,若(R1)=16H,(A)=28H,执行“XCHA,R1”后,(A)=16H,(R1)=28H

3.数据交换指令

交换类指令完成的传送是双向的,是两个字节间或两个半字节间的双向交换。

特点是只能与累加器A进行交换。字节交换

XCHA,Rn;(A)(Rn)

XCHA,direct;(A)(direct)

XCHA,@Ri;(A)((Ri))功能:字节数据交换,实现3种寻址操作数内容与A中内容的互换。

半字节交换

XCHDA,@Ri;(A3~0)((Ri)3~0)

SWAPA;(A3~0)(A7~4)

例如,若(R1)=50H,(50H)=74H,(A)=26H。执行指令“XCHDA,@R1”后,(A)=24H,(50)=76H。

再如,若(A)=38H,执行指令“SWAPA”后

温馨提示

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

评论

0/150

提交评论