Phần cứng :
#define DATA_74HC165 PINA.0 // chan nhan du lieu noi tiep
#define LOAD_74HC165 PORTA.2 // pin load data
#define CLK_74HC165 PORTA.1 // pin clock
#define LOAD1_74HC165 PORTA.3 // pin load data
#define CLK1_74HC165 PORTA.4 // pin clock
#define OPEN_74HC165 PINC.0 // chan nhan du lieu noi tiep
unsigned char Read_74HC165(void)
{
unsigned char i,data;
// LOAD_74HC165 = 0; // load data
// LOAD_74HC165 = 1;
data = 0;
for( i=0;i<8;i++ )
{
data = data << 1;
if( DATA_74HC165 == 1)
{
data |= 0x01 ;
};
CLK_74HC165 = 1; //clock
CLK_74HC165 = 0;
};
return(data);
}
unsigned char OPNEN_74HC165(void)
{
unsigned char i,data;
LOAD1_74HC165 = 0; // load data
LOAD1_74HC165 = 1;
data = 0;
for( i=0;i<8;i++ )
{
data = data << 1;
if(OPEN_74HC165 == 1)
{
data |= 0x01 ;
};
CLK1_74HC165 = 1; //clock
CLK1_74HC165 = 0;
};
return(data);
}
unsigned char byte_2=0,byte_1=0;
unsigned char byte_3=0,byte_4=0;
void read_74165(void)
{
byte_4 = Read_74HC165(); // Doc U5
byte_3 = Read_74HC165(); // Doc U4
byte_2 = Read_74HC165(); // Doc U3
byte_1 = Read_74HC165(); // doc U1
LOAD_74HC165 = 0; // load data
LOAD_74HC165 = 1;
}
Trong hàm Main.c
while(1)
{
read_74165();
byte=OPNEN_74HC165();
//byte= Read_74HC165() ;
printf("SPI:_CH1:%d_CH2:%d_CH3:%d_CH4:%d_CH4:%d\n\r",byte_1,byte_2,byte_3,byte_4,byte);
}