#define AO_STACK_SIZE 1024
+#define AO_LED_TYPE uint16_t
+
/* Various definitions to make GCC look more like SDCC */
#define ao_arch_naked_declare __attribute__((naked))
#define USE_SERIAL_STDIN (USE_SERIAL_1_STDIN + USE_SERIAL_2_STDIN + USE_SERIAL_3_STDIN)
+char
+ao_serial1_getchar(void);
+
+void
+ao_serial1_putchar(char c);
+
+char
+ao_serial1_pollchar(void);
+
+void
+ao_serial1_set_speed(uint8_t speed);
+
+char
+ao_serial2_getchar(void);
+
+void
+ao_serial2_putchar(char c);
+
+char
+ao_serial2_pollchar(void);
+
+void
+ao_serial2_set_speed(uint8_t speed);
+
+char
+ao_serial3_getchar(void);
+
+void
+ao_serial3_putchar(char c);
+
+char
+ao_serial3_pollchar(void);
+
+void
+ao_serial3_set_speed(uint8_t speed);
+
#endif /* _AO_ARCH_H_ */
#include "ao.h"
-__pdata uint8_t ao_led_enable;
+__pdata uint16_t ao_led_enable;
void
-ao_led_on(uint8_t colors)
+ao_led_on(uint16_t colors)
{
LED_PORT.odr |= (colors & ao_led_enable);
}
void
-ao_led_off(uint8_t colors)
+ao_led_off(uint16_t colors)
{
LED_PORT.odr &= ~(colors & ao_led_enable);
}
void
-ao_led_set(uint8_t colors)
+ao_led_set(uint16_t colors)
{
LED_PORT.odr = (LED_PORT.odr & ~(ao_led_enable)) | (colors & ao_led_enable);
}
void
-ao_led_toggle(uint8_t colors)
+ao_led_toggle(uint16_t colors)
{
LED_PORT.odr ^= (colors & ao_led_enable);
}
void
-ao_led_for(uint8_t colors, uint16_t ticks) __reentrant
+ao_led_for(uint16_t colors, uint16_t ticks) __reentrant
{
ao_led_on(colors);
ao_delay(ticks);
}
void
-ao_led_init(uint8_t enable)
+ao_led_init(uint16_t enable)
{
int bit;
void stm_usart1_isr(void) { ao_usart_isr(&ao_stm_usart1, USE_SERIAL_1_STDIN); }
-#if USE_SERIAL_1_STDIN
char
ao_serial1_getchar(void)
{
{
return ao_usart_pollchar(&ao_stm_usart1);
}
-#endif /* USE_SERIAL_1_STDIN */
+
+void
+ao_serial1_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart1, speed);
+}
#endif /* HAS_SERIAL_1 */
#if HAS_SERIAL_2
void stm_usart2_isr(void) { ao_usart_isr(&ao_stm_usart2, USE_SERIAL_2_STDIN); }
-#if USE_SERIAL_2_STDIN
char
ao_serial2_getchar(void)
{
{
return ao_usart_pollchar(&ao_stm_usart2);
}
-#endif /* USE_SERIAL_2_STDIN */
+
+void
+ao_serial2_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart2, speed);
+}
#endif /* HAS_SERIAL_2 */
#if HAS_SERIAL_3
void stm_usart3_isr(void) { ao_usart_isr(&ao_stm_usart3, USE_SERIAL_3_STDIN); }
-#if USE_SERIAL_3_STDIN
char
ao_serial3_getchar(void)
{
char
ao_serial3_pollchar(void)
{
- return ao_usart_pollchar(&ao_stm_usart2);
+ return ao_usart_pollchar(&ao_stm_usart3);
+}
+
+void
+ao_serial3_set_speed(uint8_t speed)
+{
+ ao_usart_set_speed(&ao_stm_usart3, speed);
}
-#endif /* USE_SERIAL_3_STDIN */
#endif /* HAS_SERIAL_3 */
void