楼主: wb61850

从零开始学电子之基础篇

[复制链接]
 楼主| 发表于 2010-6-8 02:28:32 | 显示全部楼层
在进入指令系统的学习之前,我先说说自己对于学习单片机的体会。
一个字就是“苦”。
如果大家吃不了苦,我劝大家选择“C语言”。

在此呢,仿黄埔对联,自编对子一幅:

:想升官发财请往别处,
:思投机取巧勿入此门。
:汇编者来


呵呵,
 楼主| 发表于 2010-6-8 02:37:09 | 显示全部楼层
OK,关于指令的“寻址方式”,我们将穿插在各个指令中进行介绍,就不单独介绍了。
 楼主| 发表于 2010-6-8 02:38:48 | 显示全部楼层
大家好!
这里是“850xx”!
欢迎大家一起学习、一起进步!
 楼主| 发表于 2010-6-8 02:41:53 | 显示全部楼层
这里没有老师,大家都是学生。或者反过来说,这里没有学生,大家都是老师。
总而言之,大家都是平等的。
不是谁教谁学什么,而是一起学习、一起进步!
 楼主| 发表于 2010-6-8 02:54:24 | 显示全部楼层


呵呵,我们就从“累加器A到工作寄存器Rn的数据传送指令开始吧”。
 楼主| 发表于 2010-6-8 03:03:30 | 显示全部楼层
我们先介绍一下,什么是“寻址方式”。
大家知道,指令是由操作码和操作数两个部分组成的。那么简单的理解呢,所谓的寻址方式就是获得操作数的方式或方法。
 楼主| 发表于 2010-6-8 03:20:11 | 显示全部楼层
我们先来介绍一下“累加器ACC或A”。
ACC(或A)是一个八位的寄存器,它是单片机中最繁忙的寄存器。也可以是说累加器A(或ACC)是算术/逻辑运算处理中心(ALU)的重要通道之一,由此可见其重要性。
在指令系统中,累加器在一般情况下,用助记符A表示。在直接寻址时用助记符ACC表示(例如入栈时:push acc)。
 楼主| 发表于 2010-6-8 04:31:30 | 显示全部楼层


这是寄存器的小贴士,呵呵。对于一些比较重要的寄存器,这种贴士对增强理解和记忆还是有一定的帮助的。
在这里解释一下“SFR区”。所谓的SFR区即特殊功能寄存器区。
大家知道,51单片机的内部数据存储器RAM分为两个区域:通用寄存器区和特殊功能寄存器区。
“寄存器区”当然是由若干寄存器构成的集合了,呵呵。
片内通用寄存器区,我们一般用IRAM来表示。当然它里面包含若干通用寄存器了,呵呵。
特殊功能寄存器区,我们一般用SFR表示。当然它里面包含若干特殊功能寄存器(或专用寄存器)了,呵呵。
 楼主| 发表于 2010-6-8 04:47:46 | 显示全部楼层
呵呵,那么“Rn”呢?Rn是啥? 在那里?

先简单说明一下:“Rn”称为工作寄存器,其实它含有8个寄存器(R0~R7)。这里的下标n就是指工作寄存器的编号。
Rn位于IRAM区,其地址是从00h~1fh。大家可能会问了:“不是只有8个工作寄存器吗,怎么会有32个寄存器地址呢?”
呵呵,问的好。
这是因为在51单片机中,工作寄存器是分为4组的。每组8个寄存器,所以一共就有32寄存器的地址了,呵呵。
但是,究竟是哪一组工作寄存器参与现时的工作,则取决于特殊功能寄存器psw中的rs0、rs1两位的状态。下面我们还要介绍,呵呵。
 楼主| 发表于 2010-6-8 04:52:53 | 显示全部楼层
“灿烂星空,谁是真心英雄?”
“平凡的人给我最多感动!”

“不经历风雨,怎么见彩虹?”
“没有人能随随便便成功!”

“把握生命里的每一分钟,全力以赴我们心中的梦!”

