Hey Leute hab mal ne Frage!
Ich habe ein eigentlich fertiges Programm, jedoch möchte ich einen der Schalter per Interrupt abfragen, aber ich hab keinen Plan wie das gehen könnte!
Kann mir jemand helfen?? Brauch nen Code zum konfigurieren des Schalters (im Code ist er auf Pinb.4, muss natürlich dann auf portd gesetzt werden, das ist klar)
Also!! NOchmal, bitte kurz eine Code-Ergänzung übers Forum (oder die im Programm angegebene E-Mail-Adresse) schreiben!!Code:'################################################################################## '# # '# # '# Programmiert von: Andynformatics # '# Kontakt: siehe unten (Copyright-Informationen) # '# # '# # '# Um das Programm zum laufen zu bringen muss an Porta ein Display angeschlossen # '# werden, mit der folgenden Konfiguration: Pin 0 = DB7, Pin 1 = DB6, Pin 2 = DB5 # '# Pin 3 = DB4, Pin 4 = Enable2, Pin 5 = Enable1, Pin 7 = RS. # '# # '# Zudem muss an Port B an Pin 6 eine LED (LED1) und an Pin 4 ein Schalter be- # '# liebiger Art angeschlossen werden (nach Möglichkeit KEIN Taster!). # '# # '# An Port C an Pin 6 muss ein Schalter (nach Möglichkeit ein Keylock) ange- # '# schlossen werden. # '# # '# Zudem muss an Port D an Pin 6 eine LED (LED2) angeschlossen werden werden. # '# # '################################################################################## ' '---------------------------------------------------------------------------------- ' ' Allgemeine Konfigurationen ' Angaben zum Controller konfigurieren $regfile = "m32def.dat" $framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 16000000 $baud = 9600 '---------- 'Timer konfigurieren ' Timer1 konfigurieren für einen Halbsekunden-Takt Config Timer1 = Timer , Prescale = 256 Enable Timer1 Enable Interrupts On Timer1 Ueberlauf_timer1 Timer1 = 3036 '---------- ' Ports konfigurieren ' Port A konfigurieren ' Das LCD (an Port A) konfigurieren Dim ___lcdno As Byte Config Lcd = 40 * 4 Config Lcdpin = Pin , Db7 = Porta.0 , Db6 = Porta.1 , Db5 = Porta.2 Config Lcdpin = Pin , Db4 = Porta.3 , E2 = Porta.4 , E = Porta.5 Config Lcdpin = Pin , Rs = Porta.7 ' Grundgerüst des LCDs aufbauen ___lcdno = 0 Initlcd Cls Locate 1 , 1 Lcd "Keylock: gesperrt " Locate 2 , 1 Lcd "LED 1: aus " Cursor Off ___lcdno = 1 Initlcd Cls Locate 1 , 1 Lcd "LED 2: aus " Locate 2 , 1 Lcd "Uptime: " Cursor Off ' Port B konfigurieren ' Den Schalter für LED 1 an Pin 4 konfigurieren Config Pinb.4 = Input Portb.4 = 1 Schalter Alias Pinb.4 ' LED 1 auf Pin 6 konfigurieren Config Portb.6 = Output Ledgruen Alias Portb.6 ' Port C konfigurieren ' Keylock an Pin 6 konfigurieren Config Pinc.6 = Input Portc.6 = 1 Keylock Alias Pinc.6 ' Keylockvariable, ob erst Keylock grade ein-/ausgeschaltet wurde Dim Keylockvar As Bit ' Port D konfigurieren ' LED 2 an Pin 6 konfigurieren Config Portd.6 = Output Ledrot Alias Portd.6 '---------- ' Variablen deklarieren ' Variablen für den Uptime-Zähler deklarieren Dim Uptime As Integer Dim Uptime_counter As Bit ' Variablen für die Umrechnung der Uptime Dim Mysec As Integer Dim Mymin As Integer Dim Myh As Integer Dim Temp As Integer Dim Temp2 As Integer ' Ende der Konfigurationen ' '---------------------------------------------------------------------------------- ' ' Hauptprogramm Do ' Auf Keylock überprüfen ' Wenn Keylock aus ist Programm durchführen If Keylock = 1 Then ' Wurde Keylock grade eben eingeschaltet, dann ausgeben, das LED 2 ' blinkt und Keylock offen ist Außerdem Keylockvar auf true setzen If Keylockvar = 0 Then ___lcdno = 0 Locate 1 , 10 Lcd "offen " ___lcdno = 1 Locate 1 , 10 Lcd "blinkt " Cursor Off Keylockvar = 1 End If ' Überprüfen, ob Schalter an ist, wenn ja, LED 1 zum Leuchten bringen ' ansonsten LED 1 ausschalten, außerdem auf dem LCD ausgeben ob LED 1 ' an oder aus ist If Schalter = 0 Then Ledgruen = 1 ___lcdno = 0 Locate 2 , 10 Lcd "leuchtet " Cursor Off Elseif Schalter = 1 Then Ledgruen = 0 ___lcdno = 0 Locate 2 , 10 Lcd "aus " Cursor Off End If '------- ' Wenn Keylock an ist dann Alle LEDs ausschalten und ausgeben, dass Key- ' lock angeschaltet wurde Else If Keylockvar = 1 Then ___lcdno = 0 Locate 1 , 10 Lcd "gesperrt " Locate 2 , 10 Lcd "aus " ___lcdno = 1 Locate 1 , 10 Lcd "aus " Cursor Off Keylockvar = 0 End If Ledgruen = 0 Ledrot = 0 End If '----------------- 'Uptime errechnen und in den Variablen "Myh", "Mymin" und "mysec" spei- 'chern Temp2 = Uptime Myh = Temp2 / 3600 Temp = Myh * 3600 Temp2 = Temp2 - Temp Mymin = Temp2 / 60 Temp = Mymin * 60 Temp2 = Temp2 - Temp Mysec = Temp2 'Uptime ausgeben, jedoch bei Zahlen kleiner 10 eine führende 0 einsetzen. ___lcdno = 1 Locate 2 , 10 If Myh < 10 Then Lcd "0" ; Myh Else Lcd Myh End If Lcd ":" If Mymin < 10 Then Lcd "0" ; Mymin Else Lcd Mymin End If Lcd ":" If Mysec < 10 Then Lcd "0" ; Mysec Else Lcd Mysec End If Cursor Off Loop End ' Ende Hauptprogramm ' '---------------------------------------------------------------------------------- ' ' Definitionen von Timer-ISR und möglichen Funktionen ' ISR von Timer1 definieren Ueberlauf_timer1: ' Timer1 wieder zurücsetzen, damit GENAU eine halbe Sekunde gezählt wird Timer1 = 31250 ' Led 2 umschalten (im Halbsekundentakt) If Keylock = 1 Then If Ledrot = 0 Then Ledrot = 1 Elseif Ledrot = 1 Then Ledrot = 0 End If Else Ledrot = 0 End If ' Uptime bei jedem ZWEITEN Durchlauf um 1 erhöhen, da Timer ja im 2Hz und ' nicht im 1Hz-Modus läuft If Uptime_counter = 0 Then Uptime_counter = 1 Else Incr Uptime Uptime_counter = 0 End If Return '----------------- ' '---------------------------------------------------------------------------------- ' '################################################################################## '# # '# SUPPORT # '# # '# Bei Fragen bitte an Andynformatics wenden: admin@andynformatics.de.lv # '# # '################################################################################## '################################################################################## '# # '# © Andynformatics # '# (www.andynformatics.de.lv) # '# # '##################################################################################
Danke, im Voraus
-------------
Andy91







Zitieren


Lesezeichen