Przykład dla BYTEMATCH.
Kod: Zaznacz cały
'...
Config Serialin=20 , Bytematch=13
Dim Event As Byte , Zmienna_tekstowa As String * 20
'...
Event = 0
Enable Interrupts
'...
Do
'...
If Event>0 Then
Input Zmienna_tekstowa
Cli 'Disable interrupts
Decr Event
Sei 'Enable Interrupts
End If
'...
Loop
' poniżej , procedura(user label wspomniany w helpie)
' wywoływana przez przerwanie RX ,
' gdy znak odczytany z rejestru szeregowego ,
' jest równy z zadeklarowanym w opcji Bytematch
Serial0charmatch: 'po odebraniu znaku Chr(13) zwiększenie licznika lini(zdarzeń)
'Incr Event
'lub
lds r24,{event}
inc r24
sts {event},r24
ret
Powyższym sposobem , nie muszę czekać w instrukcji Input na odebranie ciągu znaków zakończonych 13 (1 linia tekstu z modemu C35i) , tylko odczytuję , kiedy wiem że już mogę
Niby istnieje opcja $Timeout , ale po co marnować czas procka
Podobnych "bajerów" jest więcej w Bascomie , tylko trzeba umieć czytać Helpa między wierszami , a znajomość assemblera jest dodatkowym atutem(zaglądanie do plików *.lib)
Piotrek
PS
Jeden obraz , za jeden tysiąc słów