单片机原理及应用总结.docx

上传人:b****8 文档编号:27627380 上传时间:2023-07-03 格式:DOCX 页数:25 大小:82.36KB
下载 相关 举报
单片机原理及应用总结.docx_第1页
第1页 / 共25页
单片机原理及应用总结.docx_第2页
第2页 / 共25页
单片机原理及应用总结.docx_第3页
第3页 / 共25页
单片机原理及应用总结.docx_第4页
第4页 / 共25页
单片机原理及应用总结.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

单片机原理及应用总结.docx

《单片机原理及应用总结.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用总结.docx(25页珍藏版)》请在冰豆网上搜索。

单片机原理及应用总结.docx

单片机原理及应用总结

单片机原理及应用

第1章绪论

1.什么叫单片机?

其主要特点有哪些?

在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。

特点:

控制性能和可靠性高、体积小、价格低、易于产品化、具有良好的性价比。

第二章80C51的结构和原理

1.80C51的基本结构

a.CPU系统

●8位CPU,含布尔处理器;

●时钟电路;

●总线控制逻辑。

b.存储器系统

●4K字节的程序存储器(ROM/EPROM/FLASH,可外扩至64KB);

●128字节的数据存储器(RAM,可外扩至64KB);

●特殊功能寄存器SFR。

c.I/O口和其他功能单元

●4个并行I/O口;

●2个16位定时/计数器;

●1个全双工异步串行口;

●中断系统(5个中断源,2个优先级)

2.80C51的应用模式

a.总线型单片机应用模式

◆总线型应用的“三总线”模式;

◆非总线型应用的“多I/O”模式

3.80C51单片机的封装和引脚

a.总线型DIP40引脚封装

●RST/VPO:

复位信号输入引脚/备用电源输入引脚;

●ALE/

地址锁存允许信号输出引脚/编程脉冲输入引脚;

/VPP:

内外存储器选择引脚/片内EPROM编程电压输入引脚;

外部程序存储器选通信号输出引脚

b.非总线型DIP20封装的引脚

●RST:

复位信号输入引脚

4.80C51的片内存储器

增强型单片机片内数据存储器为256字节,地址范围是00H~FFH。

低128字节的配情况与基本型单片机相同。

高128字节一般为RAM,仅能采用寄存器间接寻址方式询问。

注意:

与该地址范围重叠的特殊功能寄存器SFR空间采用直接寻址方式询问。

5.80C51的时钟信号

晶振周期为最小的时序单位。

一个时钟周期包含2个晶振周期。

晶振信号12分频后形成机器周期。

即一个机器周期包含12个晶振周期或6个时钟周期。

6.80C51单片机的复位

定义:

复位是使单片机或系统中的其他部件处于某种确定的初始状态。

a.复位电路

两种形式:

一种是上电复位;另一种是上电与按键均有效的复位。

b.单片机复位后的状态

单片机的复位操作使单片机进入初始化状态。

初始化后,程序计数器PC=0000H,所以程序从0000H地址单元开始执行。

特殊功能寄存器复位后的状态是确定的。

P0~P3为FFH,SP为07H,SBUF不定,IP、IE和PCON的有效位为0,其余的特殊功能寄存器的状态为00H.相应的意义为:

●P0~P3=FFH,相当于各口锁存器已写入1,此时不但可用于输出,也可以用于输入;

●SP=07H,堆栈指针指向片内RAM的07单元;

●IP、IE和PCON的有效位为0,各中断源处于低优先级且均被关断、串行通讯的波特率不加倍;

●PSW=00H,当前工作寄存器为0组。

7.80C51的存储器组织

功能:

存储信息(程序和数据)

a.程序存储器低端的一些地址被固定地用作特定的入口地址:

Ø0000H:

单片机复位后的入口地址;

Ø0003H:

外部中断0的中断服务程序入口地址;

Ø000BH:

定时/计数器0溢出中断服务程序入口地址;

Ø0013H:

外部中断1的中断服务程序入口地址;

Ø001BH:

定时/计数器1溢出中断服务程序入口地址;

Ø0023H:

串行口的中断服务程序入口地址。

8.80C51单片机的数据存储器配置

80C51单片机数据存储器分为片外RAM和片内RAM两大部分。

80C51片内RAM的128B部分分成工作寄存器区、位寻址区、通用RAM三大部分。

