#include <stdio.h>
#include "reg52.h"
//定义74HC595控制管脚
sbit SRCLK=P3^6; //移位寄存器时钟输入
sbit RCLK=P3^5; //存储寄存器时钟输入
sbit SER=P3^4; //串行数据输入
char ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
int i;
int n;
void delay(int n)
{
while(n--);
}
void main () {
P0=0x00;
for(i=0;i<8;i++){
hc595_write_data(0x00);//消除前面寄存器缓存数据
jcq(ghc595_buf[i]);
delay(500);
}
}
void jcq(char c){//寄存器
n=0;
for(n=0;n<8;n++){
SER=ghc595_buf[n]>>7;//取char最后一位
SER=<<1;//排除最后一位
delay(100);
SRCLK=0;
delay(100);
SRCLK=1;//高电平脉冲时候,寄存器中已存数据向下给下一个数据空间,上升沿将端口数据送入寄存器中
}
RCLK=0;
delay(100);
RCLK=1;//高电平脉冲时候,上升沿将前面写入到寄存器的数据输出
}