Hallo Freunde.
Wirklich keine Ahnung, woran es lag, aber jetzt plötzlich funktioniert die Variablendeklaration eines Ports. Hier der funktionsfähige Code eines Testprogramms:
Code:
$regfile = "m8515.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
'-------------------------------------------------------------------------------
' *** Konfiguriere Ein- und Ausgangsports ***
Config Porta = Input
Config Portb = Output
Porta = &HFF ' Aktiviert die internen Pullup-Widerstände
Portb = &HFF ' schaltet alle Ausgänge 1, LED = 0
Portc = &HFF
Portd = &HFF
'-------------------------------------------------------------------------------
' *** Deklarieren der Variablen ***
Dim Zaehler As Byte
'-------------------------------------------------------------------------------
' *** Deklarieren der Subroutinen ***
Declare Sub Test_1
Declare Sub Test_2
'-------------------------------------------------------------------------------
' ===============================
' ***** Hauptprogramm *****
' ===================================
Do
Zaehler = Pina
Select Case Zaehler
Case &B11111110 : Call Test_1
Case &B11111101 : Call Test_2
End Select
Loop
Sub Test_1:
Toggle Portb.2
Waitms 200
End Sub Test_1
Sub Test_2:
Toggle Portb.4
Waitms 200
End Sub Test_2
End
Es funktioniert sogar so gut, dass ich nun auch vermutlich den vermeintlichen "Fehler" bei der Timer-Steuerung gefunden habe. Das Programm läuft ja immer wieder ab, solange die Bedingung an den Eingängen TRUE ist. Bei älteren, ersten Programmversuchen hatte ich immer das Problem, dass das Programm nur solange lief, wie die ISR bestand. Am Ende der ISR wurde die Bedingung aber nicht erneut geprüft, sondern das Programm hielt einfach an. Dadurch musste ich While-Wend-Schleifen einbauen, um damit das Programm die ISR immer wieder durchlief.
Eröffnet mir nun viele neue Möglichkeiten. Wenn ich Probleme dabei habe, melde ich mich sofort wieder.
Danke euch beiden.
LG - Maik
Lesezeichen