单片机学习笔记2---单片机内外部机构分析(2021-1-8)

单片机内外部机构分析

锁存器

锁存器

“锁存器”:数据总线是一根大家公用的线,很多器件和他连在一起,在不同的时候,不同的饿器件需要不同的信号,但是当某一个时刻我们想让某个引脚输出高电平,且保持一段时间不变,但是在这段时间里,计算机忙个不停,在于其他器件进行联络,所以这根线上的电平未必能一直保持不变。为了解决这个问题,因为存储器是可以存放电荷的,所以可以在器件前加一个小的存储器单元,并加一个开关,需要这个一直保持高电平,那么就打开开关,然后当信号进去保存好后立即关闭,这样就使这个状态持续保持了,直到下一次命令让它把开关打开为止。这样,即不耽误CPU和其他器件的交互,也不会影响具体器件的状态。就这样的存储器加开关的单元,称之为“锁存器“。

准双向I/O口

51单片机中输入有两种方式,分别为”读引脚“和”读锁存器“
读引脚:将引脚作为输入,这是真正的从外部引脚读进输入的值
读锁存器:是该引脚处于输出状态时,有时候需要改变这一位的状态,则并不需要真正的读引脚状态,只需要读入锁存器的状态,然后做某种变换后再输出。
”准双向I/O口“:接在外部的开关如果打开,则输入1,如果关闭,则输入0,但是如果单片机内部的开关是闭合的,那么不管外部开关是开还是关闭,接收到的数据都会是0,,所以,想让一端口作为输入使用,要先做一个“准备工作”,就是先让内部的开关断开,也就是让端口输出“1”才行。正因为要做一个准备工作,所以称之为“准双向I/O口”。

51单片机内部结构

CPU:用来控制、计算。
四个并行I/O口:P0、P1、P2、P3,对并行I/O口的读写只要将数据送入到相应的I/O口锁存器即可。
ROM(read only memory 只读存储器):保存程序
RAM(random access memory 随机读写存取器):保存中间结果
定时\计数器
串行I/O口中断系统
内部时钟电路

特殊功能寄存器(SFR)

有一些独立的存储单元是用来控制定时/计数器,串行I/O口等的使用,称之为特殊功能寄存器(SFR),如下表

符号地址功能介绍
BF0HB寄存器
ACCE0H累加器
PSWD0H程序状态字
IPB8H中断优先级控制寄存器
P3B0HP3口锁存器
IEA8H中断允许控制寄存器
P2A0HP2口锁存器
SBUF99H串行口锁存器
SCON98H串行口控制寄存器
P190HP1口锁存器
TH18DH定时器/计数器1(高8位)
TH08CH定时器/计数器1(低8位)
TL18BH定时器/计数器0(高8位)
TL08AH定时器/计数器0(低8位)
TMOD89A定时器/计数器方式控制寄存器
TCON88H定时器/计数器控制寄存器
DPH83H数据地址指针(高8位)
DPL82H数据地址指针(低8位)
SP81H堆栈指针
P080HP0口锁存器
PCON87H电源控制寄存器

(1)ACC:累加器,通常用A表示。是一个寄存器,所有运算类指令均需要它。
(2)B:B寄存器,在做乘、除法时放乘数或除数,不做除法时,你可以随意调用。
(3)PSW:程序状态字,很重要的寄存器,里面放了CPU工作时的很多状态。
CPU状态如下表:

D7D6D5D4D3D2D1D0
CYACF0RS1RS00VP

CY: 进位标志,8051中的运算器是一种8位的运算器,可以表示到0~255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,防止最高位丢失,就会将最高位放进到这里来。
AC:半进位标志。
F0:用户标志位,由编程人员(我们)决定什么时候使用,什么时候不用。
RS1、RS0:工作寄存器组选择位
0V:溢出标志位
P:奇偶校验位,用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0.
例:78H(01111000),因为1的个数为偶数,P=0.
(4)DPTR(DPH、DPL):数据指针,用来访问外部数据存储器中的任一单元,若不用,也可以作为通用寄存器。
(5)P0、P1、P2、P3:是四个并行输入/输出口的寄存器,它里面对应着管脚的输出。
(6)SP:堆栈指针
堆栈:先进后出、后进先出,在单片机中,我们也可以在RAM中构造这样一个区域,用来存放数据,这个区域存放数据规则是“先进后出、后进先出”,我们称之为“堆栈”。之所以这样来存放数据,是因为如果存放一批数据,我们不需要知道每一个数据的地址,只需要知道第一个数据的地址就可以根据这个规则访问所有数据了。
51单片机由于能够存放数据的区域有限,我们不能专门分配一块地方做堆栈,所以只能在RAM中开辟一块地方,用于堆栈,至于具体用那一块地方需要根据用户自己去定义。所以51单片机中的堆栈的位置可以变化,而这种变化就体现在SP中值的变化。如果SP指向一个位置,在真正的51机中,SP指向的位置并非就是数据存放的位置,而是数据存放的前一个位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值