diff --git a/src/arch/8051/delay.c b/src/arch/8051/delay.c index 4f43021..340ad0e 100644 --- a/src/arch/8051/delay.c +++ b/src/arch/8051/delay.c @@ -3,6 +3,12 @@ #include #include +void delay_ticks(uint16_t ticks) { + timer_mode_1(-ticks); + timer_wait(); + timer_stop(); +} + // One millisecond in ticks is determined as follows: // 9.2 MHz is the clock rate // The timer divider is 12 @@ -11,8 +17,6 @@ // 65536 - 766.667 = 64769.33 void delay_ms(int ms) { for (int i = 0; i < ms; i++) { - timer_mode_1(64769); - timer_wait(); - timer_stop(); + delay_ticks(767); } } diff --git a/src/arch/8051/include/arch/delay.h b/src/arch/8051/include/arch/delay.h index a99e44d..c7393e7 100644 --- a/src/arch/8051/include/arch/delay.h +++ b/src/arch/8051/include/arch/delay.h @@ -1,6 +1,9 @@ #ifndef _ARCH_DELAY_H #define _ARCH_DELAY_H +#include + +void delay_ticks(uint16_t ticks); void delay_ms(int ms); #endif // _ARCH_DELAY_H