为什么要设置 “位寻址” 例如在控制一个灯得亮与灭也就是( 0 与 1 )只需一位就可以用表示了0表示低电平1表示高电平。 例如P0口的字节地址为80H ,P0口第一位的位地址P0.1为81H,一个字节地址里包括有八位二进制地址,相当于(字节地址安徽省·位地址合肥市)。如果把一个灯接在P0口的第一位及P0.1(位地址81H)这时只要用位寻址SETB 81H 和CLR 81H。就可以实现了,所以不需要字节寻址因为字节寻址有八位,现在用不上8位,一位就可以了。至于81H到底是字节地址还是位地址在不同地指令CPU会自动区分的。指令写出来你一看就知道了。
位寻址就是说可以对每一位进行操作。比如P1口,它共有8位,可以同时操作,如P1=0XFF;相当于P1口输出全是1,但是如果我想只让P1口的最低位输出为1,则可以如下操作:sbit P1^0=1;
希望对你有所帮助!
比如:uchar bdata mouse_byte; //接收字节 bdata-->可寻址的片内RAM
sbit mouse_byte_bit0=mouse_byte^0;//mouse_byte第0位
sbit mouse_byte_bit1=mouse_byte^1;//mouse_byte第1位
sbit mouse_byte_bit2=mouse_byte^2;//mouse_byte第2位
sbit mouse_byte_bit3=mouse_byte^3;//mouse_byte第3位
sbit mouse_byte_bit4=mouse_byte^4;//mouse_byte第4位
sbit mouse_byte_bit5=mouse_byte^5;//mouse_byte第5位
sbit mouse_byte_bit6=mouse_byte^6;//mouse_byte第6位
sbit mouse_byte_bit7=mouse_byte^7;//mouse_byte第7位
就是bdata可以一位一位的寻址,读取