基本型单片机片内RAM的地址范围是00H~7FH。

增强型单片机片内除地址范围为00H~7FH的128BRAM外,又增加了80H~FFH的高128B的RAM。

增加的这部分RAM仅能采用间接寻址方式访问。

片外RAM地址空间为64KB,地址范围是0000H~FFFFH。

与程序存储器地址空间不同的是,片外RAM地址空间与片内RAM地址空间在地址的低端0000H~007FH是重叠的。

访问片外RAM时采用指令MOVX实现,访问片内RAM采用指令MOV,无读写信号产生。

a.工作寄存器区

80C51单片机片内RAM低端的00H~1FH共32B,分成4个工作寄存器组,每组占8个单元。

●寄存器0组:

地址00H~07H;

●寄存器1组:

地址08H~0FH;

●寄存器2组:

地址10H~17H;

●寄存器3组:

地址18H~1FH。

程序运行时,只能有一个工作寄存器组作为当前工作寄存器组;当前工作寄存器组的选择由特殊功能寄存器中得程序状态字寄存器PSW的RS1、RS0来决定。

b.位寻址区

内部RAM的20H~2FH共16个字节是位寻址区。

其128位的地址范围是00H~7FH。

c.通用RAM区

位寻址区之后的30H~7FH共80个字节为通用RAM区。

这些单元可以作为数据缓冲器使用。

实际应用中,常需在RAM区设置堆栈。

80C51的堆栈一般设在30H~7FH的范围内,栈顶的位置由堆栈指针SP指示。

复位时SP的初值为07H,在系统初始化时可以重新设置。

9.80C51单片机的特殊功能寄存器

a.程序状态字寄存器PSW,8位。

含义如下:

ØCY:

进位、借位标志。

有进位、借位时CY=1,否则CY=0;

ØAC:

辅助进位、借位标志

ØF0:

用户标志位,由用户自己定义

ØRS1、RS0:

当前工作寄存器组选择位

ØOV:

溢出标志位。

有溢出时OV=1,否则0V=0

ØP:

奇偶标志位。

存于ACC中的运算结果有奇数个“1”时P=1,否则P=0。

10.P0口、P2口的结构

P0口作为分时复用的低8位地址/数据总线,P2口作为高8位地址总线。

a.P0口的结构

●P0用作通用I/O口

输出驱动级工作在需外接上拉电阻的漏极开路方式;

P0口在作为通用I/O口,属于准双向口。

●P0用作地址/数据总线

b.P2口的结构

P2口的输出驱动电路与P0口不同,内部设有上拉电阻。

●P2用作通用I/O口

P2口在作为通用I/O口,属于准双向口。

●P2用作地址总线

11.P3口结构

a.P3用作第一功能的通用I/O口

b.P3用作第二功能使用

●P3.0:

RXD(串行口输入);

●P3.1:

TXD(串行口输出);

●P3.2:

(外部中断0输入);

●P3.3:

(外部中断1输入);

●P3.4:

T0(定时器0的外部输入);

●P3.5:

T1(定时器1的外部输入);

●P3.6:

(片外数据存储器“写”选通控制输出);

●P3.7:

(片外数据存储器“读”选通控制输出)。

第三章80C51的指令系统

1.80C51的寻址方式

表3.1寻址方式所对应的寄存器和存储空间

序号

寻址方式

寄存器或存储空间

1

基本方式

寄存器寻址

寄存器R0~R7,A、AB、DPTR和C(布尔累加器)

2

直接寻址

片内RAM低128字节、SFR

3

寄存器间接寻址

片内RAM(@R0,@R1,SP)

片外RAM(@R0,@R1,@DPTR)

4

立即寻址

ROM

5

扩展方式

变址寻址

ROM(@A+DPTR,@A+PC)

6

相对寻址

ROM(PC当前值的-128~+127字节)

7

位寻址

可寻址位(内部RAM20H~2FH单元的位和部分SFR的位)

2.特殊传送指令

表3.3特殊传送指令

编号

指令分类

指令

机器码字节

机器周期数

1

ROM查表

MOVCA,@A+DPTR

93H

2

2

MOVCA,@A+PC

83H

2

3

读片外RAM

MOVXA,@DPTR

E0H

2

4

MOVXA,@Ri

E2H(~E3H)

2

5

写片外RAM

MOVX@DPTR,A

F0H

2

6

