Tamanho de variáveis no PIC18f452

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Tamanho de variáveis no PIC18f452

Mensagempor paivadaniel » 01 Abr 2011 14:57

int a = 20;
int b = 20;
double c;

c = a*b;
printf ("%lf\n", c);


Copiei um trecho de código que estou implementando no pic18f452, compilando no ccs. Afinal, não consigo representar esse número no PIC e consigo no Dev C++ devido ao mcu ser de 8 bits?

Qual a saída para isso?
paivadaniel
 
Mensagens: 3
Registrado em: 24 Mar 2011 13:42

Mensagempor marquim » 02 Abr 2011 04:22

Dá uma olhada na página 44 do manual de referência do compilador. O tipo double não existe no CCS, embora a palavra seja reservada. Experimente usar o tipo float.

Esquece o lance dos 8 bits. O tipo float, por exemplo, tem 32 bits e é suportado pelo compilador. Se você estivesse trabalhando em assembly, sim, isso talvez fosse motivo para esquentar a cuca.

PS: Lembre-se de usar %f ou %g no printf. A diferença entre os dois você vai encontrar no manual de referência também.

Abraçolis!
Avatar do usuário
marquim
Bit
 
Mensagens: 16
Registrado em: 11 Out 2006 21:26

Mensagempor Leo Kenobi » 03 Abr 2011 09:27

Outro conselho: algumas vezes o CCS não consegue fazer um cálculo sem explicitar o formato.

No seu caso a multiplicação 20*20=400 não caberá numa variável int (8 bits = 255 máx.), mas o resultado ainda é um inteiro, só que de 16 bits (16 bits = 65.535 máx).

Sendo assim você pode usar uma variável tipo int16 ou long (os dois funcionam no CCS).

Entetanto, devido a essa necessidade de explicitar o tipo para o CCS, seu programa ficaria assim:

int a = 20;
int b = 20;
int16 c;

c = (int16)a * (int16)b;

O (int16) indica para o compilador para tratar as variáveis no cálculo como se fosse variáveis de 16 bits, embora elas continuem sendo variáveis de 8 bits.

O porque isso ocorre no CCS não sei ao certo, mas depois de muito penar com cálculos nele uso sempre essa técnica.

E aproveitando, usar ponto flutuante nos 18F toma muita memória e é lento pra calcular, só usa se não tiver jeito mesmo.

Abraço a todos.
Leo
Leo Kenobi
Bit
 
Mensagens: 12
Registrado em: 28 Mar 2011 12:11


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x