单片机学习笔记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),如下表
符号 | 地址 | 功能介绍 |
---|---|---|
B | F0H | B寄存器 |
ACC | E0H | 累加器 |
PSW | D0H | 程序状态字 |
IP | B8H | 中断优先级控制寄存器 |
P3 | B0H | P3口锁存器 |
IE | A8H | 中断允许控制寄存器 |
P2 | A0H | P2口锁存器 |
SBUF | 99H | 串行口锁存器 |
SCON | 98H | 串行口控制寄存器 |
P1 | 90H | P1口锁存器 |
TH1 | 8DH | 定时器/计数器1(高8位) |
TH0 | 8CH | 定时器/计数器1(低8位) |
TL1 | 8BH | 定时器/计数器0(高8位) |
TL0 | 8AH | 定时器/计数器0(低8位) |
TMOD | 89A | 定时器/计数器方式控制寄存器 |
TCON | 88H | 定时器/计数器控制寄存器 |
DPH | 83H | 数据地址指针(高8位) |
DPL | 82H | 数据地址指针(低8位) |
SP | 81H | 堆栈指针 |
P0 | 80H | P0口锁存器 |
PCON | 87H | 电源控制寄存器 |
(1)ACC:累加器,通常用A表示。是一个寄存器,所有运算类指令均需要它。
(2)B:B寄存器,在做乘、除法时放乘数或除数,不做除法时,你可以随意调用。
(3)PSW:程序状态字,很重要的寄存器,里面放了CPU工作时的很多状态。
CPU状态如下表:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
CY | AC | F0 | RS1 | RS0 | 0V | P |
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指向的位置并非就是数据存放的位置,而是数据存放的前一个位置。
单片机学习笔记2---单片机内外部机构分析(2021-1-8)相关推荐
- 51单片机学习笔记1 -- 单片机最小系统仿真电路绘制
在Protues和Keil都安装好之后,就可以开始学习51单片机了,但其实只要有Keil和开发板就可以开始搞 单片机最小系统仿真 1.Protues新建工程 2.晶振电路绘制 3.复位电路绘制 4.电 ...
- 单片机学习笔记————51单片机实现带数码管显示的象棋比赛专用计时器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现数码管中的倒计时程序
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现用LED灯和按键来模拟工业自动化设备的运动控制
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现矩阵键盘的组合按键触发
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现带数码管显示的加法简易计算器
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现按住一个独立按键不松手的加速匀速触发
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现在数码管中实现iphone4S开机密码锁的程序
一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 /***************************************************************** ...
- 单片机学习笔记————51单片机实现主机的串口收发
proteus虚拟串口的实现:https://mp.csdn.net/console/editor/html/107251649 一.使用proteus绘制简单的电路图,用于后续仿真 二.编写程序 / ...
- 51单片机学习笔记_1单片机介绍,C语言基础语法
软件下载 开发:Keil 程序文件下载到单片机:STC/普中(STC需要冷启动,先点击下载再开启单片机电源) 介绍 Micro Controller Unit, MCU 单片机,其中包含了CPU RA ...
最新文章
- 【python教程】IO文件操作的常见用法
- carbondata与mysql_Apache CarbonData 1.4.0 中文文档
- Linux下Makefile的automake生成全攻略
- 步步为营 .NET 代码重构学习笔记 十
- 中国互联网大佬隐退简史
- CSS + DIV 让页脚始终保持在页面底部
- [TWRP 2.8.4 ] 小米 3W 中文-英文版本 twrp
- 51test-day1【ofo测试第一天】
- HTTP缓存-http强制缓存与协商缓存
- 万维钢 万万没想到读书笔记
- C语言递归函数 计算学生年龄
- 2021年教师资格证 科目三 高中数学 课程标准 简答题
- 百度网盘目录搜索引擎上线了 百度网盘目录搭建系统
- python合法整型常量要符合什么条件_1.下列字符列中,合法的长整型常量是: 【 】...
- 《Visual Basic.Net 循序渐进》问题收集贴
- 【零基础绘画教程】procreate超详细用法讲解 视频入门教程全
- 牛客在线编程101-93 盛水最多的容器
- 怎么修改win8计算机用户名和密码忘了怎么办,win8忘记了登陆密码怎么办|win8用户登入密码忘了的解决措施...
- 我市12个海滨浴场提升改造沙滩今夏不硌脚
- HTML制作色带,色带用尼龙带及色带的制作方法