Página 1 de 1

Duvida CCS

MensagemEnviado: 06 Abr 2015 17:21
por RAWeigel
Olá pessoal,

1) No CCS, qual a diferença entre usar uma ou outra função abaixo?
Código: Selecionar todos
  output_low(PIN_B1)
  output_bit(PIN_B1,0)

2) Também não achei uma forma de manipular apenas um bit de um registrador TRIS. Tem como?

Re: Duvida CCS

MensagemEnviado: 06 Abr 2015 19:01
por tcpipchip

Re: Duvida CCS

MensagemEnviado: 06 Abr 2015 20:24
por vtrx
Para manipular um Bit do registrador TRIS,voce deve usar a diretriz #use fast_io(X) ,onde X é o port,e então setar os bits do registrador TRIS,tipo,set_tris_b(0bXXXXXXXX);
Sobre o output_low(PIN_B1) e output_bit(PIN_B1,0) ,aqui na listagem ASM gerou o mesmo código.

Re: Duvida CCS

MensagemEnviado: 06 Abr 2015 21:59
por andre_luis
RAWeigel escreveu:Também não achei uma forma de manipular apenas um bit de um registrador TRIS. Tem como?


As instruções BCF e BSF não fazem isso ?

Re: Duvida CCS

MensagemEnviado: 07 Abr 2015 08:30
por ze
em asm fazem sim.
em c, veja estas macros
Código: Selecionar todos
#define setbit(var,bitno) ((var) |= 1 << (bitno))
#define clrbit(var,bitno) ((var) &= ~(1 << (bitno)))

uso:
Código: Selecionar todos
setibit(TRISB,1);

que dá no mesmo de:
Código: Selecionar todos
TRISB1=1;

onde um compilador de verdade vai gerar
Código: Selecionar todos
bsf TRISB,1

O mesmo serve pros ports e qualquer variável
Este compilador, acho que nem quero saber o asm gerado por ele.