//
// test program for 74HC595 with wiringPi
// cc -o sr595w sr595w.c -l wiringPi
//
#include <stdio.h>
#include <time.h>
#include <wiringPi.h>
#define dataPin 4
#define clockPin 5
#define latchPin 6
void HC595Byte (unsigned int output, int bits)
{
int bit;
digitalWrite (latchPin, LOW) ;
for (bit = bits - 1 ; bit >= 0 ; --bit) {
digitalWrite (dataPin, output & (1
<< bit)) ;
digitalWrite (clockPin, HIGH) ;
digitalWrite (clockPin, LOW) ;
}
digitalWrite (latchPin, HIGH) ;
}
void HC595Bit (unsigned int output, int bits)
{
int bit;
for (bit = bits - 1 ; bit >= 0 ; --bit) {
digitalWrite (latchPin, LOW) ;
digitalWrite (dataPin, output & (1
<< bit)) ;
digitalWrite (clockPin, HIGH) ;
digitalWrite (clockPin, LOW) ;
digitalWrite (latchPin, HIGH) ;
}
}
int main(int argc, char **argv) {
int i;
int loop,loopm;
time_t start_time;
time_t end_time;
loopm=30000;
if (argc == 2) loopm=1;
if (wiringPiSetup() == -1){
printf("wiringPiSetup Fail\n");
return 1;
}
pinMode(dataPin,OUTPUT);
pinMode(clockPin,OUTPUT);
pinMode(latchPin,OUTPUT);
start_time = time(NULL);
for(loop=0;loop<loopm;loop++) {
HC595Byte(0xff,8);
if (argc == 2) getchar();
HC595Byte(0x00,8);
}
end_time = time(NULL);
printf("time:%.1fSec\n",difftime(end_time,start_time));
}
|