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:
Tim Crawford
2021-07-15 14:37:48 -06:00
committed by Jeremy Soller
parent f9e4e25b05
commit e86e18d4b1
2 changed files with 5 additions and 5 deletions

View File

@ -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);
}
}

View File

@ -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