gestione tempo in mikrobasic
Inviato: 12 gen 2012, 10:15
Salve a tutti... tempo fa ho realizzato un piccolo programma con mikrobasic che mi permettesse di simulare la campanella per un incontro di boxe. Per chi non lo sapesse, nella boxe, i pugili si affrontano per un tempo di 3 min e si riposano per un tempo di 1 minuto.
Una volta programmato il PIC ho notato che per la gestione di intervalli superiori a 1 min il timer del PIC non è più preciso. Nella compilazione del programma ho usato il semplice delay_ms, ma come detto prima non ottengo intervalli non precisi. Come posso risolvere questo problema. Eccovi il programma in mikrobasic:
main:
trisb=0 'imposto tutte le porte B come uscita
portb=0 'porto a livello basso tutte le porte B
inizio:
portb.0=1 'suono della campanella che invita a preparare i due pugili
delay_ms(1000) 'imposto la durata del suono della campanella pari ad 1 sec
portb.0=0 'spegnimento della campanella
portb.1=1 'accensione del led verde che mi indica che sono iniziati i tre min di combattimento
delay_ms(180000) 'il led verde rimane acceso per 3 min
portb=1=0 'spegnimento del led verde
portb.0=1 'suono della campanella che indica la fine del round
delay_ms(1000) 'imposto la durata del suono della campanella pari ad 1 sec
portb.0=0 'spegnimento della campanella
portb.2=1 'accensione del led rosso che indica l'inizio dell'intervallo tra i round
delay_ms(60000) 'il led rosso rimane acceso per 1 min
portb.2=0 'spegnimento del led rosso
GOTO inizio ' ripetizione del ciclo
end

Una volta programmato il PIC ho notato che per la gestione di intervalli superiori a 1 min il timer del PIC non è più preciso. Nella compilazione del programma ho usato il semplice delay_ms, ma come detto prima non ottengo intervalli non precisi. Come posso risolvere questo problema. Eccovi il programma in mikrobasic:
main:
trisb=0 'imposto tutte le porte B come uscita
portb=0 'porto a livello basso tutte le porte B
inizio:
portb.0=1 'suono della campanella che invita a preparare i due pugili
delay_ms(1000) 'imposto la durata del suono della campanella pari ad 1 sec
portb.0=0 'spegnimento della campanella
portb.1=1 'accensione del led verde che mi indica che sono iniziati i tre min di combattimento
delay_ms(180000) 'il led verde rimane acceso per 3 min
portb=1=0 'spegnimento del led verde
portb.0=1 'suono della campanella che indica la fine del round
delay_ms(1000) 'imposto la durata del suono della campanella pari ad 1 sec
portb.0=0 'spegnimento della campanella
portb.2=1 'accensione del led rosso che indica l'inizio dell'intervallo tra i round
delay_ms(60000) 'il led rosso rimane acceso per 1 min
portb.2=0 'spegnimento del led rosso
GOTO inizio ' ripetizione del ciclo
end
