在keil c51 程序中我看到了这样的赋值,
sbit MISO = P1^0;
uchar i;
MISO = i & 0x80;
字节给位赋值,比较迷惑,所以做了个实验,供大家参看。
#include <reg52.h>
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;
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。