单片机学习笔记——特殊功能寄存器(SFR)_(上)

这篇具有很好参考价值的文章主要介绍了单片机学习笔记——特殊功能寄存器(SFR)_(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

片内RAM的特殊功能寄存器

F0H——寄存器B

单片机乘法原理

单片机除法原理

E0H——累加器ACC

ACC和A的区别和联系

寄存器和存储器的区别和联系

D0H——程序状态控制字PSW

B8H——中断优先级控制寄存器IP

A8H——中断允许寄存器IE

B0H——特殊功能寄存器P3

A0H——特殊功能寄存器P2



单片机特殊寄存器,单片机,单片机,学习,笔记

片内RAM的特殊功能寄存器

单片机特殊寄存器,单片机,单片机,学习,笔记

片内RAM一共有21个特殊功能寄存器

F0H——寄存器B

寄存器B称为辅助寄存器,是为乘法和除法指令而设置的,仅在乘法、除法指令中为寄存器寻址,在其它指令中为直接寻址

乘法运算
运算前 运算后
寄存器B 被乘数 结果的高8位
累加器ACC 乘数 结果的低8位

单片机乘法原理

  1. 确定乘数和被乘数
  2. 将乘数和被乘数化为二进制
  3. 判断乘数是否为0,若为0,直接输出0
  4. 乘数不为0时,被乘数的二进制序列和乘数的二进制序列按位运算——被乘数遇到乘数某位为0时,按全零序列左移一位;遇到乘数某位为1时,被乘数整体左移一位——每次移位结果相加
  5. 直到乘数最高位为0时,停止计算并输出结果

(虽然在计算过程中,乘数和被乘数的先后顺序并不重要,但是在单片机的读出和写入过程中,由于其存储位置的不同,会有细微差别)

单片机特殊寄存器,单片机,单片机,学习,笔记

乘法算法
  1. 判断乘数是否为0,为0跳转至步骤4
  2. 将乘数与1作与运算,确定末尾位为1还是为0,如果为1,则相加数为当前被乘数;如果为0,则相加数为0;将相加数加到最终结果中
  3. 被乘数左移一位,乘数右移一位;回到步骤1
  4. 确定符号位,输出结果

使用控制电路实现乘除法时,用B寄存器存放在运算过程中保持不变被乘数除数

  • 乘法运算中,需要不断地将乘数右移,判断其最低位,如果为1,则加上被乘数,故乘数不变
  • 在除法运算中,要将被除数减去除数,得到余数,然后再加上商和向左移,所以除数是不变的

除法运算
运算前 运算后
寄存器B 除数 余数
累加器ACC 被除数

单片机除法原理

  1. 确定除数和被除数
  2. 将除数和被除数化为二进制
  3. 判断除数是否为0,是的话,无法计算
  4. 除数不为0,被除数的二进制序列和除数的二进制序列按位运算——除数按位左移,被除数与除数按位相减,重复此操作,直到被除数小于除数时,得到商
  5. 被除数减去除数与商之积即为其余数(进行左移减法之后被除数剩下的部分就是余数)
除法算法
  1. 取除数和被除数的绝对值,确定除数和被除数为1的位数(该位数就是移位减法要移动的位数)
  2. 不断用被除数去减除数,直到被除数小于被除数,当商小于除数的时候(即除不尽了)
  3. 确定商的符号:若被除数和除数异号时,商为负;同号时,商为正
  4. 确定余数的符号:余数和被除数同号

E0H——累加器ACC

ACC——8位,一个操作数经暂存器2进入ALU(算数逻辑单元)的输入端,与另一个来自暂存器1的操作数进行运算,结果再送回ACC,在指令中,使用助记符A表示

Accumulator Register是应用最广泛的专用寄存器——用于存放8位数据,许多单操作数指令的操作数、双操作数指令的一个操作数取自累加器。加、减、乘、除算术运算指令的结果都存放在累加器A或寄存器B

ACC和A的区别和联系

A 和 ACC,是同一个特殊功能寄存器,但编程时,有两种写法:

  • 写成 A(指令操作),是寄存器寻址,指令长度和周期都较短,为2字节1周期,A在汇编后则隐含在指令操作码中,在指令中默认是无地址的
  • 写成 ACC(累加器位操作),是直接寻址,周期和长度都多用一个字节,3字节2周期——汇编后的机器码必有一个字节的操作数,是累加器的字节地址E0H,可出现在用直接寻址的任何地方
【Practical】单片机中Acc与A的区别_push acc_Anova.YJ的博客-CSDN博客

同样的,工作寄存器R0~R7在指令中写法不同,生成的机器码也不同,如:

单片机特殊寄存器,单片机,单片机,学习,笔记

前者属于寄存器寻址,后者属于存储器直接寻址

R0和00H的级别不同

  • 00H只是RAM区的一个普通单元,其读写速度要比慢得多。微型计算机内部通常设置工作寄存器组,运算的结果可以放在寄存器中而不必每次都放到存储器里,可以提高机器的工作速度。其实寄存器也是一种存储器,只不过它是CPU中的部件,速度最快而已

寄存器和存储器的区别和联系

  • 寄存器存在于CPU中,速度很快,数目有限;计算机运算时,必须先将数据读入寄存器
  • 存储器就是内存,速度稍慢,但数量很大

寄存器用于存储二进制代码,由触发器而成,一个触发器可存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成


按照功能的不同,可将寄存器分为

  • 基本寄存器只能并行送入数据,也只能并行输出
  • 移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广

存储器单元实际上是时序逻辑电路的一种。按存储器的使用类型可分为只读存储器(ROM)和随机存取存储器(RAM),两者的功能有较大的区别,因此在描述上也有所不同
存储器是许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值


累加器ACC作寄存器时的主要作用:

1、存储临时的数据,比如做算术运算时候的临时结果

2、存放函数的返回值,比如WINDOWS 的API函数中,返回值一般都是放在累加器中的

D0H——程序状态控制字PSW

Program State Word,存放着当前ALU的操作状态特征

单片机特殊寄存器,单片机,单片机,学习,笔记

单片机特殊寄存器,单片机,单片机,学习,笔记

注意以下几点

  • 进位标志位CY(PSW.7),在指令中,使用C代替CY,如果要根据加减运算是否有仅为来决定程序的转移方向,则必须在运算前清零
  • 用户标志位F0(PSW.5),可根据用户需求自定义作为软件标志
  • 溢出标志位OV(PSW.2),符号数运算结果超出-128~+127时由硬件置1
  • 保留位F1(PSW.1),89C51未使用,52用于用户标志位,和F0一样可自定义为软件标志

 RS0(PSW.3) 和 RS1(PSW.4)决定当前使用哪个工作寄存器组

单片机特殊寄存器,单片机,单片机,学习,笔记


单片机特殊寄存器,单片机,单片机,学习,笔记

B8H——中断优先级控制寄存器IP

中断

6个中断请求信号;2种触发方式;6个中断标志;5个中断源;2级中断允许控制;2个优先级;1个中断向量表;4个相关寄存器。

对单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速处理(中断发生);CPU暂时停止当前工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称之为中断

中断自然优先级 IP.0(PX0)最高,IP.7 最低,IP可进行位寻址,单片机复位时,各位全部清零——也就是说,复位之后所有的中断都处于低优先级,服务顺序按自然优先级

高优先级中断能够打断低优先级中断以形成中断嵌套,同级或低级对高级不能进行中断嵌套

优先级寄存器的各个位,如果置1——设为高优先级,如果置0——设为低优先级,同一优先级的排序仍按照自然优先级排序

置1操作方法

指令操作置1    MOV IP,#07H        ;将各个中断按需置1,提高优先级

位操作置1       SETB PX0   

(其中分号;用于汇编语言的注释)       

若几个同级中断同时向CPU请求中断响应,在没有设置中断优先级情况下,按照默认自然中断优先级响应中断;在设置中断优先级后,则按设置的高低顺序的自然优先级顺序确定响应的先后顺序

单片机特殊寄存器,单片机,单片机,学习,笔记

单片机特殊寄存器,单片机,单片机,学习,笔记

A8H——中断允许寄存器IE

必须先打开全局中断IE.8(EA),才能决定其他的中断请求是否能被响应

置1操作方法(允许定时计数器0(ET0)中断)

指令操作置1    MOV IE,#82H      

位操作置1       SETB EA,SETB  ET0  ;SETB EA用于CPU开全局中断

单片机特殊寄存器,单片机,单片机,学习,笔记

(ET2只有89C52里面有 )

单片机特殊寄存器,单片机,单片机,学习,笔记

B0H——特殊功能寄存器P3

P3口是6位双向口,既可以作为输入,也可以作为输出。从P3.0~P3.5两两一组,分别是串行口外部中断口和定时器口,P3.6和P3.7分别是片外RAM的写读选通信号

p3的第二功能是中断,所以只要开中断就转化为第二功能,开中断用中断允许控制器IE,IE的地址是(A8H)把它的最高位置一,开总中断,然后你想用哪个中断就给那个中断置一

单片机特殊寄存器,单片机,单片机,学习,笔记

P3各线的第二功能

单片机特殊寄存器,单片机,单片机,学习,笔记

P3口是一个多功能端口,与P1,P2口的差别在于多了与非门和缓冲器。故使得P3口除了具有P1口的准双向I/O功能之外,还可以使用各引脚所具有的第二功能

与非门的作用实际上是一个开关,决定是输出锁存器上的数据还是输出第二功能的信号。WR和RD是第二输出功能引脚。当第二输出端为1时,输出Q端信号;当Q=1时,可输出第二输出端的信号。编程时,不必事先由软件设置P3口为通用I/O口还是第二功能

也就是直接对P3口做了一个操作,而没有使用它内部的特殊功能,比如没有使用过串口,也没有使用过外部中断,也没有使用过定时计数器的计数功能,也没有做外部扩展,这个时候没有对那些特殊功能做设置,这个输出功能线它就会是1,不需要来干预,这个是由指令和硬件配合来决定的,所以如果没有使用它的第二功能,这个线它肯定是1,这样的话外部引脚的电平就是仅由的内部总线来决定

A0H——特殊功能寄存器P2

P2口是8位输出口,只能作为输出使用,在P2口上可以连接LED、LCD等输出设备

单片机特殊寄存器,单片机,单片机,学习,笔记

P2口比P0口多了一个多路开关转换器,其输出端也不一样了——输出端是一个上拉电阻加一个非门。它也可作为普通的IO口和作为地址的高8位:当它作为普通的IO口时,控制端MUX为0,开关就打到下面和内部总线相连,一旦断开电平就会通过上拉电阻连接到VCC,外部引脚 P2.X 呈现的就是高电平;当内部电路写0时经过开关,非门端的场效应管就会导通,外部引脚 P2.X 就会呈现低电平

在使用输入功能的时候要先使内部总线先写1,否则经过输入通道读出外部电平的状态的时候就会读错,此时场效应管导通,无论是什么状态的电平,进来之后都只能读到是低电平,就会出错。(也就是说,如果使用之前写入的是0,Q是0,MUX控制开关打到0,经过非门,电平为1,场效应管导通,VCC经过一个电阻之后接地,外部引脚此时无论是什么情况,都不会连接到VCC的电路中,所以就是低电平——存在时钟信号的情况下,输出Q跟随输入D,即内部写0,输出端就为0)

单片机特殊寄存器,单片机,单片机,学习,笔记
D为输入端,Q为输出端,CLK为时钟输入端

为什么P2口使用输入功能的时候要在内部电路上写1

要先在内部总线上写1,目的就是使场效应管处于断开的状态,外部引脚的电平经过D端才能真正进去,当遇到外部高电平的时候,内部经过读引脚读进来的的电平才是1;外部遇到低电平的时候,内部总线上读进来才是0,这个时候读电平才不会出错

单片机特殊寄存器,单片机,单片机,学习,笔记

地址由P0口(低8位)和P2口(高8位)共同组成,P0分时复用,可作为地址的低8位,也可以作为8位数据的输出端;P2口则作为地址高8位的输出端文章来源地址https://www.toymoban.com/news/detail-775234.html

到了这里,关于单片机学习笔记——特殊功能寄存器(SFR)_(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机内部的主要寄存器

    51单片机(8051系列)内部包含一系列特殊功能寄存器(SFRs),这些寄存器用于控制和管理单片机的各种硬件资源,包括定时器、中断系统、串行通信接口、并行输入输出端口等。以下是51单片机中部分重要的特殊功能寄存器及其功能: 累加器(A或ACC) 直接寻址,参与算术运

    2024年01月19日
    浏览(34)
  • 51单片机寄存器一览表

    51单片机寄存器功能一览表 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:

    2024年02月06日
    浏览(39)
  • 【51单片机】利用【与或赋值法】优化【配置TMOD寄存器】

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本文是YY入门【【51单片机】从零开始手把手带你【查手册】配置定时器,并完成小项目(定时器&中断的应用)(代码演示&单片机现象对照LCD闪烁)】配合博客的其中一部分,

    2024年02月19日
    浏览(29)
  • 【51单片机实验笔记】前篇(三) 模块功能封装汇总(持续更新)

    包含 常用 头文件 , 宏定义 , 自定义类型 , 函数工具 等。 包含 常用 延时函数 。 通用函数 兼容 延时函数 。 包含 常用 LED 显示函数。 主要实现了 延时法刷新 和 定时器法刷新 两种方式 。提供 字符静态写入函数 、 整数写入函数 、 浮点数写入函数 和 字符串写入函数

    2024年02月09日
    浏览(28)
  • 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码

    目录 1. 串口通信原理 2. 51单片机串口通信  2.1 串口简要模式图  2.2 相关寄存器 (1)PCON、SCON、SBUF (2)IE、IPH、IP (3)配置T1定时器 2.3 波特率和系统时钟和TH1和TL1计算  3.串口通信简单收发使用代码   3.1 在STC-isp使用端口助手,从单片机发送字节  3.2 通过端口助手利用主

    2024年02月05日
    浏览(36)
  • 学习51单片机引脚及功能说明

    1.输出/输入引脚 (1)P0口:不接外部存储器和不扩展I/O口时,作为双向输入/输出口,在接有外部存储器和扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。 (2)P1口:作为双向I/O口使用。 (3)P2口:作为双向I/O口使用,在扩展片外寄存器时,作为高8位地址总线

    2024年02月05日
    浏览(25)
  • 51单片机学习笔记_6 IO通信:电脑与单片机之间的通信

    单片机还可以通过IO口实现多种通信。 串行通信 :一条数据线,一次发1bit,发很久。 并行通信 :多条数据线,同时发送,发的速度快多了但是费用高、接收困难、抗干扰性差。 异步通信 :发送和接收方时钟可以不用完全一致。 同步通信 :发送和接收方时钟要完全一致。

    2024年02月08日
    浏览(36)
  • 51单片机学习笔记-4矩阵键盘

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。采用逐行或逐列的“扫描”,就可以读

    2024年02月06日
    浏览(38)
  • 51单片机入门教程学习笔记

    基于江科大自化协B站教学视频《51单片机入门教程-2020版 程序全程纯手打 从零开始入门》 单片机,英文Micro Controller Unit,简称MCU 内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和

    2024年02月05日
    浏览(35)
  • 单片机学习笔记---红外遥控(外部中断)

    目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工,异步 红外LED波长:940nm 通信协议标准:NEC标

    2024年02月22日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包