单片机原理及应用复习资料文档格式.docx

上传人:b****2 文档编号:392566 上传时间:2023-04-28 格式:DOCX 页数:86 大小:92.82KB
下载 相关 举报
单片机原理及应用复习资料文档格式.docx_第1页
第1页 / 共86页
单片机原理及应用复习资料文档格式.docx_第2页
第2页 / 共86页
单片机原理及应用复习资料文档格式.docx_第3页
第3页 / 共86页
单片机原理及应用复习资料文档格式.docx_第4页
第4页 / 共86页
单片机原理及应用复习资料文档格式.docx_第5页
第5页 / 共86页
单片机原理及应用复习资料文档格式.docx_第6页
第6页 / 共86页
单片机原理及应用复习资料文档格式.docx_第7页
第7页 / 共86页
单片机原理及应用复习资料文档格式.docx_第8页
第8页 / 共86页
单片机原理及应用复习资料文档格式.docx_第9页
第9页 / 共86页
单片机原理及应用复习资料文档格式.docx_第10页
第10页 / 共86页
单片机原理及应用复习资料文档格式.docx_第11页
第11页 / 共86页
单片机原理及应用复习资料文档格式.docx_第12页
第12页 / 共86页
单片机原理及应用复习资料文档格式.docx_第13页
第13页 / 共86页
单片机原理及应用复习资料文档格式.docx_第14页
第14页 / 共86页
单片机原理及应用复习资料文档格式.docx_第15页
第15页 / 共86页
单片机原理及应用复习资料文档格式.docx_第16页
第16页 / 共86页
单片机原理及应用复习资料文档格式.docx_第17页
第17页 / 共86页
单片机原理及应用复习资料文档格式.docx_第18页
第18页 / 共86页
单片机原理及应用复习资料文档格式.docx_第19页
第19页 / 共86页
单片机原理及应用复习资料文档格式.docx_第20页
第20页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机原理及应用复习资料文档格式.docx

《单片机原理及应用复习资料文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用复习资料文档格式.docx(86页珍藏版)》请在冰点文库上搜索。

单片机原理及应用复习资料文档格式.docx

1.2.2外部数据存储器

用于存放随机读写的数据。

外部I/O口地址影像区。

MCS-51单片机的外部数据存储器和外部I/O口实行统一编址,并使用相同的作选通控制信号,均使用MOVX指令访问。

MCS-51单片机最多可扩展64KB外部数据存储器

1.2.3内部数据储存器

内部数据存储器是使用最多的地址空间,存放随机读写的数据

通用寄存器区

堆栈区

运算操作数存放区

指令(算术运算、逻辑运算、位操作运算等)的操作数只能在此地址空间或功能寄存器地址空间。

内部数据存储器的地址分配

51系列单片机内部数据存储器地址范围为00~7FH。

各区域地址见下表。

(1)地址0~1FH的前32个单元称为寄存器区

用途:

①作通用寄存器R0~R7。

②R0与R1可作间址寄存器使用。

使用时应注意:

32个单元的寄存器区分为四组,使用时只能选其中一组寄存器。

寄存器的选组由程序状态字PSW的RS1和RS0位定。

RS1RS0选寄存器组

000组

011组

102组

113组

初始化时或复位时,自动选中0组。

一旦选中一组,其它三组只能作为数据存储器使用,而不能作为寄存器使用。

设置多组寄存器可以方便保护现场。

(2)20H~2FH为位地址区

共16个单元,每单元有八个位,每位有一个位地址,共128位,位地址范围为00H~7FH,该区既可位寻址,又可字节寻址。

如MOV20H,C(这里C是Cy进位标志位),该指令是将Cy内容送20H位,如果Cy=1,位20H值为“1”。

(3)除选中的寄存组以外的存储器均可以作为通用RAM区。

(4)堆栈区

8XX51单片机的堆栈设在内部RAM区,深度不大于128字节,初始化时SP指向07H。

注:

对51基本型单片机只有00H-7FH单元128字节的RAM区。

