P0一共有8个IO口,而一个字节刚好是8个位,因此可以将你写入的字节和这8个IO对应上。0xF0化为二进制是:11110000 因此,P0.7~P0.0依次是:11110000
P2&=0X0F;就是 P2=P2&0X0F;就是将高4位清空;P2|=(1<<4+c); 等效于:P2=P2|((1<<(4+c));就是将P2的第4+c位 赋值1;
P3=P3|0x0f ;你这个冒号是中文的,编译都不能过 k=P3; k=k|0x0f; P3=k;你这个冒号是英文的,对的 要看你P3口接什么有关系??
^是按位异或的意思。P1 = 0x0f; 意思是把0x0F的值赋给P1 Tmp = P1 ^ 0x0f; P1异或0x0F的值为0,那TMP=0 Tmp = P1 >> 4 ^ 0x0f 右移优先级比异或高,所以P1右移后结果为0,再异或0x0F后结果为0x0f,所以最后TMP结果为0x0F。
地址范围 0x0000~0xFFF,即0000d ~4095d, 共有4096d个字节 d是十进制数后缀
由于发光二极管负极接了 反相器,所以P1.4=0 即为低电平,经反相器后变成高电平,则发光二极管两端都是高,所以是灭的。中断里面语句如下。P1=0x0f; 表示P1.0-P1.3都为高 P1<<=4;左移四位后,P1=0XF0. 也就是 P1.4-P1.7全是高电平。则此时灯是全亮的。~P1;取反 ,则灯又...
最后来看PSW内的内容,首先要了解PSW内每个位都代表什么,最高位CY代表进位,只要最高位有进位,CY就会置为1,AC位半进位,我们用的是8位单片机,我们的ACC是两个四位的加法器构成的,所以AC就是低四位的最高位向高四位的最低位进位的标志,我们知道0x0f+0xf8,F+8显然超过最大数了,要向高四...
0x0f化成二进制是 0000 1111 另一个二进制数xxxx xxxx和它相“与” 则高4位全为0 低4位不变,即(xxxx xxxx)&(0000 1111 )=0000 xxxx 另外,/2相当于把这个二进制数向右移1 位(高位补0)/4相当于把这个二进制数向右移2 位 /16相当于把这个二进制数向右移4 位,原来的高4位就...
1]=(dds>>8)&0xFF 就是对数组ww里的第二个元素(数组下标最低为0),进行赋值,赋的值是将dds这个变量的值向右移8位,然后与0xFF相与(假如dds右移8位后的值为10101010,那么与0xFF(11111111)相与后得到的值就是10101010,前面说过,&就是做相乘的动作,所以1*0=0,1*1则等于1)这样你理解了吗?
程序中,P1M0和P1M1都赋的值是0x00,说明你的P1的八个口都工作在00b这个工作模式下,也就是“准双向口”。程序中对于P3口的工作方式设定,P3M0 = oxoo, P3M1 = 0x0f,说明,P3口的工作方式是 底四位(P3.0,P3.1,P3.2,P3.3):为01b,即,推挽输出;高四位(P3.4,P3.5,P3...