Keil中字节给位赋值与位给字节赋值

来源:百度文库 编辑:神马文学网 时间:2024/03/29 21:27:58
在keil c51 程序中我看到了这样的赋值,sbit MISO = P1^0;uchar i;MISO = i & 0x80; 字节给位赋值,比较迷惑,所以做了个实验,供大家参看。#include sbit MISO = P1^0;
unsigned char c;
unsigned char i;
int main()
 {
c = 0xaa;
 MISO = 0x80 & 0xff;                     // 字节的每一位一次是1,看位MISO的变化
  MISO = 0x40 & 0xff;
   MISO = 0x20 & 0xff;
    MISO = 0x10 & 0xff;
  MISO = 0x08 & 0xff;
   MISO = 0x04 & 0xff;
    MISO = 0x02 & 0xff;
     MISO = 0x01 & 0xff;
   MISO = 0x00 & 0xff;
  MISO = 0x00 & 0xff;
  MISO = 1;
i = 0x80 | MISO;                                 // 每一位一次是1的字节,与位MISO 位或,结果只作用最低位;其                                                           //他位无影响
i = 0x40 | MISO;MISO = 0;                                            //若位MISO 为0,则字节  i 为 0;
i = 0x20  & MISO;
i = 0x10 &  MISO;
i = 0x08 | MISO;                              
i = 0x04 | MISO;
i = 0x02 | MISO;
i = 0x01 | MISO;
i = 0x00 | MISO;
for(i=0;i<8;i++) {
MISO =c&0x80;
c<<=1;
} }                                           //做完实验后,我得出结论,1、字节给位赋值,只要字节中有一位是1,                                               // 则位MISO 位1;2、位与字节A做位或运算,赋值给字节B,则位MISO           // 则只作用于字节A的最低位;3、位与字节A做位与运算,若为MISO为0,则                                           //字节B为0;