单片机学习笔记(一)

来源:互联网 发布:淘宝市场营销 编辑:程序博客网 时间:2024/04/28 14:59

MCS-51单片机的结构

(1)一个8位的CPU

(2)一个片内振荡器及时钟电路

(3)4KBROM

(4)128KBRAM

(5)64KB程序存储器可寻址的地址空间

(6)64KB数据存储器可寻址的地址空间

(7)两个16位可编程的定时计数器

(8)一个UART

(9)32条I/O线

HMOS:高速、高封装密度

CMOS:低功耗

引脚

外接晶体引脚XTAL1和XTAL2

RST/VPD——复位信号输入端/备用电源输入端

ALE/PROG——地址锁存允许信号端/编程脉冲信号输入端

PSEN——程序存储器允许输出信号端

EA/Vpp——外部程序存储器地址允许输入端/固化编程电压输入端

P0:(1)通用I/O口

       (2)当CPU访问片外存储器时,分时提供低8位地址和8位数据的复用总线

P1:(1)通用I/O口

       (2)对片内EPROM编程或校验时输入片内EPROM的低8位地址

P2:(1)通用I/O口

       (2)带片外存储器时,与P0口配合,传送片外存储器的高8位地址

P3:(1)通用I/O口

       (2)第2功能

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

外部RAM写选通信号

P3.7

RD

外部RAM读选通信号

指令——>指令寄存器——>指令译码器——>定时控制

PC:专门用来控制指令执行顺序的一个寄存器,其内容可被指令强迫改写

IR:用来存放指令操作码的专用寄存器

DPTR:间址寄存器

 

运算器:(1)8位算术逻辑运算单元ALU

            (2)8位的暂存器1和暂存器2

            (3)8位的累加器A、B寄存器、PSW

 

B寄存器可控制位寻址

 

在执行乘法运算时,ALU的两输入来自A、B,结果低8位在A中存放,高8位在B中存放

在执行除法运算时,被除数取自A,除数取自B,商存放于A,余数存放于B

 

PSW.0

P

奇偶标志位

PSW.1

F1

用户标志位

PSW.2

OV

溢出标志位

PSW.3

RS0

工作寄存器组

选择位(00H~1FH

PSW.4

RS1

PSW.5

F0

用户标识位

PSW.6

AC

辅助进位标志位

PSW.7

CY

进位标志位

堆栈指针SP

存储器

4种物理存储空间:片内ROM、片外ROM

                        片外RAM、片内RAM

3种逻辑存储空间:(1)片内、片外统一的64KBROM

                          (2)片外64KBRAM

                          (3)片内256字节RAM:片内数据RAM(低128字节)、SFR(高128字节)

 

(1)对于8051,片内与片外ROM在低4KB地址出现重叠,由EA进行控制

        当EA=1时,内部ROM有效

        当EA=0时,内部ROM无效

(2)片内ROM的某些特定单元被保留用于特定的程序入口地址

        启动地址

        5个中断的服务程序入口(中断矢量地址)

RAM在物理上和逻辑上都分为两个地址空间:一个是片内256字节的RAM,另一个是片外最大可扩充至64KB的RAM

 

片内低128字节RAM:工作寄存器区

                              位寻址区

                              字节寻址区

                              堆栈区及堆栈指示区

片内高128字节RAM内有21个特殊功能寄存器访问SFR只允许使用直接寻址方式,有11个具有位寻址能力,有六个属于CPU范围,分别为:ACC、B、PSW、SP、DPH、DPL,余15个属于接口范围

 

I/O端口的每一位均由锁存器,输出驱动器和输入缓冲器组成

 

(1)P0口的每一位I/O端口输出可驱动8个LSTTL输入端,而P1~P3可驱动3个LSTTL输入端

(2)P0口作普通I/O口使用时,须外加上拉电阻,P1~P3内部有上拉电阻,无须外加

(3)P0~P3口作普通输入口使用时,应先使锁存器置1,再读引脚

(4)端口的自动识别

定时计数器

8051单片机内有两个16位定时计数器,即T0、T1。他们都有定时和计数的功能。两个16位定时计数器实际上都是16位加1计数器,其功能由SFR寄存器TMOD和TCON控制。

不管是定时还是计数的工作方式,定时器T0和T1在对内部时钟的计数或是对外部事件的计数时都不占用CPU时间,除非溢出,才有可能中断CPU当前的操作。

TMOD(89H):

 中断

中断:由于外部或内部事件改变原来CPU正在执行的指令顺序的一种工作机制。

外部中断源有两个,通常是外设产生的中断请求信号,内部中断源有三个,两个定时计数器和一个串口中断源

 时序

振荡器:自激振荡器

            外部振荡器

 

振荡器信号fosc——>时钟信号fosc/2

时钟信号的周期称为状态周期S,每个状态周期S有两个节拍P1、P2

机器周期:一个机器周期包含6个状态周期

指令周期:通常含1~4个机器周期

用于T1

用于T0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

选通控制

更能选择

工作模式

 

 

 

 

 

M1        M0

工作模式

更能描述

0          0

模式0

13位计数器

0          1

模式1

16位计数器

1          0

模式2

自动再装入8位计数器

1          1

模式3

对定时器0:分成两个8位计数器

对定时器1:停止计数

 

(1)模式0时选择定时器T0(T1)的高8位和低5位组成一个13位的定时计数器,定时时间为:

 

t=(213-T0初值)*振荡周期*12

(2)模式1是一个16位定时计数器,用于定时工作方式时,定时时间为:

t=(216-T0初值)*振荡周期*12

(3)模式2把T0(T1)配置成一个可以自动重装载的8位定时计数器,当TL0计数溢出时,不仅使溢出中断标志位TF0置1,同时自动把TH0中的内容重新再装载到TL0中。用于定时工作方式时,其定时时间为:

t=(28-T0初值)*振荡周期*12

这种工作模式可省去软件中重装常数的语句,产生相当精确的定时时间,适用于作串行口波特率发射器。

(4)工作模式为3时对T0和T1是完全不同的,T0在模式3工作时,TL0和TH0被分成两个互相独立的8位计数器,其功能和操作与模式0和模式1完全相同,TL0可工作在定时器方式或计数器方式;但TH0只可用作简单的内部定时功能,它还占用了定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TR1的控制。

定时器T1无工作模式3,若将T1设置为模式3,就会使T1立即停止计数,但可设置T1为模式0、1和2,由于此时中断源已被T0占用,所以仅能作为波特率发生器或用在其他不用中断的地方。

 

ps:

C/T=0,设置为定时方式,定时器计数8051内部脉冲,对机器周期计数

C/T=1,设置为计数方式,计数器的输入来自T0或T1端的外部脉冲

当GATE=0时,只要用软件使TR0(TR1)置1就启动了定时器,而不管INT0(INT1)电平的高低

 

当GATE=1时,只要INT0(INT1)为高电平,同时使TR0置1时,才能启动定时器工作

 

TCON(88H):

 

TF1

TR1

TF0

TR0

GATE

C/T

M1

M0

T1的溢出标志位

T1的运行控制位

T0的溢出标志位

T0的运行控制位

 

 

 

 

 

 

原创粉丝点击