中科因仑“3+1”工程特种兵精英论坛

标题: 单片机所做的大部分工作 [打印本页]

作者: 张衍波    时间: 2015-10-15 08:06
标题: 单片机所做的大部分工作

继续  
单片机的大部分指令,或者说单片机所做的大部分工作,多数在写入或读出寄存器。关于寄存器的初步概念我想我们已经建立起来了,它是一个能够存储8位二进制数据(最大255 =  0FFH) 的单元 每个单元都有它的编号,我们叫做它的地址,或地址编码. 地址编码也是十六进制的.  另外寄存器里的数据掉电就会丢失。

寄存器的英文是RAM  也要记住.

PIC12CE519 里面共有有48个寄存器供我们操作使用,  它们每一个都有固定的地址编码。
地址编码并不是连续的号码,而是分成了两段:

第一段:  从00H 开始, 依次是01H, 02H, 03H ....0AH, 0BH......到1FH 结束.  计32个寄存器
第二段:  从30H 开始, 依次是31H, 32H, ......................到3FH 结束   计16个寄存器

这种地址不连续编号, 而是要跳过去一段的做法, 对于我们新手来说很是不习惯. 为了让我们容易入门, 我们暂时先不管第二段RAM, 只当它不存在, 所有程序我们只涉及到第一段连续的ram 地址. 等我们熟练的掌握好了ram 的使用,再涉及第二段地址的RAM, 那时,你就会理解单片机设计者把它们分成两段的苦心了.

为了规范,我们今后一律把RAM的分段, 叫做分页. 第一地址段叫00页面, 第二地址段叫01页面.

例如: 我们学过的 I/O 口电平控制寄存器 GPIO, 它的地址编码是 06H, 属于00页面.
'-----------------
所有这32+16=48个寄存器除了在地址上分成了两个页面以外,又把它们分成两类:

一类专用寄存器,一类通用寄存器.

所谓专用,就是这个寄存器的功能已经由系统分配好了.例如 地址为06H 的名称就做GPIO寄存器的功能,是它的每个位,都对应到一个I/O脚的电平.
另一类 是通用寄存器,你可以理解成它的功能系统没有事先预定,而是由你在编程序的时候随机使用.

pic12ce519 的专用寄存器有 7 个, 位置在我们第00叶面的最前面. 这7个专用寄存器的地址编码是: 00H,01H, 02H, ----06 H

剩下的所有寄存器包括所有第01页面, 全部都是通用寄存器.

例子: 在两个通用寄存器 09H, 0AH 内, 写入常数 FC H

    movlw     0FCH    '常数进W
    movwf     9H      '复制W内的数到通用寄存器09H
    movwf     0AH     '复制W内的数到通用寄存器0AH  由于此时W内并没有改变,W不用再进常数.
'----------------------------------------------

下面是PIC12CE519的 寄存器ram的地址地图:

图最上端的  00   01  表示的是页面号码,或叫页面地址。
左侧 从00  --- 1FH 是00页面, 右侧是01页面。

从00H 到 06H 都已经起好了名称 ,它们是专用寄存器,用处各有不同。以后我们会逐个介绍它们
剩下的都是通用寄存器 或者叫普通寄存器 General Purpose Registers  意思是一般用途的寄存器

地址从20H 到 2FH  也不是“空洞”,也不是不能访问,只是读写它们的时候等于读写它们左侧对应的00页面。这一点我们可能有些迷惑,弄不明白也没有关系,以后随着程序理解的深入,会搞清楚的。

内存图谱,不要求记下来,但是应该有个大体印象,用的时候会察看就可以了。等编程时间一长

就那么几个字节,自然就记住了。

所谓字节是衡量二进制数据长度的一个单位。一个寄存器刚好能记住一个字节的数据。如果你要存储的数

据比较大超过了255,那就要占2个存储器甚至更多。描述的时候通常我们不说这个数值占了多少个寄存器

,而是说这个数据是几个字节的。

字节的英文是byte  一个二进制数的一位,叫比特 英文bit    1 byte 包含 8 bit转载






欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4