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

下载本文档

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

文档简介

1

单片机及其应用21.1电子计算机的发展概述1.1.1电子计算机的问世及其经典结构1946年2月15日,第一台电子数字计算机问世,这标志着计算机时代的到来。(CALCULATOR)ENIAC(“埃尼阿克”)3◆与现代的计算机相比,有许多不足,但它的问世开创了计算机科学技术的新纪元,对人类的生产和生活方式产生了巨大的影响。◆ENIAC是电子管计算机,时钟频率仅有100KHz,但能在1秒钟的时间内完成5000次加法运算。

4匈牙利籍数学家冯·诺依曼在方案的设计上做出了重要的贡献。1946年6月,他又提出了“程序存储”和“二进制运算”的思想,进一步构建了计算机由运算器、控制器、存储器、输入设备和输出设备组成这一计算机的经典结构。(EDVAC-ELECTRONICDISCRETEVARIABLEAUTOMATICCOMPUTER)5电子计算机技术的发展,相继经历了五个时代:﹡电子管计算机;﹡晶体管计算机;﹡集成电路计算机;﹡大规模集成电路计算机;﹡超大规模集成电路计算机。计算机的结构仍然没有突破冯·诺依曼提出的计算机的经典结构框架。6二、微型计算机的应用形态从应用形态上,微机可以分成三种:

◆多板机(系统机)将CPU、存储器、I/O接口电路和总线接口等组装在一块主机板(即微机主板)。各种适配板卡插在主机板的扩展槽上并与电源、软/硬盘驱动器及光驱等装在同一机箱内,再配上系统软件,就构成了一台完整的微型计算机系统(简称系统机)。工业PC机也属于多板机。7

◆单板机将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。单板机8单板机的I/O设备简单,软件资源少,使用不方便。早期主要用于微型计算机原理的教学及简单的测控系统,现在已很少使用。9

◆单片机在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。三种应用形态的比较:单板机单片机系统机(多板机)10系统机(桌面应用)属于通用计算机,主要应用于数据处理、办公自动化及辅助设计。单片机(嵌入式应用)属于专用计算机,主要应用于智能仪表、智能传感器、智能家电、智能办公设备、汽车及军事电子设备等应用系统。

单片机体积小、价格低、可靠性高,其非凡的嵌入式应用形态对于满足嵌入式应用需求具有独特的优势。111.2单片机的发展过程及产品近况1.2.1单片机的发展过程单片机技术发展过程可分为三个主要阶段:

◆单芯片微机形成阶段

1976年,Intel公司推出了MCS-48系列单片机。8位CPU、1K字节ROM、64字节RAM、27根I/O线和1个8位定时/计数器。

特点是:存储器容量较小,寻址范围小(不大于4K),无串行接口,指令系统功能不强。

12

◆性能完善提高阶段

1980年,Intel公司推出了MCS-51系列单片机:8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

特点是:结构体系完善,性能已大大提高,面向控制的特点进一步突出。现在,MCS-51已成为公认的单片机经典机种。13

◆微控制器化阶段

特点是:片内面向测控系统外围电路增强,使单片机可以方便灵活地用于复杂的自动测控系统及设备。“微控制器”的称谓更能反应单片机的本质。

1982年,Intel推出MCS-96系列单片机。芯片内集成:16位CPU、8K字节ROM、232字节RAM、5个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K。片上还有8路10位ADC、1路PWM输出及高速I/O部件等。141.2.2单片机产品近况

﹡ATMEL公司融入Flash存储器技术的AT89系列;

﹡Philips公司的80C51、80C552系列;

﹡华邦公司的W78C51、W77C51高速低价系列;

﹡ADI公司的ADμC8xx高精度ADC系列;

﹡LG公司的GMS90/97低压高速系列;

﹡Maxim公司的DS89C420高速(50MIPS)系列;

﹡Cygnal公司的C8051F系列高速SOC单片机。

80C51系列单片机产品繁多,主流地位已经形成,近年来推出的与80C51兼容的主要产品有:15

◆非80C51结构单片机新品不断推出,给用户提供了更为广泛的选择空间,近年来推出的非80C51系列的主要产品有:﹡Intel的MCS-96系列16位单片机;﹡Microchip的PIC系列RISC单片机;