对52增强型的单片机还有80H-FFH组成的高128字节RAM区(共256字节RAM)。

1.3特殊功能寄存器

MCS-51单片机共有21个字节的特殊功能寄存器用英文缩写SFR(SpecialFuctionRegister)表示。

1.用途:

A累加器、状态标志寄存器

单片机内部各部件专用的控制、状态寄存器

并行口、串行口影射寄存器

2.地址空间:

21个特殊功能器不连续的分布在80H~FFH128个字节地址空间,见表1-2。

地址为X0H和X8H是可位寻址的寄存器,表1-2中用“*”表示。

表1-2中还标注了各SFR的名称、字节地址、可寻址位的位地址和位名称。

21个特殊功能寄存器的名称及主要功能介绍如下,详细的用法见后面各节的内容。

A—累加器,自带有全零标志Z,A=0则Z=1;

A≠0则Z=0。

该标志常用于程序分支转移的判断条件。

B—寄存器,常用于乘除法运算(见第2章)。

PSW—程序状态字。

主要起着标志寄存器的作用,其8位定义见表1-3。

其中

CY:

进/借位标志

反映最高位的进位借位情况,加法为进位、减法为借位。

CY=1,有进/借位;

CY=0,无进/借位。

AC:

辅助进/借位标志

反映高半字节与低半字节之间的进/借位,

AC=1有进/借位;

AC=0无进/借位。

FO:

用户标志位。

可由用户设定其含义。

RS1,RS0:

工作寄存器组选择位。

OV:

溢出标志

反映补码运算的运算结果有无溢出

有溢出OV=1,无溢出OV=0。

-:

无效位。

P:

奇偶标志

运算结果有奇个“1”,P=1;

运算结果有偶个“1”,P=0。

影响标志位的指令及其影响方式见第2章。

SP—堆栈指针。

8XX51单片机的堆栈设在片内RAM,

对堆栈的操作包括压入(PUSH)和弹出(POP)两种方式,并且遵循后进先出的原则,但在堆栈生成的方向上,与8086正好相反8XX51单片机的堆栈操作遵循先加后压,先弹后减的顺序,按字节进行操作。

此外还有如下寄存器,它们将在后面章节介绍:

IP——中断优先级控制寄存器。

IE——中断允许控制寄存器。

TMOD——定时器/计数器方式控制寄存器。

TCON——定时器/计数器控制寄存器。

TH0,TL0——定时器/计数器0。

TH1,TH1——定时器/计数器1。

SCON——串行端口控制寄存器。

SBUF——串行数据缓冲器。

PCON——电源控制寄存器。

在52子系列中,高128字节RAM和SFR的地址是重叠的,究竟访问哪一块可通过不同的寻址方式加以区分,访问高128字节RAM采用寄存器间址,访问SFR则只能采用直接寻址,访问低128字节RAM时,两种寻址均可采用。

1.4时钟电路与复位电路

内部振荡方式:

在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)如图1-3所示。

由于单片机内部有一个高增益运算放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。

1.4.2基本时序单位

单片机的时序单位有:

状态周期:

振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。

因此,一个状态周期包含2个振荡周期。

机器周期(MC):

1个机器周期由6个状态周期及12个振荡周期组成。

是计算机执行一种基本操作的时间单位。

4种时序单位中,振荡周期和机器周期是单片机内计算其他时间值(例如,波特率、定时器的定时时间等)的基本时序单位。

例:

单片机外接晶振频率12MHZ时的各种时序单位:

振荡周期=1/fosc=1/12MHZ=0.0833us

状态周期=2/fosc=2/12MHZ=0.167us

机器周期=12/fosc=12/12MHZ=1us

指令周期=(1~4)机器周期=1~4us

上电后,由于电容充电,使

RST持续一段高电平时间。

当单片

机已在运行过程中时,按下复位键

也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。

通常选择

C=10f,R=10K。

单片机的复位操作是使SFR寄存器进入初始化,不改变片内RAM区中的内容。

几个主要特殊功能寄存器复位状态归纳如下:

