Duvida CCS

Enviado:
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

Enviado:
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

Enviado:
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.