void hc595_shift_16(uint16 val16)
{
uint8 i=0;
uint16 temp16=val16;
for(i=0;i<16;i++)
{
//最高位移出,0b1000,0000,0000,0000 SDO
if(temp16 & 0x8000) gpio_bit_set(GPIOA,GPIO_PIN_11);
else gpio_bit_reset(GPIOA,GPIO_PIN_11);
//shift clk active SCK
gpio_bit_reset(GPIOA,GPIO_PIN_8);
gpio_bit_set(GPIOA,GPIO_PIN_8);
//next
temp16<<=1;
}
} |