//當單片機的IO口不夠用時,可以用一般的數(shù)字集成電路74LS(HC)595擴展IO口用。
//下面是51單片機74HC595的c51驅(qū)動
#include<at89x51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
code uchar shu[]={1,2,4,8,16,32,64,128};
sbit ssj=P2^0;//數(shù)據(jù)線
sbit ssz=P2^1;//同步時鐘
//sbit sss=P2^2;
void delay()
{
uint i,j;
for(i=0;i<400;i++)
for(j=0;j<200;j++);
}
void fasong( uchar sj )
{
uchar i;
ssz=0;
ssj=0;
// sss=0;
_nop_();
ssz=1;
ssj=1;
// sss=1;
for(i=0;i<9;i++)
{
ssz=0;//時鐘拉低
// sss=0;
_nop_();
_nop_();
if((sj&0x80)==0x80)
{
ssj=1;
}
else
{ ssj=0;}
ssz=1;//時鐘抬高
// sss=1;
sj=sj<<1;//數(shù)據(jù)左移一位
}
}
void main(void)
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
fasong(shu[i]);
delay();
}
}
}