#define F_CPU 1200000 #define v 250 #define MAX_data 0 #define MAX_clk 1 #define MAX_load 2 #include #include unsigned char data_1[] = {0,0,0,1,1,0,0,1,1,0,0,1}; unsigned char data_test_on[] = {1,1,1,1,1,1,1,1,1,1,1,1}; unsigned char data_test_off[] = {1,1,1,1,1,1,1,1,1,1,1,0}; unsigned char data_normal[] = {1,1,0,0,0,0,0,0,0,0,0,1}; unsigned char data_decode[] = {1,0,0,1,0,0,0,0,0,0,0,0}; unsigned char data_scan[] = {1,0,1,1,0,0,0,0,0,0,0,0}; unsigned char data_intensity[] = {1,0,1,0,0,0,0,0,1,0,0,0}; unsigned char i; void init(void); void write(unsigned char data[]); int main(void) { DDRB = 0b000111; PORTB = 0b0000100; init(); write(data_1); return 0; } void write(unsigned char data[]) { PORTB &= ~(1 << MAX_load); PORTB &= ~(1 << MAX_clk); for (i = 0; i<=3; i++) { PORTB &= ~(1 << MAX_data); PORTB |= (1 << MAX_clk); PORTB &= ~(1 << MAX_clk); } for (i = 0; i<=11; i++) { if(data[i] & (1 << MAX_data)); else PORTB &= ~(1 << MAX_data); PORTB |= (1 << MAX_clk); PORTB &= ~(1 << MAX_clk); PORTB &= ~(1 << MAX_data); } PORTB |= (1 << MAX_load); PORTB |= (1 << MAX_clk); } void init() { write(data_normal); write(data_decode); write(data_scan); write(data_intensity); }