MOVX@Ri,A

F2H(~F3H)

2

7

堆栈操作

PUSHdirect

C0H

2

direct

8

POPdirect

D0H

2

direct

●堆栈操作

在80C51单片机中,堆栈的生长方向是向上的。

入栈操作时,先将SP+1,然后将指令指定的直接地址单元的内容存入SP指向的单元;出栈操作时,将SP指向的单元内容传送到指令指定的直接地址单元,然后SP-1。

系统复位时,SP的内容位07H。

SP的值越小,堆栈深度越深。

PUSHdirect:

POPdirect:

一般在中断、子程序调用时发生堆栈操作

●MOV、MOVX、MOVC区别

MOV:

单片机内部数据传递;MOVX:

单片机与片外RAM和I/O口电路的数据传递;MOVC:

ROM的查表

3.逻辑运算与循环类指令

逻辑与:

编号

指令分类

指令

1

逻辑与

ANLdirect,A

2

ANLdirect,#data

3

ANLA,Rn

4

ANLA,direct

5

ANLA,@Ri

6

ANLA,#data

前两条把源操作数与直接地址指示内容相与;

后四条是把源操作数与累加器A的内容相与,送入A

逻辑或:

编号

指令分类

指令

1

逻辑或

ORLdirect,A

2

ORLdirect,#data

3

ORLA,Rn

4

ORLA,direct

5

ORLA,@Ri

6

ORLA,#data

逻辑异或:

编号

指令分类

指令

1

逻辑异或

XRLdirect,A

2

XRLdirect,#data

3

XRLA,Rn

4

XRLA,direct

5

XRLA,@Ri

6

XRLA,#data

累加器清0和取反

CLR

A

清0

CPL

A

取反

累加器循环移位

RR

右移

RRC

RL

左移

RLC

4.控制转移类指令

短跳转:

AJMP;长跳转:

LJMP;相对跳转:

SJMP。

由于LJMP指令提供的是16位地址,因此程序可以转向64KB的程序存储器地址空间的任何单元。

累加器判0转移:

JZrel:

(A)=0,则

JNZrel:

(A)

比较不相等转移(目的字节与源字节不相等则转移):

CJNEA,direct,rel

减1不为0转移:

DJNZ

Rn,rel

DJNZ

direct,rel

将操作数的循环控制单元的内容减1,并判断是否为0.若不为0,一直循环。

若为0,程序往下执行。

调用:

ACALL短调用;LCALL长调用

返回:

RET子程序返回指令;RETI中断服务子程序返回指令

CPL取反

第四章

1.查表程序

有一变量存放在片内RAM的20H单元,其取值范围为00H~05H。

要求编制一段程序,根据变量值求平方值,并存入片内RAM的21H单元。

程序如下:

ORG1000H

START:

MOVDPTR,#2000H

MOVA,20H

MOVCA,@A+DPTR

MOV21H,A

SJMP$

ORG2000H

TABLE:

DB00,01,04,09,16,25

END

2.双字节无符号数加法

设被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中,实现此功能的程序段如下:

MOVR0,#50H;被加数的低字节地址

MOVR1,#60H;加数的低字节地址

MOVA,@R0;取被加数低字节

ADDA,@R1;加上加数低字节

MOV@R0,A;保存低字节相加结果

INCR0;指向被加数高字节

INCR1;指向加数高字节

MOVA,@R0;取被加数高字节

ADDCA,@R1;加上加数高字节(带进位加)

MOV@R0,A;保存高字节相加结果

MOV00H,C;保存进位

3.双分支程序

设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:

当x>0时,y=x;当x=0时,y=20H;当x<0时,y=x+5。

编制程序,根据x的大小求y并返回原单元。

程序段如下:

START:

MOVA,30H

JZNEXT

ANLA,#80H;判断符号位

JZLP

MOVA,#05H

ADDA,30H

MOV30H,A

SJMPLP

NEXT:

MOV30H,#20H

LP:

SJMP$

4.多分支程序

根据R7的内容转向相应的处理程序。

设R7的内容为0~N,对应的处理程序的入口地址分别为PP0~PPN。

程序段如下:

START:

MOVDPTR,#TAB;置分支入口地址表首址

MOVA,R7

ADDA,R7

MOVR3,A

MOVCA,@A+DPTR;取高位地址

XCHA,R3

INCA