http://www.f130.com/songys2088/6645/85739.htm
 楼主| 发表于 2010-6-8 05:10:00 | 显示全部楼层
大家可以参阅一下497楼~503楼的内容。
特别是630楼和632楼的内容。
那里面是有关IRAM及Rn的内容,呵呵。

下面我们要介绍一个重要的特殊功能寄存器——“psw”。
“psw”又称为“程序状态字”,是一个八位的特殊功能寄存器。
 楼主| 发表于 2010-6-8 05:25:06 | 显示全部楼层
今天就到这里,祝大家愉快,呵呵
发表于 2010-6-8 08:50:23 | 显示全部楼层
基础好,才是真道理
 楼主| 发表于 2010-6-8 15:25:24 | 显示全部楼层
LS高见,赞同

比方说:“oifbsavwioepogaoshdyeasbqwyxxvb fnklgsuisuqbxsfaa ”请问是什么呢?

大家会说:“啥也不是啊!”

哈哈,没错。的确啥也不是,是俺随机输入的撒

所以,大家在论述一个问题的时候,自己一定要知道这个问题是怎样的。呵呵
 楼主| 发表于 2010-6-8 15:30:17 | 显示全部楼层
OK,我们要抓紧盖楼,呵呵。
这是为什么呢?
因为有很多电饭锅等着俺修理啊,哈哈
 楼主| 发表于 2010-6-8 15:35:25 | 显示全部楼层

 楼主| 发表于 2010-6-8 15:38:52 | 显示全部楼层
        程序状态字PSW

        当单片机进行各种算术或逻辑运算时,为反映运行结果的状态,将相应的标志位置位或复位。这些标志位的状态,可以用专用的指令来测试,也可以通过指令来读出。为程序的流程提供方向和依据。

        P:奇偶标志位。
        该位始终跟踪累加器A中二进制数据的奇偶性,如果A中有奇数个“1”,则将P置位(=1);当A有偶数个“1”时,则将P复位(=0)。

        F1:用户标志位。由用户置位或复位

        OV:溢出标志位。
        有符号数运算时,如果发生溢出,则OV置位(=1);无溢出时,OV复位(=0)。
        对于1B的有符号数,如果用最高位表示正、负号,则只有7位有效位,能表示-128~+127之间的数。如果运算超出了该范围,就会发生溢出,此时,OV置位(=1);如果运算没有溢出,则OV复位(=0)。
        在乘法运算中,OV=1(置位)表示乘积超过255,即乘法溢出;在除法运算中,OV=1表示除数为0。

        RS0、RS1:工作寄存器组选择位
        此二位用来选择当前的工作寄存器组。可以由用户编程,来切换当前的工作寄存器组。
        单片机复位后,默认当前的工作寄存器组为第0组(寄存器的地址为00h~07h)。
        在实际应用中,可以根据需要来改变此二位的状态,进而选择当前的工作寄存器组。这样的设置为程序中快速保护现场提供了方便。

        F0:用户标志位。由用户置位或复位。

        AC:半进位标志。当进行加法(减法)运算时,如果低半字节(d3位)向高半字节(d4位)有进位或借位,则AC置位(=1);否则AC复位(=0)。
AC也可以用于BCD码调整时的判别位。

        CY(C):进位标志/位累加器。
        在进行加法/减法运算时,如果结果的最高位(d7)有进位,则CY置位(=1);否则CY复位(=0)。
        在进行位操作时,CY是位操作累加器“C”,是位操作处理中心。

         ————主要参考书目《单片机应用系统设计技术》  张齐 杜群贵 编著
 楼主| 发表于 2010-6-8 15:47:59 | 显示全部楼层

 楼主| 发表于 2010-6-9 03:19:52 | 显示全部楼层
明月几时有,把酒问青天……

我欲乘风归去,就怕天上太寒。唉……
 楼主| 发表于 2010-6-9 03:58:21 | 显示全部楼层
大家好,我们继续学习哦。
鄙人的学习方法带有一定的随机性,经常是想起什么就学什么,呵呵。
不过,总的来说是在不断地前进的。呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表