﹡TI的MSP430F系列16位低功耗单片机。161.3单片机的特点及应用领域1.3.1单片机的特点

近期推出的单片机产品,内部集成有高速I/O口、ADC、PWM、WDT等部件,并在低电压、低功耗、串行扩展总线、控制网络总线和开发方式(如在系统编程ISP)等方面都有了进一步的增强。

◆控制性能和可靠性高实时控制功能特别强,其CPU可以对I/O端口直接进行操作,位操作能力更是其它计算机无法比拟的。另外,由于CPU、存储器及I/O接口集成在同一芯片内,各部件间的连接紧凑,数据在传送时受干扰的影响较小,且不易受环境条件的影响,所以单片机的可靠性非常高。17◆体积小、价格低、易于产品化

单片机芯片即是一台完整的微型计算机,对于批量大的专用场合,一方面可以在众多的单片机品种间进行匹配选择;同时还可以专门进行芯片设计,使芯片的功能与应用具有良好的对应关系;在单片机产品的引脚封装方面,有的单片机引脚已减少到8个或更少。从而使应用系统的印制板减小、接插件减少、安装简单方便。181.3.2单片机的应用领域

◆智能仪器仪表

单片机用于各种仪器仪表,一方面提高了仪器仪表的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表产品的升级换代。如各种智能电气测量仪表、智能传感器等。19◆机电一体化产品机电一体化产品是集机械技术、微电子技术、自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发挥巨大的作用。典型产品如机器人、数控机床、自动包装机、点钞机、医疗设备、打印机、传真机、复印机等。20◆实时工业控制单片机还可以用于各种物理量的采集与控制。电流、电压、温度、液位、流量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效率和产品质量。典型应用如电机转速控制、温度控制、自动生产线等。21

◆分布式系统的前端模块

在较复杂的工业系统中,经常要采用分布式测控系统完成大量的分布参数的采集。在这类系统中,采用单片机作为分布式系统的前端采集模块,系统具有运行可靠,数据采集方便灵活,成本低廉等一系列优点。22◆家用电器家用电器是单片机的又一重要应用领域,前景十分广阔。如空调器、电冰箱、洗衣机、电饭煲、高档洗浴设备、高档玩具等。

另外,在交通领域中,汽车、火车、飞机、航天器等均有单片机的广泛应用。如汽车自动驾驶系统、航天测控系统、黑匣子等

。232.180C51系列概述2.1.1MCS-51系列(1)MCS-51是Intel公司生产的一个单片机系列名称。属于这一系列的单片机有多种,如:

﹡8051/8751/8031;

﹡8052/8752/8032;

﹡80C51/87C51/80C31

﹡80C52/87C52/80C32等

24(2)该系列生产工艺有两种:CHMOS是CMOS和HMOS的结合,既保持了HMOS高速度和高密度的特点,还具有CMOS的低功耗的特点。在产品型号中凡带有字母“C”的即为CHMOS芯片,CHMOS芯片的电平既与TTL电平兼容,又与CMOS电平兼容。

一是HMOS工艺(高密度短沟道MOS工艺)。二是CHMOS工艺(互补金属氧化物的HMOS工艺)。25(3)在功能上,该系列单片机有基本型和增强型两大类:增强型:8052/8752/803280C52/87C52/80C32基本型:8051/8751/803180C51/87C51/80C3126(4)在片内程序存储器的配置上,该系列单片机有三种形式,即掩膜ROM、EPROM和ROMLess(无片内程序存储器)。如:﹡80C51有4K字节的掩膜ROM;﹡87C51有4K字节的EPROM;﹡80C31在芯片内无程序存储器。272.1.280C51系列

Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;

﹡ATMEL的:89C51、89C52、89C2051等;

Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品。

80C51是MCS-51系列中CHMOS工艺的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列单片机主要产品有:282.1.380C51典型产品资源配置29学单片机需要具备的条件与以前所学的知识关联很少;对器件的概念基本上是从0开始;如果要用C语言编程,需具备一定的C语言基础;所有人都站在了同一起跑线上;30#include<reg52.h>unsignedcharFlag=0x3f;main(){ P1=0x55;While(1){ if(Flag––==0) { Flag=0x3f; P1=~P1; } }}31 org 0000h jmp main org 0100hmain: mov p1,#55hamain: mov r0,#3fhloop: djnz r0,loop cpl a mov p1,a jmp amain end32

