❶ 单片机~按字节寻址按位寻址
当你位操作的时候它就按拉寻址,位寻址很灵活,用起来很方便,由其是当你在操作IO口时,比如说SETB P1.0,这时就是按位寻址,将P1.0设置为高电平1.
❷ 单片机里面的寄存器的字节地址是用来干什么的怎么用
首先,地址的作用只有一个,就是用来寻址。
其次,51单片机的的片内寄存器都是可以字节寻址的。
字节地址就是用来寻址一个字节的内容,和位地址相对应,位地址就只能寻址一个位(bit)。在单片机指令中寻址任何一个字节都需要字节地址,寻址任何一个位都需要位地址。所谓的IP、IE不过是我们给这个寄存器取了另外一个名字而已。如:MOV IP,#00H 和 MOV B8H,#00H 这两条语句是一样的效果。另外,从这些寄存器的使用上来说,IP、IE等特殊功能寄存器既可以字节寻址也可以位寻址,是同样的效果。比如:SETB PX0;和 MOV IP,#01H;是一样的,都是将IP的第0位即PX0置1。不同的是,字节寻址的时候是8位一起操作的,会对其它的位赋值,有时不想改变其它位的值,就用位寻址。
所以,字节地址是用来寻址字节的,位地址是用来寻址位的。就这样。另外,IP也好,IE也好,也都是寄存器,要访问它们也需要地址(访问字节用字节地址,访问位用位地址),不同的是它们用来对处理器进行配置,我们给它们取了一些特定的名字而已。
❸ 什么是单片机的字节
一般第一个字节是操作码,第二个字节是操作数。
该操作数直接参与操作,所以又称立即数,有“#”号表示。
立即数就是存放在程序存储器中的常数,换句话说就是操作数(
立即数)是包含在指令字节中的。
❹ 想问一下单片机中字节和地址的关系
你对这个示图可有印象??
而每一个地址对应一个内存单元,至于内存单元的数据宽度,通常有8位、16位、32位;
但是单片机的内存单元的数据宽度是8位;
当你采用P1、P2作为输出16位地址时,每一个地址就指向一个8位的内存单元;
另外,sfr P1 = 0x90;要知道P1口可是8位的,就已经包含了 P1.1、P1.2等的取值;
P1 = 0x90 = 1001 0000b,就是对应的位 P1.7=P1.4=1,其余的位 P1.1=P1.2=P1.3=P1.5=p1.6=0;
先说这些,不明白可追问;
❺ 单片机机 中怎样和哪几种字节位操作的方式,最好给点C语言代码并解释
1、ANSIC中,一般采用“读-修改-写”的方法实现单个位的位操作,通过与0“与”操作,将某一位清0。如使i变量的b0位为0,实现方法为i=i&0xfe。通过与1“或”操作,将某一位置1。如使i变量的b0位为1,实现方法为i=i|0x01。通过与1“异或”操作,将某一位取反。如使i变量的b0位取反,实现方法为i=i^0x01。
2 、通过位域的方法实现位操作
标准C提供了一种基于结构体的数据结构--位域(BitField),位域就是把一个存储单元中的二进制划分为几个不同的区域。并说明每个区域的位数。每一个域有一个域名,允许在程序中按域名进行操作,位域的定义格式如下:
struct 位域结构名{
位域列表 };
位域列表格式为:类型说明符 位域名:位域长度如:
struct k{
unsigned int a:1
unsigned int :2
unsigned int b:3
unsigned int :0 //空域
}k1;
说明:
1)各位依次从低位到高位排列,排满一个存储单元,按地址接着排下一单元;
2)位域可以无域名,但不能被引用,如第二域,这时其只用来填充或调整位置;
3)第四行称空域,目的是将目前存储单元的剩余部分分为一个域,且填充0。
位域的引用很简单,如:
k1.a=1; //置k1的b0位为1
k1.b=7; //将k1的b3-5位置111
通过位域定义位变量,是实现单个位位操作的重要途径和方法,采用位域定义位变量,产生的代码紧凑、高效。
❻ 在单片机中多于三个字节的移位操作如何进行
在汇编程序中用C来帮忙。比如R0指向最低字节
MOV A,@R0
CLR C
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
;以上为左移一位,如果民循环左移,下面再把C中的内容与刚才的最低字节的最低位或。
❼ 单片机中什么样的字节地址可以进行位操作
MCS-51单片机中是这样的:片内RAM: 20H~2FH 共16字节可位寻址(从00H到7FH共128位)以下特殊功能寄存器可位寻址: Acc B PSW IP IE SCON TCON P3 P2 P1 P0
❽ 单片机中位寻址和字节寻址的区别
一、作用不同:
字节寻址:把数据直接写入当前地址,或者把当前地址的内容读出。
位寻址是位操作命令,写入和读出的是一个位bit变量。
二、传递不同:
MOV A,00H和MOV C,00H,前者是将RAM中地址为00H的8位内容传递给A,后者是将位寻址区(20H-2FH)中的地址为00H的1位内容传递给C。这两个00H不是在同一个地址。
三、命令不同:
地址本身是8位二进制,但区别是前面的命令。如果命令是字节寻址,则这个字节就是字节地址,相应地如果命令是位寻址则这个字节就是位地址。
(8)单片机字节操作扩展阅读:
对字节地址中的位地址进行寻址的寻址方式称为位寻址。
采用位寻址方式的指令,其操作数是8位二进制数中的某一位,在指令中要给出的是内部RAM单元中的某一位,即位地址,其在指令中用bit表示。
8051单片机内部有1个可位寻址区,地址为20H~2FH,共16个单元。其中每个单元中的每一位都可单独作为操作数,共128位。如果SFR的地址值能被8整除,则该SFR也可以进行位寻址。可位寻址的SFR有ACC,B,PSW,P0,P1,P2,P3,IP,IE,TCON,SCON。
❾ 单片机单元,字节,位
一个字节是8个二进制位
89C51是8位单片机,因此绝大多数存储单元都是单字节(也就是8位),但也有16位的,比如程序计数器PC和数据指针DPTR(其实DPTR是由DPL和DPH两个单字节组成,可以单独操作,比如mov
dpl,#80h,也可以以16位直接操作,比如inc
dptr和mov
dptr,#3000h,而PC是16位的,且不能用mov等指令操作,因为它不能被寻址)
51的内RAM分为寄存器区(00H-1FH)、位寻址区(20H-2FH)、用户区(30H-7FH)以及SFR区(特殊寄存器区,ACC、psw、tmod、sp等特殊寄存器就在这里),它们全者是8位的
关于位,没有单独存在的位,任何一个位都存在于某个字节中
每个字节和位都有自己的地址,关于地址就不多说了,因为你没问
❿ 在8051单片机中,如果对地址90H字节操作相当于操作哪个IO
在8051单片机中,如果对地址90H字节操作相当于操作P1口。