MOVCA,@A+DPTR;取低位地址

MOVDPL,A;处理程序入口地址低8位送DPL

MOVDPH,R3;处理程序入口地址高8位送DPH

CLRA

JMP@A+DPTR

TAB:

DWPP0

DWPP1

……

DWPPN

5.循环程序

先执行后判断;先判断后执行

50ms延时程序

若晶振频率为12MHZ,则一个机器周期为1μs,执行一条DJNZ指令需要2个机器周期,即2μs。

采用循环计数法延时,循环次数可通过计算获得,并选择先执行后判断的循环结构。

程序段如下:

DEL:

MOVR7,#200;1μs

DEL1:

MOVR6,#123;1μs

NOP;1μs

DEL2:

DJNZR6,DEL2;2μs共(2*123)μs

DJNZR7,DEL1;2μs共[(2*123+2+2)*200+1]μs,即50.001ms

RET

6.子程序及其调用

a.现场保护与恢复的结构

●在主程序实现

●在子程序中实现

b.子程序调用时,参数的传递方法

●利用累加器或寄存器

●利用存储器

●利用堆栈操作

7.常用程序举例

a.多字节无符号数的加法

设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。

相加后的结果要求存放在DATA2数据区中。

程序段如下:

MOVR0,#DATA1

MOVR1,#DATA2

MOVR7,#N;置字节数

CLRC

LOOP:

MOVA,@R0

ADDCA,@R1;求和

MOV@R1,A;存结果

INCR0;修改指针

INCR1

DJNZR7,LOOP

b.多字节无符号数的减法

设两个N字节的无符号数分别存放在内部RAM中以DATA1和DATA2开始的单元中。

相减后的结果要求存放在DATA2数据区中。

程序段如下:

MOVR0,#DATA1

MOVR1,#DATA2

MOVR7,#N;置字节数

CLRC

LOOP:

MOVA,@R0

SUBBA,@R1;求差

MOV@R1,A;存结果

INCR0;修改指针

INCR1

DJNZR7,LOOP

c.十六进制数与ASCII码间的转换

当十六进制数在0~9之间时,其对应的ASCII码值为该十六进制数加30H;当十六进制数在A~F之间时,其对应的ASCII码值为该十六进制数加37H

d.BCD码与二进制数之间的转换

双字节二进制数转换成BCD码

设(R2R3)为双字节二进制数,(R4R5R6)为转换完的压缩型BCD码。

程序段如下:

DCDTH:

CLRA

MOVR4,A;R4清0

MOVR5,A;R5清0

MOVR6,A;R6清0

MOVR7,#16;计数初值

LOOP:

CLRC

MOVA,R3

RLCA

MOVR3,A;R3左移一位并送回

MOVA,R2

RLCA

MOVR2,A;R2左移一位并送回

MOVA,R6

ADDCA,R6

DAA

MOVR6,A;(R6)乘2并调整后送回

MOVA,R5

ADDCA,R5

DAA

MOVR5,A;(R5)乘2并调整后送回

MOVA,R4

ADDCA,R4

DAA

MOVR4,A;(R4)乘2并调整后送回

DJNZR7,LOOP

第五章80C51的中断系统及定时/计数器

1.80C51的结构

80C51系列单片机的中断系统有5个中断源,2个优先级,可实现二级服务中断嵌套。

表5.1各中断源响应优先级及中断服务程序入口表

中断源

中断标志

中断服务程序入口

优先级顺序

