Ich nehme mal an, dass diese Funktion irgendwo mit
Declare Function ReadBus () as Byte
deklariert ist.
Warum Du das B-Port mitauf Input stellst, ist nicht ersichtlich. Das C-Port wird mitDdrb = &B00000000für die Pins 2-7 auf Output und die Pins 0-1 auf Input gestellt.Ddrc = &B11111100
Im nachfolgenden Code scheinst aber alle 8 vom Port C eingelesenen Bits auszuwerten.
Und nun zu Deiner eigentlichen Fragestellung.
Einen Funktionswert kann Du auf folgende Weise:
loadadr readbus, X
st X, r16
zurückgeben. Das obige Beispiel ist für den Fall, dass ReadBus einen Rückgabewert vom Type BYTE hat.
Du kannst den Funktionsnamen wie einen Variablennamen mit loadadr verwenden.
Ich gehe mal davon aus, dass diese Funktion primär einen experimentellen Charakter hat, um diverse Möglichkeiten zu testen. Befasse Dich mal mit dem Bascom Simulator, damit kannst Du Schritt für Schritt verfolgen, was in den einzelnen Registern und Speicherstellen passiert. Damit kannst Du nach herzenslust experimentieren, weil Du auch während der Simulation die Input-Pins im Pegel verändern kannst.
Lesezeichen