Experimental shiftOutWithDelay

This commit is contained in:
Philip Howard 2012-07-10 22:43:51 +01:00
parent 096ca1f1d4
commit d677719d0e
2 changed files with 34 additions and 0 deletions

View File

@ -82,3 +82,36 @@ void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val)
digitalWrite (cPin, LOW) ;
}
}
/*
* shiftOut:
* Shift data out to a clocked source
*********************************************************************************
*/
void shiftOutWithDelay (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val, uint8_t delay)
{
int8_t i;
if (order == MSBFIRST)
for (i = 7 ; i >= 0 ; --i)
{
digitalWrite (dPin, val & (1 << i)) ;
delayMicroseconds (delay) ;
digitalWrite (cPin, HIGH) ;
delayMicroseconds (delay) ;
digitalWrite (cPin, LOW) ;
delayMicroseconds (delay) ;
}
else
for (i = 0 ; i < 8 ; ++i)
{
digitalWrite (dPin, val & (1 << i)) ;
delayMicroseconds (delay) ;
digitalWrite (cPin, HIGH) ;
delayMicroseconds (delay) ;
digitalWrite (cPin, LOW) ;
delayMicroseconds (delay) ;
}
}

View File

@ -35,6 +35,7 @@ extern "C" {
extern uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order) ;
extern void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val) ;
extern void shiftOutWithDelay (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val, uint8_t delay) ;
#ifdef __cplusplus
}