·8位CPU

·4kbytes程序存储器(ROM)

(52为8K)

·256bytes的数据存储器(RAM)

(52有384bytes的RAM)

·32条I/O口线

·111条指令,大部分为单字节指令

·21个专用寄存器

2.2.2单片机的主要功能33

·2个可编程定时/计数器

·5个中断源,2个优先级

(52有6个)

·一个全双工串行通信口

·外部数据存储器寻址空间为64kB

·外部程序存储器寻址空间为64kB

·逻辑操作位寻址功能

·双列直插40PinDIP封装

·单一+5V电源供电

342.3.280C51的引脚封装总线型非总线型3536CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;37五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。38单片机最小系统39P0~P3:通用I/O口;VCC:电源端,一般接5V;GND:电源地;XTAL1,XTAL2:外接晶体振荡器,不能超过24M;需加微调电容,一般为30pF;RST/VPD:复位端,平时为低电平;ALE/PROG:地址锁存允许信号端;EA/Vpp:外部程序存储器地址允许输入端/固化编程电压输入端;402.2.4控制器1.时钟电路(a)内部时钟电路;(b)HMOS型外部振荡源(C)CHMOS型外部振荡源41单片机工作的基本时序.机器周期和指令周期(1)振荡周期:也称时钟周期,是指为单片机提供时钟脉冲信号的振荡源的周期。(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作。(4)指令周期:它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。MCS-51系统中,有单周期指令、双周期指令和四周期指令。421.时钟电路引脚:

XTAL1:接外部晶振和微调电容的一端,在单片机内部,它是构成片内振荡器的反向放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部振荡器的输入端。

XTAL2:接外部晶振和微调电容的另一端,在单片机内部,它是构成片内振荡器的反向放大器的输出端。当采用外部振荡器时,此引脚应悬空。432.控制信号引脚:RST/VPD:RST是复位信号输入端,高电平有效。当此输入端保持2个机器周期的高电平时,就可以完成复位操作。RST引脚的第二功能是备用电源的输入端。上电复位按键复位44ALE/PROG:(AddressLatchEnable/Programming)当单片机上电正常工作后,ALE引脚不断向外输出正弦脉冲信号,此频率为振荡器频率的1/6。CPU访问外部存储器时,ALE作为锁存低8位地址的控制信号。此引脚的第二功能PROG作为8751编程脉冲输入端使用。45PSEN:(ProgramStoreEnable)在访问片外存储器时,此端定时输出负脉冲作为片外存储器的选通信号。EA/VPP:(EnableAddress/VoltagePulseOfProgramming)当EA接高电平时,CPU访问片内ROM,并执行内部程序存储器中的指令,但当PC(程序计数器)的值超过4K时,将自动转去执行片外存储器内的程序。当EA脚接低电平时,CPU只访问片外ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。VPP是对8751片内ROM固化程序时,作为施加较高编程电压(12V~21V)的输入端。

C语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是KeilC51.C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。

㈠C-51的特点C-51与ASM-51相比,有如下优点:1.

对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;2.

寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3.

程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4.

具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;5.

提供的库包含许多标准子程序,具有较强的数据处理能力;6.

由于具有方便的模块化编程技术,使已编好程序可容易地移植;C51存储类型存储类型寻址空间数据长度值域范围data片内直接寻址RAM80~127idata片内间接寻址RAM80~255pdata分页寻址片外RAM80~255存储类型寻址空间数据长度值域范围xdata片外数据存储(64K)160~65535code片内统一编址ROM(64K)160~65535bdata片内可位寻址的RAM(16byet)10~127C51的数据声明的一般格式如下[类型说明符][修饰符]标识符[=初值]……例如:unsignedcharcodeFlag=0x0f;

就是声明一个无符号的char型变量Flag,并给他赋初值为0x0f;并且声明他所在的存储空间在片内统一编址的ROM中。声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内RAM中。㈡C-51的程序结构

与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。

C-51函数的一般格式

类型函数名(参数表)

{

数据说明部分语句执行部分

}㈢C-51的数据类型基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255C语言中的基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255㈢(续)C-51的数据类型扩充定义sfr:特殊功能寄存器声明sfr16:sfr的16位数据声明sbit:特殊功能位声明bit:位变量声明例:sfrSCON=0X98;sfr16T2=0xCC;sbitOV=PSW^2;㈣C-51数据的存储类型名存储空间位置长度数据范围

data直接寻址片内RAM8位0~255bdata可位寻址片内RAM1位0/1idata间接寻址片内RAM8位0~255pdata片外页RAM8位0~255xdata片外RAM16位0~65535code程序ROM16位0~65535㈣C-51数据的存储类型(续)例:数据类型

存储类型变量char

datavar1;bit

dataflags;unsignedchar

xdatavextor[10];㈣C-51数据的存储类型㈤C-51的包含的头文件通常有:reg51.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.h(定义特殊功能寄存器和位寄存器);

math.h(定义常用数学运算);

㈥C-51的运算符与C语言基本相同:+-*/

(加减乘除)>>=<<=

(大于大于等于小于小于等于)==!=

(测试等于测试不等于)&&||!

(逻辑与逻辑或逻辑非)>><<

(位右移位左移)&|

(按位与按位或)^~

(按位异或按位取反)㈦C-51的基本语句与标准C语言基本相同:

if选择语言

switch/case

多分支选择语言

while

循环语言

do-while循环语言

for

循环语言

㈧中断服务程序函数名()interruptn

{}

㈨I/O口定义#include<absacc.h>#defineprotxbyte[0x1000]或用指针定义例:清零程序(将2000H—20FFH的内容清零)

★汇编语言程序

ORG0000HSE01:MOVR0,#00HMOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;字节数加1CJNER0,#00H,LOO1;不到FF个字节再清LOOP:SJMPLOOP清零程序(将2000H—20FFH的内容清零)

★C-51程序

#include<reg51.h>main(){inti;unsignedcharxdata*p=0x2000;

/*指针指向2000H单元*/for(i=0;i<256;i++){*p=0;p++;}/*清零2000H-20FFH单元*/

}★汇编语言程序

