三個74HC595串聯,用led595_0()輸送個第一個595,為啥后面兩個會跟第一個595同步運行呢。
用led595_1().led595_2()分別輸送給第二個第三個595都能單獨控制。只有第一個運行時后面的都是同步運行,這是為什么?
單片機源程序如下:
#include<reg51.h>
#include <intrins.h>
#include"delay.h"
#define nop() _nop_()
#include "hc595.h"
sbit shcp =P2^0;
sbit ds =P2^1;
sbit stcp =P2^2;
void led595_0(unsigned int date);
void led595_1(unsigned int date);
void led595_2(unsigned int date);
unsigned char i,j,z,k,a;
void main() //主函數
{
for(i=0;i<8;i++)
{led595_1(0x80>>i);delayxms(200);}
}
void led595_0(unsigned int date) //往595輸送數據函數
{
for(k=0;k<8;k++)
{
if((date<<k)&0x80)
ds=1;
else
ds=0;
shcp=0;
nop();
nop();
shcp=1;
}
stcp=0;
nop();
nop();
stcp=1;
}
void led595_1(unsigned int date) //往595輸送數據函數
{
for(k=0;k<16;k++)
{
if((date<<k)&0x80)
ds=1;
else
ds=0;
shcp=0;
nop();
nop();
shcp=1;
}
stcp=0;
nop();
nop();
stcp=1;
}
void led595_2(unsigned int date) //往595輸送數據函數
{
for(k=0;k<24;k++)
{
if((date<<k)&0x80)
ds=1;
else
ds=0;
shcp=0;
nop();
nop();
shcp=1;
}
stcp=0;
nop();
nop();
stcp=1;
}
|