void BrushOut(uchar nDots,uchar Rdt, uchar Gdt, uchar Bdt) //nDots为灯个数,Rdt为红;Gdt为绿;Bdt兰.
{
uchar i,j,mask;
SCLK = 0;
SDO = 0;
for(i=0;i<32;i++)
{
SCLK=1;_nop_();
SCLK=0;
} //送起始32bits 0起始帧
for(i=0;i<nDots;i++) //输出1个 1起始位
{
SDO=1;
SCLK=1;_nop_();
SCLK=0;_nop_(); //送起始位'1'
mask = 0x10; //输出5位红色
for(j=0;j<5;j++)
{
if((mask&Rdt)!=0) SDO = 1;
else SDO = 0;
SCLK=1;_nop_();
SCLK=0;_nop_();
mask>>=1;
}
mask = 0x10; //输出5位绿色
for(j=0;j<5;j++)
{
if((mask&Gdt)!=0) SDO = 1;
else SDO = 0;
SCLK=1;_nop_();
SCLK=0;_nop_();
mask>>=1;
}
mask = 0x10; //输出5位蓝色
for(j=0;j<5;j++)
{
if((mask&Bdt)!=0) SDO = 1;
else SDO = 0;
SCLK=1;_nop_();
SCLK=0;_nop_();
mask>>=1;
}
}
请问在这段程序里 if((mask&Bdt)!=0) SDO = 1;
else SDO = 0;
SCLK=1;_nop_();
SCLK=0;_nop_();
mask>>=1;
这段语句是什么意思??比如我给Bdt赋得值是31 那么00010000与00011111的结果
是00010000 (16)不等于0,那么SDO = 1;
如果等于零SCLK=1;_nop_();
SCLK=0;_nop_();
mask>>=1; 右移一位是什么意思?????
这一段话的意思是什么?