ORG0000HL00:MOVR0,#10H;查找16个字节

MOVR1,#00HMOVDPTR,#2000HL11:MOVXA,@DPTRCJNEA,#00H,L16;取出内容与00H相等吗?INCR1;取出个数加1L16:INCDPTRDJNZR0,L11;未完继续

MOVDPTR,#2100HMOVA,R1MOVX@DPTR,A;相同数个数送2100HL1E:SJMPL1E例:查找零的个数(在2000H--200FH中查出有几个字节是零,把个数放在2100H单元中)★查找零的个数C-51程序#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指针p指向2000H单元*/intn=0,i;for(i=0;i<16;i++){if(*p==0)n++;/*若该单元内容为零,则n+1*/p++;/*指针指向下一单元*/}p=0x2100;/*指针p指向2100H单元*/*p=n;/*把个数放在2100H单元中*/}§4.1MCS-51单片机的并行端口结构与操作 51系列单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输出驱动器和输入缓冲器。通常把4个端口笼统地表示为P0~P3。在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。 51单片机4个I/O端口线路设计的非常巧妙,学习I/O端口逻辑电路,不但有利于正确合理地使用端口,而且会给设计单片机外围逻辑电路有所启发。下面简单介绍一下输入/输出端口结构。4.1.1P0口和P2的结构下图为P0口的某位P0.n(n=0~7)结构图,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。从图中可以看出,P0口既可以作为I/O用,也可以作为地址/数据线用。DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚一、P0口的结构1、P0口作为普通I/O口①输出时CPU发出控制电平“0”封锁“与”门,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚驱动场效应管T2栅极接通。故内部总线与P0口同相。由于输出驱动级是漏极开路电路,若驱动NMOS或其它拉流负载时,需要外接上拉电阻。P0的输出级可驱动8个LSTTL负载。DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚②输入时----分读引脚或读锁存器读引脚:由传送指令(MOV)实现;

