mc8051fun/mc8051fun.h

69 lines
1.5 KiB
C
Raw Normal View History

2024-05-17 23:51:40 +02:00
#ifndef MC8051FUN_H
#define MC8051FUN_H
2024-05-19 01:00:51 +02:00
#include <stdint.h>
2024-05-17 23:51:40 +02:00
#include <8052.h>
2024-05-18 02:14:50 +02:00
2024-05-19 01:00:51 +02:00
2024-05-18 02:14:50 +02:00
void uart_send_chr(char tx_data);
void uart_send_str(const char *str);
2024-05-25 19:15:01 +02:00
void uart_init_(uint8_t timer_init,uint8_t x2);
#define uart_init(baud,x2) \
uart_init_(256L-FOSC/12L/(baud*16L/(1<<x2)),x2)
#define setbits(var,bits) (var|=bits)
#define unsetbits(var,bits) (var&=(bits^0xff))
2024-05-19 01:00:51 +02:00
int8_t rotary_encoder_stat(uint8_t b);
extern uint8_t sevenseg_dec[10];
extern uint8_t sevenseg_dec_inv[10];
2024-05-23 22:48:41 +02:00
/**
* Minimum frequency is 15 Hz @ FOSC of 11 Mhz
*/
#define default_timer16_init_val(freq) ((65536L)-FOSC/12L/freq)
#define default_timer8_init_val(freq) ((256L)-FOSC/12L/freq)
#define at89xx_6t_timer16_init_val(freq) ((65536L)-FOSC/6L/freq)
#define at89xx_6t_timer8_init_val(freq) ((256L)-FOSC/6L/freq)
#define STC15XX 1 // STC15xx family
#define AT89XX 2 // AT89XX family
#define AT89XX_6T 3 // AT89C89C52 in 6T mode
#if MCU==AT89XX_6T
#define timer8_init_val(freq) at89xx_6t_timer8_init_val(freq)
#define timer16_init_val(freq) at89xx_6t_timer16_init_val(freq)
#else
#define timer8_init_val(freq) default_timer8_init_val(freq)
#define timer16_init_val(freq) default_timer16_init_val(freq)
#endif
2024-05-19 21:02:33 +02:00
uint16_t int_to_bcd(uint16_t i);
2024-05-23 22:48:41 +02:00
int getbutton(uint8_t pinval, uint8_t *button);
extern uint8_t getbutton_time;
2024-05-25 19:15:01 +02:00
/* a different representation of pins, which
* lets us iteratate over pins.
* But its slower, of course */
typedef struct {
uint8_t port;
uint8_t pin;
} i8051pin_T;
2024-05-19 21:02:33 +02:00
2024-05-17 23:51:40 +02:00
#endif