74hc595.h
#ifndef _74HC585_H_
#define _74HC585_H_
#include<reg51.h>
#include<intrins.h>
#include<function.h>
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define NOP _nop_()
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;
void hc595SendData(uchar SendVal); //函数声名
#endif
74hc595.c
#include<74hc595.h>
void hc595SendData(uchar sendVal)
{
uchar i;
//从CPU中向595一位一位发送,595一位一位接收
for(i = 0; i < 8; i++)
{
if((sendVal << i) & 0x80)
MOSIO = 1;
else MOSIO = 0;
S_CLK = 0;
NOP;
NOP;
S_CLK = 1;
}
//CPU发送完后,R_CLK将数据并行输出,
//实现了只占用CPU一个输出口就可以输出8bit数据
R_CLK = 0;
NOP;
NOP;
R_CLK = 1;
}