下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚②输入时----分读引脚或读锁存器读锁存器:有些指令如:ANLP0,A称为“读-改-写”

指令,需要读锁存器。

上面一个缓冲器用于读端口锁存器数据。**原因:如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。**DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚P0口必须接上拉电阻;在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口称为准双向口;三态输入缓冲器的作用:(ANLP0,A)DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚准双向口:

从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。这就是所谓的准双向口。2、P0作为地址/数据总线在系统扩展时,P0端口作为地址/数据总线使用时,分为:

P0引脚输出地址/数据信息。DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚

CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。由图上可以看出,上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增强。DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚2、P0作为地址/数据总线

P0引脚输出地址/输入数据输入信号是从引脚通过输入缓冲器进入内部总线。此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。2、P0作为地址/数据总线----真正的双向口DQCLKQMUXP0.n读锁存器内部总线写锁存器读引脚地址/数据控制VCCT1T2P0口引脚二、P2的内部结构1.P2口作为普通I/O口DQCLKQMUXP2.n读锁存器内部总线写锁存器读引脚地址控制VCCRTP2口引脚CPU发出控制电平“0”

,使多路开关MUX倒向锁存器输出Q端,构成一个准双向口。其功能与P1相同。

2.P2口作为地址总线在系统扩展片外程序存储器扩展数据存储器且容量超过256B(用MOVX@DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。此时,P2输出高8位地址。DQCLKQMUXP2.n读锁存器内部总线写锁存器读引脚地址控制VCCRTP2口引脚4.1.2P1口、P3口的内部结构

①P1口的一位的结构它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成----准双向口。DQCLKQP1.n读锁存器内部总线写锁存器读引脚VCCRTP1口引脚②P3的内部结构DQCLKQP3.n读锁存器内部总线写锁存器读引脚VCCRTP3口引脚第二输入功能第二输出功能一、作为通用I/O口与P1口类似----准双向口(W=1)W②P3的内部结构DQCLKQP3.n读锁存器内部总线写锁存器读引脚VCCRTP3口引脚第二输入功能第二输出功能二、P3第二功能(Q=1)此时引脚部分输入(Q=1、W=1)

,部分输出(Q=1、W输出)

。WP3第二功能各引脚功能定义: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外部读控制综上所述:当P0作为I/O口使用时,特别是作为输出时,输出级属于开漏电路,必须外接上拉电阻才会有高电平输出;如果作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。当CPU内部控制信号为“1”时,P0口作为地址/数据总线使用,这时,P0口就无法再作为I/O口使用了。3.LED数码显示方式及电路

(1)静态显示方式LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。(2)动态显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。七段LED显示器

使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。用共阴LED显示器显示16进制数的编码已列在下表。

共阴数码管码表

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0 1 2 345

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

6 7 8 9AB

0x39,0x5e,0x79,0x71,0x00

CDEF 无显示1、键盘的分类键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如BCD码键盘、ASCLL码键盘等;而靠软件来识别的称为非编码键盘; 在单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。非编码键盘有分为:独立式非编码键盘和行列式非编码键盘。按键在闭合和断开时,触点会存在抖动现象:

2023/12/794功能数据传送类:29条算术运算类:24条逻辑运算类:24条控制转移类:17条位操作类:17条2023/12/795常用符号Rn:工作寄存器中的寄存器R0、R1…R7之一,Ri:工作寄存器中的寄存器R0或R1#data:8位立即数#data16:16位立即数direct:片内RAM或SFR的地址(8位)@间接寻址寄存器Bit:片内RAM或SFR的位地址addr11:11位目的地址addr16:16位目的地址2023/12/796rel:

补码形式的8位地址偏移量。偏移范围为-128~127/:位操作指令中,该位求反后参与操作,不影响该位X:片内RAM的直接地址或寄存器(X):相应地址单元中的内容→:箭头左边的内容送入箭头右边的单元内2023/12/797§3.2寻址方式3.2.1立即寻址ImmediateAddressing

操作数就包含在指令代码中,在操作码之后,称为立即数,用“#”表示。

MCS-51

如:MOVP1,#80HMOVR7,#0F5HMOVDPTR,#1245H操作数存在程序存储器中2023/12/7983.2.2直接寻址

DirectAddressing直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。操作数在SFR、内部RAM、位地址空间。如:MOVA,00H

MOVC,60H

MOVA,0F0H2023/12/7993.2.3寄存器寻址

RegisterAddressing对选定的工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR中的数进行操作。

例:MOVA,R0;将R0工作寄存器中的数据送到累加器A中去。提一个问题:我们知道,工作寄存器就是内存单元的一部分,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOVA,00H

和MOVA,R0不就没什么区别了吗?2023/12/7100

的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个机器周期,而第二条则只需要1个机器周期,第一条指令变成最终的目标码要两个字节(E5H00H),而第二条则只要一个字节(E8H)就可以了。2023/12/71013.2.4寄存器间接寻址

Register

IndirectAddressing把地址放在另外一个寄存器中,根据这个寄存器中的数值决定该到哪个单元中取数据。R0,R1----8位地址,片内低128字节或片外DPTR----16位,片外64KB

MCS-51如: MOVA,@R0 MOVXA,@R0 MOVXA,@DPTR操作数在片内RAM中操作数在片外RAM中操作数在片外RAM中2023/12/7102以DPTR或PC为基址寄存器,累加器A为变址寄存器。把两者内容相加,结果作为操作数的地址。常用于查表操作。

MCS-51

MOVCA,@A+DPTR

;(A+DPTR)→A

MOVCA,@A+PC

;PC+1→PC,(A+PC)→A3.2.5变址寻址(基址+变址)Base-Register-plus-Index-Register-IndirectAddressing操作数在程序存储器中2023/12/7103E0A程序存储区2040H9320E0H472041H……

…DPH20DPL00ALU如:MOVCA,@A+DPTR设DPTR=2000H,A=E0H20E0H47指令代码2023/12/71043.2.6相对寻址

将PC中的当前内容与指令第二字节给出的数相加,结果作为跳转指令的转移地址(转移目的地址)。

PC中的当前内容称为基地址(本指令后的字节地址)指令第二字节给出的数据称为偏移量,1字节带符号数.

常用于跳转指令。如:JC23H

若C=0,不跳转;C=1,跳转.RelativeAddressing改变PC2023/12/7105程序存储区ALU如:JC231025H1000H401025H451001H

23…

…1024H471002H3023H1002H指令代码当前PC2023/12/7106

对片内RAM的位寻址区和某些可位寻址的特殊功能寄存器进行位操作时的寻址方式。如:SETB3DH;将27H.5位置1 CLRC;Cy位清03.2.7位寻址BitAddressing操作数在片内RAM位地址区或SFR某些位中2023/12/7107寻址方式涉及的存储器空间寻址方式寻址空间(操作数存放空间)立即寻址程序存储器直接寻址片内RAM低128字节、SFR寄存器寻址工作寄存器R0~R7,A,B,DPTR寄存器间接寻址片内RAM:@R0,@R1,SP片外RAM:@R0,@R1,@DPTR变址寻址程序存储器:@A+PC,@A+DPTR相对寻址程序存储器256字节范围内:PC+偏移量位寻址片内RAM的位寻址区(20H~2FH字节地址)某些可位寻址的SFR2023/12/7108§3.3数据传送类指令(29条)

DataTransferInstructionMCS-51助记符:助记符:

MOV、MOVX、MOVC

XCH、XCHD、SWAP

PUSH、POP

源操作数寻址方式(5种):立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。目的操作数寻址方式(3种):直接寻址、寄存器寻址、寄存器间接寻址

除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。2023/12/71093.3.1十六位数的传递指令(1条) MOVDPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。

例:MOVDPTR,#1234H执行完了之后DPH中的值为12H,DPL中的值为34H。如果我们分别向DPH,DPL送数,则结果也一样。如下面两条指令:MOVDPH,#35H MOVDPL,#12H。则就相当于执行了MOVDPTR,#3512H。2023/12/71103.3.2累加器A与片外RAM之间的数据传递类指令(4条)

MOVX

A,@Ri

MOVX

@Ri,A

MOVX

A,@DPTR

MOVX

@DPTR,A说明:

1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。2023/12/71112.要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。

3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。

例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。

MOVDPTR,#0100H MOVXA,@DPTR MOVDPTR,#0200H MOVX@DPTR,A2023/12/71123.3.3读程序存储器指令(2条)MOVCA,@A+DPTRMOVCA,@A+PC

本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格说明:查找到的结果被放在A中,因此,本条指令执行前后,A

中的值不一定相同。例:有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是0-5)

