基于80C51单片机位寻址编程

80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。

位寻址的范围,也就是哪些部份可以进行位寻址:

1、我们在学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。

这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。这个问题我们在后面的指令系统学习中再加以论述。

2、对专用寄存器位寻址。这里要说明一下,不是所有的专用寄存器都可以位寻址的。具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。

基于80C51单片机位寻址编程

专用寄存器的位寻址表示方法:

下面我们以程序状态字PSW来进行说明

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

P

1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5H
MOV C,D5H

2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示

MOV C,F0

3、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5

MOV C,D0H.5

4、专用寄存器符号加位表示:例如PSW.5

MOV C,PSW.5

这四种方法实现的功能都是相同的,只是表述的方式不同而已。

  • 基于80C51单片机位寻址编程已关闭评论
    A+
发布日期:2019年07月14日  所属分类:参考设计