2019-01-15 09:25:07 weixin_44367275 阅读数 51
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3400 人正在学习 去看看 朱有鹏

在这里插入图片描述

   在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

<特殊功能寄存器地址映象表(一)>

在这里插入图片描述

<特殊功能寄存器地址映象表(二)>

在这里插入图片描述

<特殊功能寄存器地址映象表(三)>

在这里插入图片描述

几个常用的SFR
1、ACC:累加器,常常用A表示。这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后我们将学到指令,能发现,所有的运算类指令都离不开它。
2、B:一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW:程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们能了解CPU的当前状态,并作出对应的处理。它的各位功能请看下表。

PSW也称为标志寄存器,了解这个对于了解单片机原理非常的重要,存放各有关标志。其结构和定义如下:

sfr各位的用途
(1)CY:进位标志。用于表示Acc.7有否向更高位进位。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。
例:78H+97H(01111000+10010111)
(2)AC:辅助进位标志也叫半进位标志。 用于表示Acc.3有否向Acc.4进位
例:57H+3AH(01010111+00111010)
(3)F0:用户标志位,由我们(编程人员)决定什么时候用,什么时候不用。
(4)RS1、RS0:工作寄存器组选择位。这个我们已知了。
RS1、RS0 = 00 —— 0区(00H~07H)
RS1、RS0 = 01 —— 1区(08H~0FH)
RS1、RS0 = 10 —— 2区(10H~17H)
RS1、RS0 = 11 —— 3区(18H~1FH)
(5)0V:溢出标志位。 表示Acc在有符号数算术运算中的溢出,什么是溢出我们稍后再谈吧。
(6)P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,不然为0。
例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL):数据指针,能用它来访问外部数据存储器中的任一单元,如果不用,也能作为通用寄存器来用,由我们自已决定如何使用。16位,由两个8位寄存器DPH、DPL组成。主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针。
5、P0、P1、P2、P3:这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
6、SP:堆栈指针。(专用于指出堆栈顶部数据的地址。)

【学习建议】其实并不需要把上面的这些东西都死记硬背在脑子里面,这是很难的,我们只需要理解工作原理,一次看不懂就要多看几次,等到要写程序的时候,我们再把这些表格拿出来查阅。

以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!

关于云创硬见
云创硬见是国内最具特色的电子工程师社区,融合了行业资讯、社群互动、培训学习、活动交流、设计与制造分包等服务,以开放式硬件创新技术交流和培训服务为核心,连接了超过30万工程师和产业链上下游企业,聚焦电子行业的科技创新,聚合最值得关注的产业链资源, 致力于为百万工程师和创新创业型企业打造一站式公共设计与制造服务平台。

2019-06-09 11:24:47 qq_38104331 阅读数 38
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3400 人正在学习 去看看 朱有鹏

程序计数器PC:用于存放下一条要执行的指令的地址,cpu要执行哪条指令,就把该地址所在单元的地址送到地址总线,之后PC会自动+1,指向下一个要执行的指令的地址.

堆栈指针SP:用来指示堆栈所处的位置一个存储地址的东西 ,可以理解为指针.堆栈主要用来保存现场,包括中断的返回和子程序的调用

ROM:程序存储器,存放指令的机器码 在51单片机中,有几个特殊的地址跳转到中断服务函数去的

RAM:数据存储器,存放运算的中间结果

R0-R8:通用寄存器,存储一些数据,可以类比一下高级语言中的变量,支持直接寻址与间接寻址,里面的值可以是值也可以是地址通过@符号去取地址里面的东西

关于中断:

每条指令结束之后,系统都会去检测中断请求信号,通过中断标志位去判断有没有请求

cpu一次只会响应一个中断,会根据优先级来决定是否打断当前中断,中断可以嵌套,

中断要主要保护现场.用堆栈指令将源程序中用到的寄存器(不是所有的寄存器)送入堆栈,中断执行完毕之后,要将堆栈中的数据还原. 

同级中断无法中断同级中断 

响应中断的时候,会清除掉相应的中断请求标志位.串口的标志RI与TI需要手动清除 在中断响应的时候,系统会保存PC,其他的则需要用户自行去保存.

 

几条跳转的指令:

ACALL 调用  先将PC+2 然后将PC存入堆栈 这样就将下一条要执行的指令存入了堆栈,然后再进行跳转 跳转到子程序去

RET:将之前存入堆栈的地址取出来,送回PC,程序继续运行

RETI:与上一个类似,但是会清除中断标记.

