Bootstrap

74HC165 并口输入转串口输入

void KeyInit(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA);

	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin =_74HC165D_DAT_PIN ;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;	//复用推挽输出
    GPIO_Init(_74HC165D_DAT_GPIO, &GPIO_InitStructure);			//
	
	GPIO_InitStructure.GPIO_Pin =_74HC165D_CLK_PIN ;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//复用推挽输出
    GPIO_Init(_74HC165D_CLK_GPOI, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin =_74HC165D_LD_PIN ;
	GPIO_Init(_74HC165D_LD_GPIO, &GPIO_InitStructure);
	_74HC165D_LD_H;
    _74HC165D_CLK_L;
}


unsigned char ReadKey(void)
{
	_74HC165D_LD_H;
    _74HC165D_CLK_L;
	
	unsigned char dat = 0x00;
	_74HC165D_LD_L;

	delay_us(2);	
	_74HC165D_LD_H;
	
	
	
	if(PAin(0))
	{
		dat|=0x01;
	}
	
	for(unsigned char i = 0 ; i<7; i++)
	{
		dat<<=1;
		_74HC165D_CLK_L;
		_74HC165D_CLK_H;
		delay_us(2);
		dat |= (PAin(0))?1:0;

	}
	_74HC165D_CLK_L;
	return dat;
}

;