#include #include #include #include #include #include #include #include #include #include #include #include "pins.h" #define UP(N) set_pin(N, 1) #define DOWN(N) set_pin(N, 0) #define HI(N) set(N, 1) #define LO(N) set(N, 0) void kd2() { usleep(10000); } void kdh() { usleep(5000); } void kd1() { usleep(1); } void test_pins() { for(;;) { HI("clk"); HI("clkinh"); LO("shld"); HI("clr"); kd1(); LO("clk"); LO("clkinh"); LO("shld"); LO("clr"); kd1(); } } /* call when clk is hi */ void tick(int n) { int i = 0; for(; i < n; i++) { LO("clk"); kd2(); HI("clk"); kd2(); } } void clear() { HI("clk"); LO("clkinh"); kdh(); LO("clr"); kdh(); LO("clk"); kdh(); HI("clr"); kdh(); HI("clk"); kd2(); } int main(int argc, char *argv[]) { signal(SIGINT, inth); pins_init(); // config_pins(); pincnt(); pcfg(1, 6, -1, INPUT | PULLDOWN, "ser"); pcfg(1, 13, 0, OUTPUT, "clk"); pcfg(1, 15, 0, OUTPUT, "shld"); pcfg(0, 27, 0, OUTPUT, "clr"); pcfg(1, 2, 0, OUTPUT, "clkinh"); LO("clk"); HI("clkinh"); HI("clr"); LO("shld"); sleep(1); for(;;){ LO("clk"); HI("clkinh"); HI("clr"); LO("shld"); kd2(); kd2(); clear(); tick(4); LO("clk"); LO("shld"); kd2(); HI("clk"); kdh(); HI("clkinh"); kdh(); LO("clk"); LO("shld"); kdh(); kdh(); HI("clk"); kd2(); tick(2); LO("clk"); LO("clkinh"); kd2(); HI("clk"); kd2(); tick(10); } }