我在写4094,四个级联的。。跟595一样的。。通过3个IO口控制程序我发给你。。。
void SendOneByte( unsigned char data)
{
uchar i,j;
SET_STR; //保持原来的锁定状态
for(i=0;i<8;i++) //写八位数据进4094;
{
SET_CLK; //形成上升延脉冲;
for(j=0;j<8;j++); //延迟
if(data&0x80)
{ //判断并发串行数据;
CLR_DI;
}
else
{
SET_DI;
}
for(j=0;j<8;j++); //延迟
CLR_CLK;
for(j=0;j<8;j++); //延迟
data<<=1; //数据移位,送下一位数据;
}
CLR_STR;
}
void Write4094(uchar dat,uchar dat1,uchar dat2,uchar dat3)
{
SendOneByte(dat);
SendOneByte(dat1);
SendOneByte(dat2);
SendOneByte(dat3);
}
注意级联的时候数据发送的顺寻,第一个数据是给第四个
|