/************************************************
Monitor LPC2478
Cabecalho com prototopos e declaracoes gerais
Marcos Augusto Stemmer
*************************************************/
#ifndef STRING_H
#define STRING_H
/* Mascaras do U0LSR */
#define THREMPTY	0x20
#define RXDREADY	0x01
/* Configuracoes especificas */
#define CRYSTALFREQ 12000000
#define SYSCLK 48000000
//#define BAUDRATE 9600

/* Maneiras de interpretar umendereco: */
union address
	{
	unsigned long w;	/* Como numero */
	volatile unsigned char *p;	/* Como apontador para byte */
	volatile unsigned long *pw;	/* Como apontador para word */
	void (*f)(void);	/* Como apontador para funcao (execute) */
	};

int PLL_Init(int pllmulti, int cpudiv);
void U0init(int baudrate);
void U0puts(char *c);
int U0getchar(void);
void U0putchar(char c);
int GetStr(char *s, int n);
void PrByte(int c);
unsigned long getnum(char *str, int radix);
void escreve_num(int num);
unsigned long getaddress(void);
int lehex(unsigned long base);	/* Le arquivo Intel hex */
void dump(void);			/* Mostra bytes em hexadecimal */
void copy(int);			/* Copia blocos de memoria */
void execute(void);			/* Executa um programa */
void escreve_mem(void);
void escreve_word(void);
void prword(unsigned int w);
void pr2dec(int x);
void IAP_functions(void);
void LCDinit(void);
void LCDputchar(int);
void LCDcomando(int);
void LCDputs(char *);
void LCDprbyte(int);
int carrega(void);
#endif
