Alterando registradores em linguagem C.

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Alterando registradores em linguagem C.

Mensagempor fabio_pic » 01 Mai 2009 09:41

Senhores,

Estou precisando mexer no registrador SPBRG para alterar o baud rate da USART (dentro do main) mas ocorre erro na compilação.
Tentei colocar o registrador e seu valor como é feito no MikroC, colocar o mesmo comando dentro das diretivas #asm e #endasm mas nada funcionou.
Como é que se faz isso? Alguém sabe?

Abraços,
Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Re: Alterando registradores em linguagem C.

Mensagempor fabim » 01 Mai 2009 10:09

fabio_pic escreveu:Senhores,

Estou precisando mexer no registrador SPBRG para alterar o baud rate da USART (dentro do main) mas ocorre erro na compilação.
Tentei colocar o registrador e seu valor como é feito no MikroC, colocar o mesmo comando dentro das diretivas #asm e #endasm mas nada funcionou.
Como é que se faz isso? Alguém sabe?

Abraços,
Fábio.


torão, olha lá no include desse uC, veja se o SPBRG esta definido para um endereço.
Se não estiver, pegue o dataSHIT dele, vai lá na tabela de SFR´s e olhe o nome dele e o endereço.
Só acrescentar no include e ja éra.

Isso acontece muito comigo..

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabio_pic » 01 Mai 2009 10:16

Fabim,

Se eu colocar no include, o pic só fará isso uma vez não é mesmo?
A idéia é alterar esse registrador (e outros) após os primeiros settings e dependendo do estado de um botão, a configuração dos mesmo será alterada. Mais ou menos assim:

main
{
if (input(botao))
{
spbrg=x; // seta a usart para Xbps.
}
if (!input(botao))
{
spbrg=y; // seta a usart para Ybps.
}

}

Será que ficou um pouco mais claro?

Obrigado,
Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Mensagempor fabim » 01 Mai 2009 12:34

sim primo, eu ja tinha entendido, é você que não entendeu.

EX,.
short SPBRG absolute 0x00yy;



main.(){

spbrg = 100;
spbrg = 80;
spbrg = 20;

e daí cabecinha, mais que preguiça de ler o datashit eim ?
Esqueceu que esse fulano aí é um endereço ram ? Pode ser setado uma makro, um nome conform defini À cima.

Tendeu agóra ??

MEsma coisa em um PIC18.

LOOK.

vocÊ sabe que o LATA = 0x0008 certo ?

Agóra,
short PEGATIU absolute 0x0008;

ja se fosse definir uma PORT, que é volatil.
volatile short PEGATIU absolute 0x0008;


LATA = 10; é o mesmo que PEGATIU = 10;
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabio_pic » 01 Mai 2009 12:59

fabim,

Eu li o datasheet algumas vezes. As minhas dificuldades estão no fato de que comecei a programação em uC em C e não faz muito tempo. Por isso quando aparecem as questões de endereçamento eu "como um pouco de capim".
Por exemplo, nunca tinha usado a expressão "short SPBRG absolute 0x00yy;".... mas vou testar.

Obrigado,
Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Mensagempor Maia » 01 Mai 2009 17:03

Olá Fabio,
Geralmente vc não precisa se preocupar com endereço dos registradores, o #include do MCU que vc está usando já faz isso. Qual compilador e MCU vc está usando?
Avatar do usuário
Maia
Byte
 
Mensagens: 348
Registrado em: 15 Out 2006 16:25
Localização: Rio de Janeiro

Mensagempor fabim » 01 Mai 2009 18:06

Xaréx..
Qual o erro que esta sendo informado pelo compilador.
De um CTRL+C & V aqui pra eu dar uma zoiada, e qual compilador você esta brincando, que esta dando este problema ?

Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor fabio_pic » 06 Mai 2009 08:47

Pessoal,

Estou usando 16F877A escrito em C.

Agradeço a ajuda de todos.

Fábio.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Mensagempor Sergio38br » 06 Mai 2009 14:51

Parece que é CCS, pelo codigo postado acima.

[ ]'s
Sergio
Avatar do usuário
Sergio38br
Word
 
Mensagens: 759
Registrado em: 22 Nov 2007 13:39
Localização: São Paulo - SP


Voltar para PIC

Quem está online

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

x