MOVDPTR,#100H MOVA,R0 MOVCA,@A+DPTR .…

ORG0100H DB0,1,4,9,16,25如果R0中的值为2,则最终地址为100H+2为102H,到102H单元中找到的是4。2023/12/71133.3.4堆栈操作(2条)

PUSHdirect

;SP

SP+1,(SP)(direct)

POPdirect;(direct)(SP),SP

SP-1第一条为压入指令,就是将direct中的内容送入堆栈中,第二条为弹出指令,就是将堆栈中的内容送回到direct中。例: MOVSP,#5FH MOVA,#100 MOVB,#20

PUSHACC PUSHB

则执行第一条PUSHACC指令是这样的:将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后,内存60H单元的值就是100,同样,执行PUSHB时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20。2023/12/71141.给出每条指令执行后的结果MOV23H,#30HMOV12H,#34HMOVR0,#23HMOVR7,12HMOVR1,#12HMOVA,@R0MOV34H,@R1MOV45H,34HMOVDPTR,#6712HMOV12H,DPHMOVR0,DPLMOVA,@R0;(23H)=30H;(12H)=34H;R0=23HXXXXXXXXXXXXXXXXXXDPHDPL45H34H23H12HR7R1R0XXXXXXXX3034XXXX23XXXXXXXX3034341223671234343034341223671234343067341212;R7=34H;R1=12H;A=30H;(34H)=34H;(45H)=34H;DPTR=6712H;(12H)=67H;R0=12H;A=67H内部RAM2023/12/7115§3.4算术运算类指令(24条)

