单片机的大部分指令,或者说单片机所做的大部分工作,多数在写入或读出寄存器。关于寄存器的初步概念我想我们已经建立起来了,它是一个能够存储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, ----06H,剩下的所有寄存器包括所有第01页面,全部都是通用寄存器.
例子:在两个通用寄存器09H、0AH内写入常数FCH
movlw 0FCH '常数进W
movwf 9H '复制W内的数到通用寄存器09H
movwf 0AH '复制W内的数到通用寄存器0AH,由于此时W内并没有改变,W不用再进常数.
从00H到06H都已经起好了名称,它们是专用寄存器,用处各有不同。以后我们会逐个介绍它们.剩下的都是通用寄存器或者叫普通寄存器(General Purpose Registers),意思是一般用途的寄存器。
内存图谱,不要求记下来,但是应该有个大体印象,用的时候会察看就可以了。等编程时间一长,就那么几个字节,自然就记住了。
所谓字节是衡量二进制数据长度的一个单位。一个寄存器刚好能记住一个字节的数据。如果你要存储的数据比较大超过了255,那就要占2个存储器甚至更多。描述的时候通常我们不说这个数值占了多少个寄存器
,而是说这个数据是几个字节的。
字节的英文是byte,一个二进制数的一位,叫比特,英文bit。1byte包含8bit。