Stranezze con timer e compilatori.
Di solito uso il MikroC ma volevo provare HI TECH C e ho scoperto qualcosa di strano.
Questo è il codice MikroC:
questo è il codice HI TECH C
per entrambi non ci sono errori e generano un onda quadra con periodo di 2ms.
Ma se analizziamo i due codici notiamo che nel HI TECH C vi è un ciclo while infinito SENZA IL QUALE L'ONDA NON VIENE GENERATA e nel MikroC non c'è .
I timer non sono indipendenti dall' andamento del programma ?????
C' è qualcosa di sbagliato nel codice HI TECH C (visto che non lo conosco)???
HELP.
Massimo.
Questo è il codice MikroC:
- Codice: Seleziona tutto
void main() {
TRISA =0;
TRISB=0;
TRISC=0;
INTCON =0b10100000;
OPTION_REG =0b10000011;
TMR0=196;
}
void interrupt(void)
{
if(INTCON.T0IF=1){
RB1_bit=RB1_bit^1;
}
TMR0=196;
INTCON.T0IF=0;
}
questo è il codice HI TECH C
- Codice: Seleziona tutto
#define XTAL_FREQ 4MHZ
#include <PIC.h>
#include "delay.c"
void main(void)
{
TRISA=0;
TRISB=0;
TRISC=0;
OPTION_REG=0b10000011;
INTCON=0b10100000;
TMR0=196;
while(1){
}
}
void interrupt ISR (void)
{
if (T0IF=1){
RB1=RB1^1;
}
TMR0 =196;
T0IF=0;
}
per entrambi non ci sono errori e generano un onda quadra con periodo di 2ms.
Ma se analizziamo i due codici notiamo che nel HI TECH C vi è un ciclo while infinito SENZA IL QUALE L'ONDA NON VIENE GENERATA e nel MikroC non c'è .
I timer non sono indipendenti dall' andamento del programma ?????
C' è qualcosa di sbagliato nel codice HI TECH C (visto che non lo conosco)???
HELP.
Massimo.
non si tratta di correttezza formale ma di una necessità.