void shiftByte(uint8_t shiftData) // Shift out bits, MSB or LSB first { uint8_t i; for (i=0; i<8; i++) { if ( 0 == SHIFT_BIT_ORDER ) { // LSB first if ( 0 == ( shiftData & _BV(i) ) ) PIN_LO(B,SROUT); else PIN_HI(B,SROUT); } else { // MSB first if ( 0 == ( shiftData & _BV(7-i) ) ) PIN_LO(B,SROUT); else PIN_HI(B,SROUT); } // Pulse shift register clock low to high PIN_HI(B,SCK); PIN_LO(B,SCK); } // Pulse RCK to put data on output pins PIN_HI(B,RCK); PIN_LO(B,RCK); // Finish with all outputs low PIN_LO(B,SROUT); }
static void Write_Data( uint8_t dat ) { PIN_HI( LCD_DC ); SELECT(); spi1_send_byte( dat ); UNSELECT(); }
//! init rotary encoder pins as inputs, PUs enabled. void re_init(void (* re_handler_fn)(uint8_t dir)) { // config as input PIN_LO(RE_CTL,RE_PIN0); PIN_LO(RE_CTL,RE_PIN1); // set output high to enable internal pullup PIN_HI(RE_W,RE_PIN0); PIN_HI(RE_W,RE_PIN1); // set the mask for pin change mask register PIN_HI(RE_PCMSK_REG, RE_PIN0); PIN_HI(RE_PCMSK_REG, RE_PIN1); // enable pin change interrupt PIN_HI(PCICR,RE_PCINT); re_handler=re_handler_fn; }