ArithmeticOperations

主要对8位无符号数;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令影响PSW有关位。2023/12/71163.4.1

加法指令

ADDA,#data

;A+data→A

ADDA,direct

;A+(direct)→A

ADDA,Rn

;A+Rn→A

ADDA,@Ri

;A+(Ri)→A用途:将A中的值与源操作数所指内容相加,最终结果存在A中。1.不带进位位的加法指令(4条)2023/12/71172.带进位位的加法指令(4条)

ADDCA,Rn

;A+Rn+CY→A

ADDCA,direct

;A+(direct)+CY→A

ADDCA,@Ri

;A+(Ri)+CY→A

ADDCA,#data

;A+data+CY→A用途:将A中的值和其后面的值以及进位位C中的值相加,最终结果存在A,常用于多字节数运算中。说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0~255,这在实际工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到0~65535。2023/12/7118例:

先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。然后再做10H+30H+CY,结果是41H,所以最终的结果是4107H。1067H+30A0H0001000001100111001100001010000001000001000001111067H30A0H4107H2023/12/7119设:1067H存在R1R0中,30A0H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。MOVA,R0ADDA,R2;R0+R2→A和CYMOVR4,AMOVA,R1ADDCA,R3;R1+R3+CY→A和CYMOVR5,A2023/12/7120又例:

先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。然后再做10H+30H+CY,结果是40H,所以最终的结果是4087H。1067H+3020H0001000001100111001100000010000001000000100001111067H3020H4087H2023/12/7121DAA在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用于对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整。例:A=00010101BCD(代表十进制数15)

ADDA,#83.十进制调整指令(1条);A=1DH,按二进制规律加;A=23H,按十进制规律加DAA2023/12/7122

