C Program: Når bryteren er koblet til PD2 trykkes , telleren starte og stoppe
Solution:
- // Oppgave 1d) med endringer: Når bryteren koblet til PD2 trykkes, skal telleren starte og stoppe.
- #include <avr/io.h>
- #include "LedOgBrytereIOKort.h"
- #include "BitManipulation.h"
- #define F_CPU 16000000L
- #include <util/delay.h>
- #define PD2_ER_TRYKKET !(BIT_CHECK(PIND,2)) // PIND 2 ligger på 00000010.
- #define PD3_ER_TRYKKET !(BIT_CHECK(PIND,3)) // PIND 3 ligger på 00000100.
- int main(void)
- {
- int i=1;
- init_LedBryterKort();
- skrivTilLeds(~0); //slukker lysene
- TCCR1B = (1<<CS12) | (1<<CS10); //Enable counter1 set prescaler 1024
- TCNT1=0;
- while(1) // Koden får telleren til å starte/stoppe ved hvert trykk.
- {
- if (PD2_ER_TRYKKET)
- {
- _delay_ms(150); //Sett ein delay før koden utførast pga. følsomheten til knappen. Ett trykk kan registrerast som fleire trykk.
- //Med delay på 150ms vil fleire trykk innanfor perioden ikkje registrerast.
- if(TCCR1B==0) //Om klokkeregisteret er lik 0 så:
- TCCR1B = (1<<CS12) | (1<<CS10); //setter klokka til syscly/1024
- else
- TCCR1B=0; //stopper klokka
- }
- skrivTilLeds(~(TCNT1>>8));
- }
- }