它的原本是这样写的P0=~(1<<j++); 昨天写漏了。
我觉得它的意思是P0=~(0X01<<j++);
我觉得它是说先赋值P0=00000001,最初j=0,即左移0位。。然后按位取反11111110
希望这位大哥给予意见,谢谢
其实'>'运算符正确格式是这样的:j>>1或j>3表示j右移3位。也许1第三四版都可以 谭浩强 著 清华大学出版社,希望对你有帮助。
P1=~(0x80>>j++)在单片机的c语言里是表示什么意思啊
把十六进制数0x80右移j位后按位取反,再将结果赋给变量p1,最后给j增1。其中>>右移操作符,~是按位取反操作符,++是自增1操作符(由于是所谓后++,所以要在整个运算结束后才生效)。比如当前j=2,则10000000>>2→00100000;~00100000→11011111。结果p1=11011111。然后再执行j++使j增1为3。
P2=~(1<<i); 它出现在51单片机点阵程序中,它是什么意思,有什么作用啊...
(1<<i)就是每次把 1 左移 i 位,即在八位数中,有一个1。取反后,就是在八位数中,有一个0。输出到P2,即可使每一行(或列)发光。delay();,代表本行的发光时间。
80C51单片机怎么用按键选择两个不同的程序?
1. 首先,您需要连接一个按键到80C51单片机的输入引脚上。假设按键连接到P1口的某个引脚(例如P1.0)。2. 设置P1口的引脚为输入模式,以接收按键的状态。您可以使用P1口的寄存器(例如P1CON)来设置引脚的工作模式。3. 在主程序中,使用一个循环来读取按键的状态。您可以使用P1口的寄存器(例如P1)...
求:用单片机C语言编一位数码管的数字显示 要求可以从0变化到9
P0=led(dat);\/\/显示dat变量,这里只能显示数字0~9;} }
单片机单支数码管循环显示字母A到Z?
P0 = alphabet[i]; \/\/ 设置数码管显示的字母 delay(500); \/\/ 延时500ms i++; \/\/ 切换下一个字母 if (i == 26) { i = 0; \/\/ 当索引达到字母表末尾时,重新从头开始 } } } 以上代码使用了51单片机的寄存器定义头文件reg51.h,并通过P0口控制数码管的引脚,循环显示字母A到Z。通过...
"P2=(P2<<1)+1"单片机初学着这句什么意思
这个其实很简单,因为c语言左移右移都是补零的,如果你现在你P2上面链接的是共阴极的二极管,那么你需要给高电平才会亮,不如现在 P2=0x01---0000 0001 :+++++第一个二极管亮 左移一次 P2=0x02---0000 0010 ;++++ 此时第二个二极管亮 +1之后 P2=0x03---0000 0011 ;也就...
单片机:if((keyboard&(1<<j))==0)
如果keyboard从右往左数,第j位等于0的话,就执行if语句中的程序
89c51单片机的数字钟程序?
j=0; } delayms(40); } if(up_s==0) delayms(40); if(up_s==0) { k++; if(k==23) { k=0; } delayms(40); }}void init_smg(){ P2=2; P0=0x40; delay(5); P2=5; P0=0x40; delay(5);}main(){ i=0; init(); while(1) { init_smg(); P2=2; P0=0x40; P2=5; P0...
求深度解析单片机C语言中的下列程序(部分),我实在看不懂。能不能帮我...
for(j=0;j<3;j++)\/\/灯一盏盏从上往下亮 { for(x=0;x<8;x++)控制第几个灯亮的;{ P1>>=1;右移一位第一灯亮了,依次亮 delayxms(500);每个灯亮的时间,延迟函数 if(P1==0x00)如果第八个灯亮了 后;就要重新赋予P1口的值;{ P1=0xff;P1口从新赋值;for(x=0;x<8;x++)...
...如for(i=0;i<1200;i++) for(j=0;j<1200;j++) 延时为多少?
这个要计算的一般都不准的,最好用示波器测一下。赋值一个端口=1 for(i=0;i<t;i++)for(j=0;j<k;j++);赋值一个端口=0 用示波器看高\/低电平的时间就是延时的时间了。如果是at89c51单片机,11.0592的晶振。for(i=0;i<t;i++)for(j=0;j<130;j++);t是多少就是多少ms。不过误差是不...