adept_avr napisał: $regfile = "attiny13.dat"
$crystal = 1200000 'częstotliwość taktowania
..............
Czy kod jest poprawny? Mam pewne wątpliwości. Chciałbym aby przerwanie było wykonywane np. co 5 sekund a pętla główna była sprawdzana cały czas.
Nie, ten kod nie ma szans na kompilację, a nawet jeśli udałoby ci się go skompilować to jego działanie byłoby bardzo daleko od oczekiwanej poprawności.
1. Każda warunkowa dyrektywa
"If....then ,
(else...)"
musi być zakończona
"End if"
W twoim kodzie tego nie przestrzega się.
2. Nie możesz wszystkich dyrektyw wpisywać w jednej linii. Kod dla kompilacji nie jest nowelą pisaną "prozą". Tu wymagane są pewne reguły - "SYNTAX" - zaglądnij do przykładów umieszczonych w HELP lub "Manual".
3. Rachunki nie zgodne z prawda, np. przy taktowaniu 1.2 MHz, prescale = 8, ;
dla odliczenia 1 msec przez Timer0, Const Div_t0 powinna równać się 150 a nie 125.
Jakiekolwiek operacje w przerwaniach nie powinny zawierać dodatkowych nowych pętli, lecz o ile to możliwe ograniczać się do nie wielkiej ilości wzglednie prostych działań.
4. Jeżeli chcesz aby pewne czynności (np. pomiar temperatury) były powtarzane w innych odstępach czasu niż zwykła kolejność w pętli głównej programu, to tez je umieścisz w pętli głównej z warunkiem flagowym, a po ich wykonaniu, flagę zwyczajnie zerujesz.
Flaga byłaby stawiana po zliczeniu np. 5000 ms (5 sec) w etykiecie Int_t0:
5. Używasz w programie ADC0;
- czy nie zauważyłeś że jest to pin normalnie pełniący funkcje RESET?
- a może to tak ma być - bez RESET (?)
To tylko niektóre uwagi rzucające się na wstep.
e marcus