74als165读取不到数据

2020-01-26 12:41发布

驱动程序

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,两个都是。。。。。
0条回答

一周热门 更多>