Witam...
Mam taki problem...
Musze zaprogramować stoper w AVR Studio...
Napisałem juz głowny program do odliczania czasu ale nie wiem jak mam
obsłużyć przycisk do zatrzymywania odliczania...
Napisałem formułę obsługującą ale ona działa tylko wtedy gdy cały czas trzymam wciśnięty przycisk... Gdy go puszczę czas leci dalej...
I mam teraz taka prośbę... Czy ktoś wie ?
Jak powinna wyglądać formuła, która zatrzymywała by odliczanie czasu po wciśnięciu i puszczeniu przycisku? Tak jak w zwykłym stoperze...
Co powinienem jeszcze dopisać?
Ewentualnie jakaś podpowiedź jak by to mogło może wyglądac inaczej bo to akurat jest moja wersja i pewnie nie jest doskonała
Kod programu:
Post raportowany,
należy stosować znacznik code.
And!
Mam taki problem...
Musze zaprogramować stoper w AVR Studio...
Napisałem juz głowny program do odliczania czasu ale nie wiem jak mam
obsłużyć przycisk do zatrzymywania odliczania...
Napisałem formułę obsługującą ale ona działa tylko wtedy gdy cały czas trzymam wciśnięty przycisk... Gdy go puszczę czas leci dalej...
I mam teraz taka prośbę... Czy ktoś wie ?
Jak powinna wyglądać formuła, która zatrzymywała by odliczanie czasu po wciśnięciu i puszczeniu przycisku? Tak jak w zwykłym stoperze...
Co powinienem jeszcze dopisać?
Ewentualnie jakaś podpowiedź jak by to mogło może wyglądac inaczej bo to akurat jest moja wersja i pewnie nie jest doskonała
Kod programu:
#include "czas.h"
#include "harddef.h"
#include "makra.h"
#include "znaki.h"
#include <avr/delay.h>
uint8_t jednostki_msekund = 0, dziesiatki_msekund = 0,
jednostki_sekund = 0, dziesiatki_sekund = 0,
bufor1;
if(!(PIN(SW) & 1<<SW_1))
{ - obsluga przycisku
}
else
void akt_czas(void){
jednostki_msekund++;
if(jednostki_msekund == 10)
{
jednostki_msekund = 0;
dziesiatki_msekund++;
if(dziesiatki_msekund == 10)
{
dziesiatki_msekund = 0;
jednostki_sekund++;
if(jednostki_sekund == 10)
{
jednostki_sekund = 0;
dziesiatki_sekund++;
if(dziesiatki_sekund == 10)
{
dziesiatki_sekund = 0;
}
}
}
}
}
void pokaz_czas(void){
PORT(SEG) = 1<<SEG_1 | 1<<SEG_2 | 1<<SEG_3 | 1<<SEG_4;
AktWysw++;
switch(AktWysw){
case 1:
{
PORT(LED)= Liczby[jednostki_msekund];
PORT(SEG) = WSeg[3];
break; // opuść instrukcję switch
}
case 2:
{
PORT(LED)= Liczby[dziesiatki_msekund];
PORT(SEG) = WSeg[2];
break;
}
case 3:
{
PORT(LED)= Liczby[jednostki_sekund];
PORT(SEG) = WSeg[1];
break;
}
case 4:
{
PORT(LED)= Liczby[dziesiatki_sekund];
PORT(SEG) = WSeg[0];
break;
}
case 5:
{
AktWysw=0;
break;
}
}
}
void zerowanie(void){
jednostki_msekund = 0;
dziesiatki_msekund = 0;
jednostki_sekund = 0;
dziesiatki_sekund = 0;
}Post raportowany,
należy stosować znacznik code.
And!