renan-papaco escreveu:eh mas comigo não é tão simples assim... pois justamente estou usando um compilador com headers pré compiladas... é ai que ferra td... a melhor coisa a fazer mesmo é parar de usa-lo ou usa-lo pra determinadas funções e usar um mais f.... pra funções mais gerais.(i/o mapeada é q é f....
Nesses casos, uma boa providencia é substituir as funções nativas de cada compilador por macros.
Assim, para portar o programa de um compilador pra outro, basta fazer apenas uma única alteração que abrange o código inteiro.
Por exemplo, o arquivo abaixo, que nomeei no projeto como "io.h", faz o mapeamento das entradas e saídas para o padrão utilizado pelo KEIL uVision. Se eu fosse utilizar o SDCC, com certeza o sbit não seria reconhecido - e daria erro de compilação - mas como no meu projeto faço o acesso aos pinos pela marcro _xxxxx ( por exemplo _SDA para o pino de dados do I2C ) em todo o programa, isso significa que para utilizar o meu código de centenas de linhas com o seu compilador SDCC, eu teria de apenas alterar essas poucas linhas abaixo para compatibilizar o acesso ás I/O's :
- Código: Selecionar todos
/*--------------------------------------------------------*/
/* Definicao de Entradas e Saidas do Microprocessador */
/* Lembrando que no 8051 as portas tambem sao mapeadas */
/* por Bit ( como esta sendo feito com a porta P1 ) */
/* */
/*--------------------------------------------------------*/
#define PORTA_TECLADO P0
#define PORTA_USO_GERAL P1
#define DADOS_DISPLAY P2
#define CONTROLE_DISPLAY P3
/*---------------------------------------------------------*/
sbit _SDA = P1^0 ; /* dados do I2C */
sbit _HABILITA_SOM_OXIMETRIA = P1^1 ; /* Bateria-rede */
sbit _SOM_VOL_0 = P1^2 ; /* volume do som */
sbit _SCL = P1^3 ; /* clock do I2C */
sbit _PISCA_ALARME = P1^4 ; /* saida para LED */
sbit _SOM_VOL_1 = P1^5 ; /* volume do som */
sbit _BIP = P1^6 ; /* bit do bip */
sbit _RESET_MODULOS = P1^7 ; /* reset do SpO2 */
/*---------------------------------------------------------*/
+++