delay: Use u8, decrementing loop
Use u8 instead of i16 as a delay can never be negative and should never block for a long period of time. Use a decrementing loop as SDCC generates more efficient code. Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
committed by
Jeremy Soller
parent
f9e4e25b05
commit
e86e18d4b1
@ -15,8 +15,8 @@ void delay_ticks(uint16_t ticks) {
|
||||
|
||||
// Start timer in mode 1
|
||||
TMOD = (TMOD & 0x0F) | 0x10;
|
||||
TH1 = (unsigned char)(value >> 8);
|
||||
TL1 = (unsigned char)value;
|
||||
TH1 = (uint8_t)(value >> 8);
|
||||
TL1 = (uint8_t)value;
|
||||
TR1 = 1;
|
||||
|
||||
// Wait until complete
|
||||
@ -24,8 +24,8 @@ void delay_ticks(uint16_t ticks) {
|
||||
}
|
||||
|
||||
// This loops through delays of one ms in order to avoid overflow
|
||||
void delay_ms(int ms) {
|
||||
for (int i = 0; i < ms; i++) {
|
||||
void delay_ms(uint8_t ms) {
|
||||
for (uint8_t i = ms; i != 0; i--) {
|
||||
delay_us(1000);
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,6 @@ void delay_ticks(uint16_t ticks);
|
||||
#define delay_ns(X) \
|
||||
delay_ticks((uint16_t)((((uint32_t)(X)) * 69UL + 89999UL) / 90000UL));
|
||||
|
||||
void delay_ms(int ms);
|
||||
void delay_ms(uint8_t ms);
|
||||
|
||||
#endif // _ARCH_DELAY_H
|
||||
|
Reference in New Issue
Block a user