外部中断0(

IE0

0003H

定时/计数器0(T0)

TF0

000BH

外部中断1(

IE1

0013H

定时/计数器1(T1)

TF1

001BH

串行口

RI或T1

0023H

注:

R1、T1必须由软件清除。

另外,所有能产生中断的标志位均可由软件置1或清0,由此可以获得与硬件使之置1或清0同样的效果。

2.中断响应条件

CPU响应中断的条件是:

第一,中断源有中断请求;第二,此中断源的中断允许位为1;第三是CPU开中断(即EA=1)。

同时满足这3个条件时,CPU才可能响应中断。

3.中断返回(使用RETI指令)

RETI指令能使CPU结束中断服务程序的执行,返回到曾经被中断过的程序处,继续执行主程序。

功能:

●将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断的地方继续执行程序;

●将相应中断优先级状态触发器清0,通知中断系统,中断服务程序已执行完毕。

注:

●外部中断定义为电平触发方式,中断标志位的状态随CPU在每个机器周期采样到的外部中断输入引脚的电平变化而变化。

电平触发方式适合于外部中断输入以低电平输入且在中断服务程序中能清除外部中断的情况。

●外部中断定义为边沿触发方式,在相继连续的两次采样中,一个周期采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将所存一个逻辑1。

边沿触发方式适合于以负脉冲形式输入的外部中断请求。

4.80C51的定时/计数器

80C51单片机片内集成有两个可编程的定时/计数器:

T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。

5.定时/计数器的控制

TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

定时模式

=0;计数模式

=1

6.定时/计数器的定时方式和计数方式的区别

Ø定时方式的计数脉冲源自内部的时钟脉冲,每个机器周期寄存器的值+1,计数频率为震荡频率的1/12;

Ø计数方式的计数脉冲源自相应的外部输入引脚T0或T1,每个下降沿寄存器值+1,最高计数频率为振荡频率的1/24.

7.定时/计数器的工作方式

80C51单片机定时/计数器T0有4种工作方式(方式0、1、2、3),T1有3种工作方式(方式0、1、2)。

a.方式0(M1M0=00)

13位计数器,由T0的低5位(高3位未用)和TH0的8位组成。

TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

计数初值公式:

X=213-N

b.方式1(M1M0=01)

16位计数器,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。

计数个数与计数初值的关系:

X=216-N

c.方式2(M1M0=10)

方式2为自动重装初值的8位计数方式。

TH0为8位初值寄存器。

当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求,并将TH0中的计数初值自动送入TL0。

TL0从初值重新进行加1计数。

周而复始,直至TR0=0才会停止。

计数个数与计数初值的关系:

X=28-N

d.方式3(M1M0=11)

只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

方式3时,T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的所有控制位:

、GATE、TR0、TF0和

当TL0计数溢出时,由硬件使TF0置1,向CPU发出中断请求。

8.定时/计数器的应用举例

a.利用定时/计数器T0方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12MHZ。

解:

(1)计算计数初值X:

由于晶振为12MHZ,所以机器周期Tcy为1μs。

所以:

N=t/Tcy=10*10-3/1*10-6=10000

X=216-N=65536-10000=55536=D8F0H

即应将D8H送入TH0中,F0H送入TL0中。

(2)求T0的方式控制字TMOD:

M1M0=01,GATE=0,

=0,可取方式控制字为01H。

(3)程序清单如下

ORG0000H

LJMPMAIN;跳转到主程序

ORG000BH;T0的中断入口地址

LJMPDVT0;转向中断服务程序

ORG0100H

MAIN:

MOVTMOD,#01H;置T0工作于方式1

MOVTH0,#0D8H;装入计数初值

MOVTL0,#0F0H

SETBET0;T0开中断

SETBEA;CPU开中断

SETBTR0;启动T0

SJMP$;等待中断

DVT0:

CPLP1.0;P1.0取反输出

MOVTH0,#0D8H;重新装入计数值

MOVTL0,#0F0H

RETI;中断返回

END

b.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHZ。

试设计程序。

解:

采用定时20ms,然后再计数1、49次的方法实现。

a.T0工作在定时方式1时,控制字TMOD配置:

M1M0=01,GATE=0,

=0,可取方式控制字为01H。

b.计算计数初值X:

晶振为12MHZ,所以机器周期Tcy为1μs。

所以:

N=t/Tcy=20*10-3/1*10-6=20000

X=216-N=65536-20000=45536=4E20H

即应将4EH送入TH1中,20H送入TL1中。

c.实现程序如下:

ORG0000H

AJMPMAIN;跳转到主程序

ORG0030H

MAIN:

MOVTMOD,#01H;置T0工作于方式1

MOVTH0,#4EH;装入循环计数初值

MOVTL0,#20H;首次计数值

LP0:

SETBP1.0

ACALLNT0

CLRP1.0

MOVR7,#49;计数49次

LP1:

ACALLNT0

DJNZR7,LP1

AJMPLP0

NT0:

MOVTH0,#4EH

MOVTL0,#20H

SETBTR0

JNBTF0,$

CLRTR0

CLRTF0

RET

END

c.要求从P1.1引脚输出1000HZ方波,晶振频率为12MHZ。

试设计程序。

解:

采用T0实现。

1 T0工作在

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1