Elitebruger
Tilføjet:
24-06-2007 19:23:01
Svar/Indlæg:
538/20
Jeg står og skal til eksamen i overmorgen i teknikfag på HTX, hvor jeg har benyttet mig af en PIC til at fremtvinge et delay.
Selve koden som jeg skal have lidt hjælp til, ser således ud:
PORTB.F6 = 1; //tænd port
Delay_ms(5000); //5 sekunders delay
PORTB.F6 = 0; // sluk delay
x = 1000; //definerer x=1000
EEProm_Write(p, 1); //skriv til EEPromen at vinduet er tændt
delay_ms(30); //lille delay efter skrivning af EEProm
do {
x = x-1; //kører x-1 igennem
if (PORTA.F1) goto luk; //hvis denne port bliver aktiveret, gå til "luk"
delay_ms(10); //for hver gang løkken kører igennem, lav et lille delay på 10ms
} while(x != 0); //kør denne løkke igennem indtil x=0, hvorefter videre
PORTB.F7 = 1; //tænder porten
Delay_ms(5000); //5 sekunders delay
PORTB.F7 = 0; //slukker porten
x = 36000; //sætter nu x = 36000 hvilket tager 1 time at køre igennem
EEProm_Write(p, 0); //skriv til EEPromen at vinduet er lukket
delay_ms(30); //delay efter EEProm
do {
x = x-1; //laver en løkke hvor den siger x-1
if (PORTA.F0) goto taend; //hvis denne port bliver aktiveret, gå til "tænd"
delay_ms(10); //delay på 10ms ved hvert gennemløb
} while(x != 0); //bliv ved med at køre denne løkke igennem, indtil x=0
} while (1);
};
};
Som I kan se, så benyttes et loop til at fremtvinge et delay. Mit problem er så, at jeg har glemt, hvordan man udregner dette delay, således det passer med eksempelvis 5 minutter (Vi ved den kører loopet igennem x-antal gange men hvordan definerer vi størrelsen på x, således det kommer til at passe med eksempelvis 5 minutter?)
Jeg har ikke lige kunne finde noget på nettet, som viser hvordan man omregner fra loops til ms og derfor håber jeg, at der findes en venlig sjæl herinde, som kender noget til dette fænomen og som måske har arbejdet med samme emne tidligere.
Hardware som benyttes er:
PIC16F84A
4MHz XT oscillator