51单片机学习笔记——基于汇编语言(1)

博主近期在疫情学校上网课期间里开始汇编语言的51单片机学习,由于博客与论坛上的单片机教程几乎都是基于C语言的,汇编的寥寥无几,所以博主打算将自己的学习记录连载在博客上,当然本菜鸟也还是在读学生(还是非电信类的hh),所以不免会出现错误,还望大家多多指正。
该系列文章基于80C51单片机,Keil2(这个版本是比较古老,不过keil2和keil5其实区别不大)

1、80C51系列单片机硬件结构

在开始讲单片机之前,相信大家已经对进制转换与码值已经有了一定的了解,如果完全没学过,可以随便弄本C语言啥的书,一般应试教育的计算机入门类教材第一章都会讲这个2333。

学单片机我们就要先了解一下它的硬件结构

1.1 内部结构

在这里插入图片描述
单片机的硬件组成有
1、1个8bit的CPU
2、1个片内振荡器和时钟电路
3、程序存储器,4KB(其实我用的有64K,相信大部分人也是,4k估计是Intel原始设计)的掩膜ROM,用于存放程序、原始数据和表格
4、数据存储器
5、64KB总线扩展控制器(也就是常说的外RAM)
6、4个8位并行I/O口(P0、P1、P2、P3)
7、一个全双工串行接口
8、2个十六位的定时/计数器
9、5个中断源z
另外相信大家发现程序存储器与数据存储器是分开的,仿佛符合哈佛结构,但是51的IC总线输入输出是一根,故不是严格意义上的哈佛结构。

1.2 外部引脚功能

在这里插入图片描述
80C51总共有40个外部引脚,其中并行I/O口占了4x8=32个

1、电源引脚

VCC:芯片电源,+5V
VSS:接地

2、时钟引脚

XTAL1、XTAL2:晶体振荡电路反相输入端和输出端
在这里插入图片描述

接下来讲个比较,相当重要的内容——80C51的时序

细节大家看书吧,我这里留个例题大家也好结合教材理解
1T机器周期=6T状态周期S=12T时钟(振荡)周期P

例:设应用单片机晶振频率为12MHz,问机器周期为多少?

:由已知得,晶振频率为12MHZ,周期为频率的倒数
故,1/T=12MHz => T=1/12M (s)
机器周期=12x1/12M=1/1M(s)=1us
同理晶振频率为24MHz,机器周期为0.5us

3、控制引脚

RST/VPD:复位信号输入端/备用电源输入端
EA/VPP:内外ROM选择端/片内EPROM编程电源
ALE/PROG:地址锁存允许/片内EPROM编程脉冲
PSEN:外部ROM读选通信号

2、80C51系列单片机存储空间配置和功能

2.1存储器的类型

ROM:用于存储程序,断电后信息保留
RAM:用于存储数据,断电后信息消失,分片内片外

2.2存储单元和存储单元地址

存储器是由大量寄存器组成的,其中每一个寄存器称为一个存储单元。它可存放一个二进制代码。一个代码由若干位(bit)组成,80C51系列单片机中算术单元是八位,即一个字节(Byte),存储器的大小也可称为存储器的容量,以字节(B)为单位,80C51系列单片机内部有4KB的程序存储器,也就是说80C51单片机的内部程序存储器可以存放4x1024个Byte

2.3存储单元的读、写操作

(1)存储器的读操作

读操作,不会破坏该单元原来的内容,只相当于数据的复制

(2)存储器的写操作

写操作,要改变或刷新该单元原来的内容,相当于原来的内容被覆盖了

2.4 80C51系列单片机存储空间配置

80C51的存储器组织结构可以分为三个不同的存储空间

  1. 64KB的程序存储器(ROM),包括片内ROM和片外ROM
  2. 64KB的外部数据存储器(外RAM
  3. 256B的内部数据存储器(内RAM)(包括特殊功能寄存器)
    在这里插入图片描述

(1)80C51的程序存储器(ROM)

地址范围:0000H~FFFFH,共计64KB
低段4KB:0000H~0FFFH
80C5187C51在片内,80C31在片外。高段60KB:1000H~FFFFH。在片外。
读写ROMMOVC指令,控制信号是PSENEA

(2)80C51的数据存储器(RAM)

数据存储器分为外RAM内RAM
RAM地址范围:0000H~FFFFH64K
RAM地址范围:00H~FFH256B,分为两个部分:

  1. 内部存储器空间,地址为00H~7FH(低128B
  2. 特殊功能寄存器,地址为80H~FFH高128B
    访问片外RAMMOVX指令,访问片内RAMMOV指令

2.5 80C51片内数据存储空间(低128B)

在这里插入图片描述

(1)工作寄存区(00H~1FH)

作用:有专用于工作寄存器操作的指令,读写速度一般比内RAM要快,指令字节比一般直接寻址指令短,还具有间接寻址功能 (只有R0、R1可以)
工作寄存器 区分为四个区:0、1、2、3区。每区有八个寄存器:R0~R7

(2)位寻址区(20H~2FH)

作用:不但有字节地址,而且每一字节地址还有位地址,可以进行位操作

(3)数据缓冲区(30H~7FH)

作用:用于存放各种数据和中间结果,起到数据缓冲作用。堆栈一般开辟在这个区域
00H~7FH是一般用户能操作的区

2.6特殊功能寄存器(高128B)

21个特殊功能寄存器,其中字节地址末尾是0H8H的寄存器每一位都有位地址,可以进行位操作

特殊功能寄存器SFR

占用地址字节:80H~FFH
位寻址器:其字节地址可被8整除,也即上面讲的0H、8H结尾

专用寄存器:

A、B、PSW、DPTR、SP
I/O接口寄存器:
P0、P1、P2、P3、SBUF、TMOD、TCON、SCON…

(1)累加器Acc

最常用的寄存器,所有的运算类指令都要使用它。累加器在指令中助记符位A,自身带有全零标志Z,若A=0则Z=1;若A != 0则Z = 0。该标志常用于程序分支转移的判断条件

(2)B寄存器

80C51中,在做乘除法时必须使用B寄存器,不做乘除法时,可作为一般寄存器使用

(3)程序状态字PSW

在这里插入图片描述

(4)堆栈指针SP

以后用到再来完善

(5)数据指针DPTR

分成DPL(低8位)和DPH(高8位)两个寄存器,用来存放16位地址值。

2.7并行I/O口

四个8位的双向并行端口:P0、P1、P2、P3
P0、P1、P2、P3口对应四个数据锁存器:P0、P1、P2、P3,对应内部RAM地址为80H、90H、A0H、B0H,访问I/O端口可以位寻址,当单片机复位时,P0~P3锁存器内容均为1

(1)P0口

P0口需接上拉电阻
在这里插入图片描述

(2)P1口

P0口无需外接上拉电阻
在这里插入图片描述

(3)P2口

在这里插入图片描述
P2口的驱动能力为四个LSTTL门电路

(4)P3口

在这里插入图片描述
P3口的第二功能都保持高电平时,P3口作为通用I/O口使用,功能与P1相同
在这里插入图片描述

3、80C51系列单片机的工作方式

3.1复位方式

(1)复位条件

复位**(RST)**引脚(9脚)上加一个持续时间为两个机器周期的高电平
若单片机时钟频率为 12MHz,则机器周期为 1us,那么则需要持续 2us以上的时间。

(2)复位后内部寄存器状态

在这里插入图片描述

发布了3 篇原创文章 · 获赞 6 · 访问量 427

猜你喜欢

转载自blog.csdn.net/qq_43327300/article/details/104698377
今日推荐