Tenho dúvidas em perceber o seguinte código.Este código referece a leitura e escrita de dados numa EEPROM.
#define WR_PNT_ADD 0x000
unsigned int Rd1(){
byte low=Read(RD_PNT_ADD);//Função que lé dados da EEPROM
byte hi=Read(RD_PNT_ADD+1);
return((hi<<8)+low);//Nao sei que isto faz, 1º dúvida
}
void Rd2(){
Write(RD_PNT_ADD,(byte) (pnt & 0x00FF));//Função escreve dados,2º dúvida
Write(RD_PNT_ADD+1,(byte (pnt>>8));//3ºdúvida
}
byte low=Read(RD_PNT_ADD);//Função que lé dados da EEPROM
Nao conheco a funçao Read() .Onde arranjaste esse codigo?
return((hi<<8)+low);//Nao sei que isto faz, 1º dúvida
A tua funçao devolte um int(2 bytes).Como tu queres retornar um int e leste byte a byte tens de os juntar.este << (operador) desloca para a esquerda 8 vezes o byte hi.Assim o resultado disso vai ser teres o hi byte e o lowbyte dentro do int retornado na funçao.
Em todo o caso olhando para as tua duvidas a seguir é semelhante mas o que prentendes fazer concretamente ?
Quando o meteste na IDE, ele compilou ou deu erros? Isto funciona? Ou não testaste ainda?
As tuas dúvidas são acerca de byte shift. Se procurares pelo termo na net é simples de perceber o que é. Basicamente estás a compôr uma variável de 16 bits com duas de 8 bits.
Se souberes tipos de dados e como os valores são guardados, isto é relativamente simples de compreender. Aliás, vai à calculadora do Windows, mete em modo programador.
Escreve 30000 e vais ver uma sequência de bits, correcto?
Essa sequência tem 2 bytes ou seja 16 bits. Ao fazeres byte shift estás efectivamente a passar os bytes para a direita ou esquerda.