C51语法求解
tmp = (led_7219_addr[i-1]<<8) | led_7219_data[i-1];
求大牛给我解释下这句语句;
整体程序段:void out_led(void)
{
uchar i,j;
uint tmp;
LOAD = 0;
CLK = 0;
_nop_();
for(i=2; i>=1; i--) //送每块7219某一LED的数据,先送最后一块
{
tmp = (led_7219_addr[i-1]<<8) | led_7219_data[i-1];
for(j=0; j<16; j++)
{
if((tmp & 0x8000) == 0x8000)
DIN = 1;
else
DIN = 0;
_nop_();
CLK = 1;
_nop_();
CLK = 0;
tmp <<= 1;
}
_nop_();
}
LOAD = 1;
}
[解决办法]
这???????????
不就是一个变量左移8位和另一个变量或一下(加也可以),组成一个16位数存在一个变量中么。
与下面结果是一样的
tmp = (led_7219_addr[i-1]*256) + led_7219_data[i-1];