驱动程序
sbit LED_DATA = P1^4;
sbit O_RCK = P1^5;
sbit O_CLK = P1^6;
/********************************************
ÑÓʱ³ÌÐò
*********************************************/
void delay(void)
{ uint rate;
unsigned int k,t;
t=rate;
while(t--)
{
for(k=0; k<150; k++)
{ }
}
}
/*********************************
ָʾµÆ
*********************************/
void write595(uint n)
{
uint t,j;
t=n;
for(j=0;j<16;j++)
{
O_CLK=0;
if(t&0x8000)
{LED_DATA=1;}
else
{LED_DATA=0;}
O_CLK=1;
t<<=1;
}
O_RCK = 0;
delay();
O_RCK = 1;
}
/*********************************
¶ÁÈ¡°´¼ü
*********************************/
sbit PL = P1^0;
sbit CLK = P1^1;
sbit Down_I_Data = P1^2;
sbit Up_I_Data = P1^3;
unsigned char read_down_165()
{
unsigned char i;
unsigned char Temp;
CLK=1 ;
PL=0 ; //HC165?
PL=1 ; //??HC165?
Temp=0;
if(P1^2) Temp|=0x01;
for(i=0;i <7;i++)
{
CLK=0;
delay();
CLK=1;
Temp<<=1;
if(P1^2)
{
Temp|=0x01;
}
}
delay();
CLK=0;
delay();delay();delay();delay();
return(Temp);
}
unsigned char read_up_165()
{
unsigned char i;
unsigned char Temp;
CLK=1 ;
PL=0 ; //HC165?
PL=1 ; //??HC165?
Temp=0;
if(P1^3) Temp|=0x01;
for(i=0;i <7;i++)
{
CLK=0;
CLK=1;
Temp<<=1;
if(P1^3)
{
Temp|=0x01;
}
}
CLK=0;
return(Temp);
}
读取的数据就是0xff,两个都是。。。。。
一周热门 更多>