Voltando novamente à saga do DS1307, estou fazendo o tal relógio com ele usando o 16F877A no MikroC. Como o barramento I2C utiliza os pinos RC3 e RC4, resolvi fazer uma “gambiarra” no código para obter a seguinte ordem de saída do número em binário:
RC0: bit 0
RC1: bit 1
RC2: bit 2
RC5: bit 3
As declarações dos TRIS foram feitas bit a bit:
TRISC.F0 = 0;
TRISC.F1 = 0;
TRISC.F2 = 0;
TRISC.F5 = 0;
Para se fazer isso construí um código em que eu uso o comando switch para fazer o teste da variável, nesse caso a variável dos minutos. Vejam no exemplo abaixo:
- Código: Selecionar todos
switch (minutos) {
Case 0:
PORTC.F0 = 0;
PORTC.F1 = 0;
PORTC.F2 = 0;
PORTC.F5 = 0;
Case 1:
PORTC.F0 = 1;
PORTC.F1 = 0;
PORTC.F2 = 0;
PORTC.F5 = 0;
// e por aí vai até o “case 9”
Só que quando compilei o dito cujo (sem erros), a contagem do relógio simplesmente não funciona. Quando eu retiro o comando switch do código, tudo volta a funcionar normalmente.
O I2C está sendo feito pelo hardware interno do PIC.
Alguém poderia dar uma idéia de como arrumar essa meleca???
Desculpe se o tópico está grande, mas é que eu fiquei o dia inteiro apanhando por causa disso e até agora nada.
Valeu!!!