Esempio n. 1
0
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);
}   
Esempio n. 2
0
static void Write_Data( uint8_t dat )
{
  PIN_HI( LCD_DC );
  SELECT();
  spi1_send_byte( dat );
  UNSELECT();
}
Esempio n. 3
0
//! 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;
}