#include<reg52.h>
sbit HC595_SCK = P0^5;
sbit HC595_RCK = P0^6;
sbit HC595_DATA = P0^7;
code int Led8_One_Array[16] = {0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000,0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080};
void Send(int Led8) // int Led8 为形参,无数据,等待这个定义的函数被调用时接收传递进来的数据。
{
unsigned char i;
HC595_RCK = 0;
for(i = 0; i < 16; i ++)
{
HC595_SCK = 0;
if(0 != (Led8&0x8000))
{
HC595_DATA = 1;
}
else
{
HC595_DATA = 0;
}
Led8 = Led8 << 1;
HC595_SCK = 1; //HC595芯片移位串行数据写入。
}
HC595_RCK = 1; //HC595芯片并行口读出。
}
void Delay(int n) //延时函数,形参n,等待调用接收数值。
{
for(n=n;n>0;n--) //实参1000,逐次减1 。
{
int k;
for(k=0;k<110;k++) ;
}
} //此函数延时效果为1s左右。
void main()
{
while(1)
{
unsigned char j ; //j赋值给调用子函数中作为实参,传递给子函数数值0-15.
for(j=0;j<16;j++)
{
Send(Led8_One_Array[j]) ; //调用子函数数组中第j个数据,并将第j个数据中的实参值传递给形参。
Delay(1000) ; //调用延时函数,实参1000传递给n。
}
}
}