Witam,
Od jakiegos czasu ucze sie programowac procki AT89CX051, oczywiscie pierwszym ukladem byl prosty projekt plytki z diodami ktorymi procek migal zgodnie z wpisanym programem. Teraz chcialbym program rozbudowac o "ingerencje" uzytkownika. Dodalem dwa mikrostyki ktorymi chcialbym zmniejszac i zwiekszac czas "migniec". Styki podlaczone sa do pinow 6 (3.2) - wydluzenie czasu, i 7 (3.3) - skrocenie czasu. Stworzylem nastepujacy programik :
$regfile = "89C2051.DAT"
$crystal = 12000000
Dim Op As Byte
Led_1 Alias P1.7
Led_2 Alias P1.6
Led_3 Alias P1.5
Led_4 Alias P1.4
Led_5 Alias P1.3
Led_6 Alias P1.2
P1 = 255
Op = 1
Enable Interrupts
Enable Int0
Enable Int1
On Int0 Szybciej
On Int1 Wolniej
Do
Reset Led_1
Wait Op
Set Led_1
Reset Led_2
Wait Op
Set Led_2
Reset Led_3
Wait Op
Set Led_3
Reset Led_4
Wait Op
Set Led_4
Reset Led_5
Wait Op
Set Led_5
Reset Led_6
Wait Op
Set Led_6
Loop
Szybciej:
If Op = 1 Then
Op = 2
End If
Decr Op
Return
Wolniej:
Incr Op
Return
Po uruchomieniu ukladu dioda swieci sekunde i wlaczana jest nastepna. Teoretycznie po zwarciu styku 6 i wywolaniu procedury "wolniej" czas powinien byc zwiekszony o 1, czyli dioda powinna swiecic 2 sekundy, a tymczasem okazuje sie ze swieci prawie 2 minuty. Podejrzewam ze inkrementacja dokonywana jest kilkadziesiat razy - tak dlugo jak wcisniety jest mikrostyk. Jak w takim razie zrobic aby jedno nacisniecie styku - nie wazne jak dlugie, powodowalo inkrementacje zmiennej dokladnie o 1 ?
Grzesiek
Od jakiegos czasu ucze sie programowac procki AT89CX051, oczywiscie pierwszym ukladem byl prosty projekt plytki z diodami ktorymi procek migal zgodnie z wpisanym programem. Teraz chcialbym program rozbudowac o "ingerencje" uzytkownika. Dodalem dwa mikrostyki ktorymi chcialbym zmniejszac i zwiekszac czas "migniec". Styki podlaczone sa do pinow 6 (3.2) - wydluzenie czasu, i 7 (3.3) - skrocenie czasu. Stworzylem nastepujacy programik :
$regfile = "89C2051.DAT"
$crystal = 12000000
Dim Op As Byte
Led_1 Alias P1.7
Led_2 Alias P1.6
Led_3 Alias P1.5
Led_4 Alias P1.4
Led_5 Alias P1.3
Led_6 Alias P1.2
P1 = 255
Op = 1
Enable Interrupts
Enable Int0
Enable Int1
On Int0 Szybciej
On Int1 Wolniej
Do
Reset Led_1
Wait Op
Set Led_1
Reset Led_2
Wait Op
Set Led_2
Reset Led_3
Wait Op
Set Led_3
Reset Led_4
Wait Op
Set Led_4
Reset Led_5
Wait Op
Set Led_5
Reset Led_6
Wait Op
Set Led_6
Loop
Szybciej:
If Op = 1 Then
Op = 2
End If
Decr Op
Return
Wolniej:
Incr Op
Return
Po uruchomieniu ukladu dioda swieci sekunde i wlaczana jest nastepna. Teoretycznie po zwarciu styku 6 i wywolaniu procedury "wolniej" czas powinien byc zwiekszony o 1, czyli dioda powinna swiecic 2 sekundy, a tymczasem okazuje sie ze swieci prawie 2 minuty. Podejrzewam ze inkrementacja dokonywana jest kilkadziesiat razy - tak dlugo jak wcisniety jest mikrostyk. Jak w takim razie zrobic aby jedno nacisniecie styku - nie wazne jak dlugie, powodowalo inkrementacje zmiennej dokladnie o 1 ?
Grzesiek