Der Taster ist ja an nem Pin Deines µC angeschlossen.
Du musst dann einfach nur den Pin bzw. Port als Eingang
definieren, Per Bascom Befehl Config PortX.Y = Input
und dann in Deinem Programm den Status des Pinregisters
abfragen ( If PinX.Y = 1 then ). Aber Vorsicht ist geboten ... Tasten prellen,
du musst also entweder hardwaremäßig dafür sorgen, das
die Taste das nichtmehr macht oder in der Software
entprellen. Bascom Hilfe siehe Debounce.
Im Fall von Deinem Programm ists so, das das PRellen
durch den 1 Sekunden Abfragetakt vernachlässigt werden kann.
Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Timer0 = Timer , Prescale = 64
Start Timer0
Enable Timer0
Enable Interrupts
On Timer0 Timer0_isr
Config Portb.0 = Output
Config Portb.0 = Output
Config Pinc.0 = Input
Config Portb.1 = Output
Config Portb.4 = Output
Config Pinc.2 = Input
Portc.0 = 1
Portc.2 = 1
Dim Intzaehler As Byte
Dim Zehntelsek As Byte
Dim Sekunde As Byte
Dim Minute As Byte
dim sec_counter as word
ausgang alias Portb.1
taste alias Pinc.2
Led3 Alias Portb.4
Do
Loop
Timer0_isr:
Tcnt0 = 194
incr Intzaehler
If Intzaehler > 25 Then
Zehntelsek = Zehntelsek + 1
If Zehntelsek > 9 Then
Zehntelsek = 0
End If
If Zehntelsek > 9 Then
Zehntelsek = 0
Sekunde = Sekunde + 1
gosub tastenabfrage
End If
If Sekunde > 59 Then
Sekunde = 0
Minute = Minute + 1
End If
If Minute > 4 Then
Minute = 0
End If
Intzaehler = 1
End If
Return
End
tastenabfrage:
if taste = 1 then
if sec_counter < 301 then
sec_counter=302
else
sec_counter=0
endif
endif
if sec_counter < 301 then ' 300 Sekunden nicht erreicht
incr sec_counter
toggle led3 ' Tu halt irgendwas
else
led3=0 ' Schalts wieder ab
endif
return
end
Lesezeichen