2016-09-19 21:33:08 WZJwzj123456 阅读数 439
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3400 人正在学习 去看看 朱有鹏
单片机中的RAM8个bit为一个单元,就是说每8位二进制数为一个存储单元,RAM共有256个这样的存储单元,前128个单元是一般的存储单元,后128个单元为特殊功能寄存器

每一个存储单元就像一个房子一样,而这个房子里面的房间就表示各自的具体的位地址
sfr P1 = 0x90;
P1=0xff;
其中0x90就是这个房子的所在位置,P1=0xff;就是在给这个房子的不同房间赋值
其中P1就是地址,0xff就是内容。

2014-11-22 20:38:36 spenghui 阅读数 623
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3400 人正在学习 去看看 朱有鹏

51基本组成如图。

CPU:中央处理器,内含程序计数器PC(Program Count)。开始执行程序时,PC获得第一条指令的地址,每取一条指令PC的值就自动指向下一条指令的地址。单片机复位后PC=0000H,从此处开始执行程序。

数据存储器(内部RAM):共256个RAM单元,前128个单元(00H~7FH)作为存储器使用,后128个单元被特殊功能寄存器占用。通常所说的内部数据存储器就是指前128个单元,简称内部RAM。

程序存储器(内部ROM):存储程序、原始数据、表格

特殊功能寄存器(SFR):特殊的RAM区,80H~FFH,管理片内各部件的控制寄存器和状态寄存器。

并行I/O:P0、P1、P2、P3

串行口:全双工

定时器:两个16位定时器,实现定时和计数,以其结果控制单片机

中断控制系统:5个中断源(外部中断2,定时/计数中断2,串行中断1)

振荡电路:内含振荡电路,外接石英晶体和微调电容即可构成51的时钟电路,系统最高晶振频率12MHz

2019-12-13 00:16:55 New_Joker 阅读数 29
  • 51单片机综合小项目-第2季第4部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第2季第4个课程,也是51单片机学完之后的一个综合小项目,该项目运用了开发板上大多数外设设备,并将之结合起来实现了一个时间、温度显示以及报警功能、时间调整功能等单片机控制常见的功能,有一定代码量,需要一定调试技巧和编程能力来完成,对大家是个很好的总结和锻炼,并且能拓展项目经验。

    3400 人正在学习 去看看 朱有鹏
今天,我在学习单片机。首先我学习了怎么看数据手册里面的寄存器。出现了一下问题
  1. sfr是什么:特殊功能寄存器
    sfr是定义一个8位的寄存器功能:定义特殊功能寄存器的位变量。
    sfr特殊功能寄存器 sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器。 sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器。

  2. sbit是什么:特殊功能寄存位
    sbit的用法有三种:
    第一种方法:sbit 位变量名=地址值。
    第二种方法:sbit 位变量名=SFR名称^变量位地址值。
    第三种方法:sbit 位变量名=SFR地址值^变量位地址值。

  3. 锁存器是什么:只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。典型的逻辑电路是D触发器。

  4. Direction register是什么:方向寄存器
    功能:控制数据流向。
    例如I0口的输入输出流向。

  5. 原理图的引脚定义。要注意原理图上面的引脚,理清每个I/O所接的线路(网络)。

    认识到一款全新的单片机ABOV(MC96F6432)的时候。我有很多不懂的地方。这时候我就需要看单片机数据手册。
    首先我需要知道怎么下载程序到单片机中,
    则第一步:我需要下载它的驱动程序和对应软件keil。还有配置。当然这些过程就是百度,问人。
    第二步:我遇到了一个难题,这款单片机的的配置文件(引脚寄存器之类的)我怎么写。当然,我去咨询了比较牛逼的人嘛,原来可以直接下载个code generator嘛,就可以给我生成代码了。好了,现在该有的都有了,是不是应该点亮一个LED灯了。
    第三步:我仔细看了原理图,然后写了简单的按键LED。然后居然它不亮!研究了许久,问题很多。第一重要的是我把芯片的引脚和编号搞错了,所以这个就亮不了。第二重要的是没设置好按键的上拉电阻和LED的上拉电阻,这个需要在code generator中配置好。第三重要的是在code generator设置按键的输入和LED的输出。这个很明显嘛。只要我们设置好了I/O口的输出方式才能用,当然I/O有很多的输入输出方式需要设置,这根据不同的要求进行设置。
    第三步嘛,就是连线,你需要有特定的下载线才可以,而且不能连错。这个单片机还有比较重要的点就是不能先通电!只能先连完线才能通电。断电的时候必须先断电源,再拔线。
    好了 今天就先到这把,每天进步一点点

单片机资料

阅读数 7

特殊功能寄存器SFR

阅读数 3202

没有更多推荐了,返回首页