PC=0000H程序计数器为零表明单片机复位后程序从0000H地址单元开始执行。

A=00H 表明累加器已被清零。

PSW=00H 表明选寄存器0组为工作寄存器组。

SP=07H  表明堆栈指针指向片内RAM07H单元,根据堆栈操作的先加后压法则,第一个被压入的数据被写入08H单元中。

 P0~P3=FFH 表明已向各端口线写入1,各端口既可用于输入又可用于输出。

记住一些特殊功能寄存器复位后的主要状态,对于熟悉单片机操作,减短应用程序中的初始化部分是十分必要的。

其它的特殊功能寄存器复位后的状态见教材表1-4。

1.5引脚功能

各个引脚的功能说明如下:

Vss:

接地端。

Vcc:

电源端,接+5V。

XTAL1,XTAL2:

接外部晶体或外部时钟。

RST/VPD:

①复位信号输入。

②接备用电源,当VCC掉电后,在低功耗条件下保持内部RAM中的数据。

ALE/PROG:

①ALE地址锁存允许。

ALE输出脉冲的频率为振荡频率的1/6。

②PROG对8751单片机片内EPROM编程时,编程脉冲由该引脚引入。

PSEN:

程序存储器允许。

输出读外部程序存储器的选通信号。

EA/VPP:

①EA=0,单片机只访问外部程序存储器。

EA=1,单片机访问内部程序存储器。

②在8751单片机片内EPROM编程期间,此引脚引入21V编程电源VPP。

在增强型的52系列单片机中,P1.0、P1.1除为端口线外,还为定时/计数器2的外部引脚T2和T2EX。

P0.0~P0.7:

P0口,数据/低八位地址复用总线端口。

P1.0~P1.7:

P1口,静态通用端口。

P2.0~P2.7:

P2口,高八位地址总线端口。

P3.0~P3.7:

P3口,双功能静态端口。

1.6小单片机是集CPU、存储器、I/O接口于一体的大规模集成电路芯片。

MCS-51系列单片机是目前市场上应用最广泛的单片机机型。

本章重点是单片机的内部结构和存储器结构

51系列单片机内部包含:

一个8位的CPU。

4KB程序存储器ROM(视不同产品型号不同:

8031内部无ROM;

8051内部为掩模式ROM;

8751为EPROM;

89C51内部为FLASHEEPROM)。

128字节RAM数据存储器。

两个16位定时器/计数器。

可寻址64KB外部数据存储器和64KB外部程序存储器空间的控制电路。

32条可编程的I/O线(四个8位并行I/O端口)。

一个可编程全双工串行口。

具有两个优先级嵌套中断结构的五个中断源。

★掌握51系列单片机各存储空间的地址分配,使用特点及数据操作方法。

现将此内容归纳于教材表1-5中,此表是编程和硬件扩展的基础,相当重要,务必要熟记和掌握。

MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;

汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。

无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。

 

目前很多公司将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如WAVE、

KEIL,WAVE集成软件的使用见附录。

汇编的方法:

汇编的方法有两种

1.手工汇编:

人工查指令表,查出程序中每条指令对应的机器代码。

早期的计算机使用。

2.机器汇编:

用计算机中的汇编程序对用户源程序进行汇编。

用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。

这些由伪指令指定。

1)确定程序中每条汇编语言指令的指令机器码

2)确定每条指令在存储器中的存放地址

3)提供错误信息