调整要完成的任务是:(1)当累加器A中的低4位数出现了非BCD码(1010~1111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。(2)当累加器A中的高4位数出现了非BCD码(1010~1111)或高4位产生进位(CY=1),则应在高4位加6调整,以产生高4位正确的BCD结果。

十进制调整指令执行后,PSW中的CY表示结果的百位值。2023/12/7123例若(A)=01010110B,表示的BCD码为56,(R3)=01100111B,表示的BCD码为67,(CY)=0。执行以下指令:ADDA,R2DAA由于(A)=00100011B,即,且(CY)=1,即结果为BCD数123。应该注意,DA指令不能对减法进行十进制调整。2023/12/71243.4.2减法指令(8条)SUBBA,Rn

;A-Rn-CY→ASUBBA,direct;A-(direct)-CY→ASUBBA,@Ri

;A-(Ri)-CY→ASUBBA,#data ;A-data-CY→A将A中的值减去源操作数所指内容以及进位位C中的值,最终结果存在A中。如:

SUBBA,R2设:A=C9H,R2=55H,CY=1,执行指令之后,A中的值为73H。1.带借位的减法指令(4条)2023/12/7125说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。对带符号数,要注意OV标志。OV=1,出错。2023/12/7126§3.5逻辑运算类指令(24条)主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。

主要操作与、或、异或、移位、取反、清零等。

对标志位的影响除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。LogicOperations2023/12/71273.5.1逻辑或指令(6条)ORLA,Rn ;A∨Rn→AORLA,direct ;A∨(direct)→AORLA,@Ri ;A∨(Ri)→AORLA,#data ;A∨data→AORLdirect,A ;(direct)∨A→(direct)ORLdirect,#data;(direct)∨data→(direct)影响P标志例:71H和56H相或:

01110001(71H) ∨)01010110(56H)01110111即77H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。

OR

LogicInstruction2023/12/71283.5.2逻辑与指令(6条)ANLA,Rn

;A∧Rn→AANLA,direct

;A∧(direct)→AANLA,@Ri

;A∧(Ri)→AANLA,#data

;A∧data→AANLdirect,A

;(direct)∧A→(direct)ANLdirect,#data

;(direct)∧data→(direct)影响P标志例:71H和56H相与:

01110001(71H) ∧)01010110(56H)01010000即50H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。

ANdLogicInstruction2023/12/7129例:71H和56H相异或:

01110001(71H)

⊕)01010110(56H)

3.5.2逻辑异或指令(6条)XRLA,Rn ;A⊕Rn→AXRLA,direct ;A⊕(direct)→AXRLA,@Ri ;A⊕(Ri)→AXRLA,#data ;A⊕data→AXRLdirect,A ;(direct)⊕A→(direct)XRLdirect,#data;(direct)⊕data→(direct)影响P标志00100111即27H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。

eXclusive-oR

LogicInstruction2023/12/71303.5.3清0与取反指令(2条)取反:CPLA;/A→A例:若A=5CH,执行CPLA

结果:A=A3H清0:CLRA

;0→AComPlementLogicOperation2023/12/71313.5.4循环移位指令(4条)RLA

RRARLCARRCAA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响P标志和CY。

RotateLogicinstruction2023/12/7132例:若A=5CH,CY=1,执行RLCA后,

对RLC、RRC指令,在CY=0时

RLC相当于乘以2 RRC相当于除以2结果:A=B9H,CY=0,P=10101110011011100102023/12/7133§3.6

控制转移类指令(17条)

BranchingInstruction共有控制程序转移类指令(不包括位操作类的转移指令)。此类指令一般不影响PSW。包括以下类型:无条件转移和条件转移相对转移和绝对转移长转移和短转移调用与返回指令2023/12/71343.6.1

无条件转移类指令(4条)

短转移类指令:AJMPaddr11

长转移类指令:LJMPaddr16

相对转移指令:SJMPrel

间接转移指令:JMP@A+DPTR(1)上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。那么他们的区别何在呢?2023/12/7135跳转的范围不同。

短转移类指令:AJMPaddr11

长转移类指令:LJMPaddr16

相对转移指令:SJMPrel转移范围:2KB64KB-128~+127指令构成不同。

AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。

指令长度不同原则上,所有用SJMP或AJMP的地方都可以用

LJMP来替代。2023/12/7136间接转移指令:JMP@A+DPTR

这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。转移地址由A+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。(2)第四条指令与前三条指令相比有所不同2023/12/7137例:MOVDPTR,#TAB;将TAB代表的地址送入DPTRJMP@A+DPTR;跳转TAB:AJMPROUT0;跳转ROUT0开始的

温馨提示

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

最新文档

评论

0/150

提交评论