我只学过80c51所以这里我只讲一下我所知道它的吧:
进行位 *** 作的时候,以进位作为位慎辩累加器,位 *** 作指令中的位地址有四种表示形式:
1、直接地址方式(如0D5H);
2、点 *** 宽态缺作符方式(如0D
0H.5;PSW.5等);
3、位名称方式(如F0);
4、伪指令定义方式(如MYFLAG
BIT
F0)。
而它进行位寻址的字节地址是有范围的:
是字节地址在20H到2FH内的都可以进行位寻址。另外部分的特殊功能寄存器也可以进行位寻址。
而你所说的位地址和你的字节地址相同的情况那完全不用考虑的,因为他们的寻址闭孙方式不同:一个是位寻址而另外一个是字节寻址。
51单片机汇编语言编程,只有16进制地址尾数为0和8的寄存器可以位寻尘前址。你要芦逗置某寄存器的某位,但SETB 0X10.1 编译不过就太正常了,因为51汇编中16进制用xxxxH书写才合法,你这个写法当然通不过。另外,也不能这样 *** 作你期望的位,因为可以位寻址寄存器的位有自己的位地址,这也是只有16进制地址尾数为0和8的寄存器可以位寻址的原因,多了排不开地址。寻址规则就是,16进制地址尾数为0和8的寄存器的可寻址位地址,就是从其本身地址开始的8个地址,对应其8个派哗清位。你要寻址10H这个寄存器(实际上没有,51寄存器地址从80H开始,这里是打比方让你明白)的各个位,可以这样:
SETB 10H10H.0
SETB 11H10H.1
以此类推。
51系列单片机具有的位 *** 作空间?你问的是位地址吧?51系列单片芹敏粗机的位 *** 作的位地址范围是00H~FFH,共256个位。
其中的00H~7FH,共128个位,是在内部RAM的16个单嫌镇元中,单元地址是20H~2FH。
而80H~FFH,拿搜是在特殊功能寄存器中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)