4)提供目标执行文件(*.OBJ/*.HEX)和列表文件(*.LST)

二.伪指令常用伪指令及功能:

1.起始指令ORGnn

功能:

定义程序或数据块的起始地址。

指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。

指令地址机器码源程序

ORG2000H

2000H7830MAIN:

MOVR0,#30H

2002HE6MOVA,@R0

3.字定义标号:

DW(字常数或表达式)

作用:

指示在程序存储器中以标号为起始地址

的单元里存放的数为字数据(即16位的二进制数),例如:

GH:

DW1234H,5678H,08

5.等值指令标号EQU(数值表达式)

表示EQU两边的量等值,用于为标号或标识符赋值。

例如:

X1EQU2000H

X2EQU0FH

MAIN:

MOVDPTR,#X1;

DPTR=2000HADDA,#X2;

A=A+0FH

6.位定义标号BIT[位地址]

同EQU指令,不过定义的是位操作地址。

例如AICBITP1.1。

汇编语言程序设计步骤

一.确定方案和计算方法

二.了解应用系统的硬件配置、性能指标

三.建立系统数学模型,确定控制算法和操作步骤

四.合理分配存储器单元和了解I/O接口地址

常用程序结构

顺序程序、分支程序、

循环程序、子程序

顺序程序设计

例3-1编程将外部数据存储器的000EH和000FH单元的内容相换。

ORG0000H

MOVP2,#0H;

送地址高八位至P2口

MOVR0,#0EH;

R0=0EH

MOVR1,#0FH;

R1=OFH

MOVXA,@R0;

A=(000EH)

MOV20H,A;

(20H)=(000EH)

MOVXA,@R1;

A=(000FH)

XCHA,20H;

A=(000EH),(20H)=(000FH)

MOVX@R1,A

MOVA,20H

MOVX@R0,A;

交换后的数送各单元

SJMP$

END

3.3顺序程序设计

顺序程序(简单程序),程序走向只有一条路径

例3-3分解压缩式BCD码,使其成为非压缩式BCD码。

ORG0000H

MOVR0,#40H;

设指针

MOVA,@R0;

取一个字节

MOVR2,A;

暂存

ANLA,#0FH;

清0高半字节

INCR0

MOV@R0,A;

保存数据个位

例2用单片机加重力传感器作磅秤,秤出重量后算出行李运费价格,其秤出的重量以10kg为1个计价单位G,G已存入40H单元。

计价方法

为50kg以内按3元,50kg以上

分段计价:

50kg按3元计价

,超过部分按2元计价。

由此列出算式:

1.利用转移地址表实现转移

例3-7根据R3的内容转向对应的程序,R3的内容为0~n,处理程序的入口符号地址分别为PR0~PRn(n<

128)。

分析:

将PR0—PRn入口地址列在表格中,每一项占两个单元,PRn在表中的偏移量为2n,因此将R3的内容乘2即得PRn在表中的偏移地址,从偏移地址2n和2n+1两个单元分别取出PRn的高八位地址和低八位地址送DPTR寄存器,用JMP@A+DPTR指令(A先清零)即转移到PRn入口执行。

MOVA,R3;

R3→A

ADDA,ACC;

A*2

MOVDPTR,#TAB

PUSHACC

MOVCA,@A+DPTR;

取地址表中高字节

MOVB,A;

暂存于B

INCDPL

POPACC

取地址表中低字节

MOVDPL,A

MOVDPH,B;

DPTR为表中地址

CLRA;

A=0

JMP@A+DPTR;

转移

TAB:

DWPR0,PR1,PR2,…..,PRn;

转移地址表

END

2.利用转移指令表实现转移

例3-8设有五个按键0、1、2、3、4其编码分别为3AH、47H、65H、70H、8BH,要求根据按下的键转向不同的处理程序,分别为PR0、PR1//PR2、PR3、PR4,设按键的编码已在B寄存器中,编出程序。

AJMPPR0的机器码为2110H,PR1入口地址为0220HAJMPPR1的机器码为4120H,转移指令表JPT的内容如下所示。

设B=65H,键值为2:

MOVDPTR,#TAB;

置键码表首址

MOVA,#0;

表的起始位的偏移量为0

NEXT:

PUSHACC

MOVCA,@A+DPTR;

A=键码表的编码

CJNEA,B,AGAN;

将B中值和键码表的值比较

POPACC

RLA;

如相等,序号乘2得分支表内偏移量

MOVDPTR,#JPT;

置分支表首址

JMP@A+DPTR

AGAN:

POPACC;

不相等比较下一个

INCA;

序号加1

CJNEA,#5,NEXT

SJMP$;

键码查完还没有B中按键编码程序结束

JPT:

AJMPPR0;

分支转移表

AJMPPR1

AJMPPR2

AJMPPR3

AJMPPR4

TAB:

DB3AH,47H,65H,70H,8BH;

键码表

例3-9设计一个延时10ms的延时子程序,已知单片机使用的晶振为6MHz。

分析:

延时时间与两个因素有关:

晶振频率和循环次数。

由于晶振采用6MHz,一个机器周期是2μs,用单循环可以实现1ms延时,外循环10次即可达10ms延时。

内循环如何实现1ms延时呢,程序中可先以未知数MT代替,从附录A查每条指令机器周期计算程序的执行时间。

ORG0020H

MOVR0,#0AH;

外循环10次

DL2:

MOVR1,#MT;

内循环MT次

DL1:

NOP

NOP;

空操作指令

DJNZR1,DL1

DJNZR0,DL2

RET

例3-10编写多字节数×

10程序。

内部RAM以20H为首址的一片单元中存放着一个多字节符号数,字节数存放在R7中,存放方式为低位字节在低地址,高位字节在高地址,要求乘10后的积仍存放在这一片单元中。

分析用R1作该多字节的

地址指针,部分积的低位仍

存放于本单元,部分积的高

位存放于R2,以便和下一

位的部分积的低位相加。

以R7作字节数计数。

编程如下:

CLRC;

清进位位C

MOVR1,#20H;

R1指示地址

MOVR2,#00H;

存积的高八位寄存器R2清0

S10:

MOVA,@R1;

取一字节送A

MOVB,#0AH;

10送B

PUSHPSW

MULAB;

字节乘10

POPPSW

ADDCA,R2;

上次积高八位加本次积低八位

MOV@R1,A;

送原存储单元

MOVR2,B;

积的高八位送R2

INCR1;

指向下一字节

DJNZR7,S10;

未乘完去SH10,否则向下执行

MOV@R1,B;

存最高字节积的高位

例如1223650989比较大小

MCS-51单片机有着优异的位逻辑功能,可以方便的实现各种复杂的逻辑运算.这种用软件替代硬件的方法,可以大大简化甚至完全不用硬件,但比硬件要多花运算时间。

例3-17编写一程序,以实现图3-4中的逻辑运算电路.

程序如下:

START:

MOVC,P2.2

ORLC,TF0

ANLC,P1.1

MOVF0,C

MOVC,IE1

ORLC,/25H

ANLC,F0

ANLC,/26H

MOVP1.3,C

例3-18设累加器A的各位ACC.0~ACC.7分别记为X0~X7,编制程序用软件实现下式:

Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7

X0BITACC.0

X1BITACC.1

X2BITACC.2

X3BITACC.3

X4BITACC.4

X5BITACC.5

X6BITACC.6

X7BITACC.7

MOVC,X0

ANLC,X1

ANLC,X2

MOV00H,C;

X0X1X2

MOVC,X0

ANLC,/X1

MOV01H,C;

X0X1

ANLC,/X2

ORLC,00H

MOV00H,C

MOVC,X2

ANLC,01H

ANLC,X3;

X0X1X2X3

ORLC,/00H

MOV00H,C

MOVC,X7

ANLC,/X6

ANLC,/X5

ANLC,/X4;

X4X5X6X7

ORLC,00H;

最终结果

Y→C

SJMP$

子程序是构成单片机应用程序必不可少的部分,通过ACALL和LCALL两条子程序调用指令,可以十分方便地用来调用任何地址处的子程序。

子程序节省占用的存储单元,使程序简短、清晰,善于灵活的使用子程序,是程序设计的重要技巧之一。

子程序必须以RET指令结尾.

在调用子程序时,有以下几点应注意:

1)保护现场。

如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时,这些寄存器和存储单元又有其他用途,就应先把这些单元或寄存器中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。

如果有较多的寄存器要保护,应使主、子程序使用不同的寄存器组。

2)设置入口参数和出口参数。

用之前主

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2