Preciso carregar um int32 em quatro registradores com endereços sequenciais. Os registradores do PIC18f458 são:
0xF41 (byte mais alto do valor que quero guardar)
0xF42
0xF43
0xF44 byte mais baixo
Em uma função utilizo codigo equivalente ao mostrado abaixo:
- Código: Selecionar todos
int32 *ptr;
int32 id = 0x000F000F;
ptr = 0xF41; //aponta para o primeiro dos 4 registradores
*ptr = id; //preenche os 4 registradores com valor de id
Parece razoavel não? Mas ao simular o programa no MPLAB percebi que os valores são armazenados de forma invertida, isto é, o byte menos significativo de ID vai para o 0xF41 e a parte alta vai para 0xF44, então foram carregados: 0x0F000F00
Fiquei confuso. Esse comportamento é normal ?
Se sim, existe alguma forma de fazer a operação inversa(como eu imaginava) utilizando o *int32 ?
Obrigado