
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
' =========================================================================== ' Demoprogramm: Die ANZAHL Elemente zweier BYTE-Felder vergleichen ' In OCBASIC 1.12a_e1 von Dietmar Harlos am 23. Dezember 2023 ' =========================================================================== ' Dieses Beispielprogramm demonstriert Zeiger, Felder und Arrays auf der OM. ' --- Definitionen ---------------------------------------------------------- 'INCLUDE "om.def" 'Definitionen für Open-Micro & Open-Mini 'INCLUDE "omid.def" 'Definitionen für Open-Midi 'INCLUDE "omac.def" 'Definitionen für Open-Macro INCLUDE "omax.def" 'Definitionen für Open-Maxi DIM bitarray BYTE 'ein Bitarray DIM debug BIT[1] OF bitarray 'ist HIGH, wenn Debugging aktiv DIM gleich BIT[2] OF bitarray 'ist HIGH, wenn Elemente gleich DEFINE ANZAHL 8 'Anzahl der Elemente der Felder DIM a,b,c,i,j BYTE 'temporäre Bytevariablen DIM a0,a1,a2,a3,a4,a5,a6,a7 BYTE '1. BYTE-Feld mit ANZAHL Elementen DIM b0,b1,b2,b3,b4,b5,b6,b7 BYTE '2. BYTE-Feld mit ANZAHL Elementen DIM ^s BYTE 'Zeiger auf ein BYTE im USER-RAM DIM ^d BYTE 'Zeiger auf ein BYTE im USER-RAM ' --- Hauptprogramm --------------------------------------------------------- PrintSpc=ON 'Bei PRINT dezimale Zahlen mit führendem Leerzeichen ausgeben End2Host=ON 'Bei Programmende (siehe END) gleich in den Host-Modus wechseln ' Titel: PRINT "Felder vergleichen" PRINT "==================" ' Initialisierungen: debug=ON 'OFF ' Beispieldaten: a0=12:a1=24:a2=11:a3=10:a4=9:a5=23:a6=12:a7=9 b0=12:b1=24:b2=11:b3=10:b4=9:b5=23:b6=12:b7=9 ' Das Hauptprogramm: IF debug THEN ?:?"1. Feld auf Serieller Schnittstelle ausgeben:"; s=^a0 FOR a=1 TO ANZAHL ?@s; ADD s,1 NEXT a ? END IF IF debug THEN ?:?"2. Feld auf Serieller Schnittstelle ausgeben:"; s=^b0 FOR a=1 TO ANZAHL ?@s; ADD s,1 NEXT a ? END IF ?:?"Die beiden Felder sind "; IF NOT(FeldVergleich(^a0,^b0)) THEN 'Vergleichsfunktion aufrufen ?"un"; END IF ?"gleich." ?:?"Programmende." END 'Zurück in den Hostmodus. Neustart mit RETURN-Taste. ' --- Subroutinen und Funktionen -------------------------------------------- ' Die Felder vergleichen. Jedes hat ANZAHL Elemente. ' Aufruf mittels FeldVergleich(^a0,^b0). ' Rückgabe: TRUE bei Gleichheit, FALSE wenn ungleich. FUNCTION FeldVergleich (s,d) 'COMPILE gleich=TRUE FOR a=1 TO ANZAHL IF @s<>@d THEN gleich=FALSE 'ein Element vergleichen ADD s,1 'Zeiger inkrementieren ADD d,1 NEXT a RETURN gleich END FUNCTION ' --- Programmende --------------------------------------------------------- Passender Link: Infosite zu den OM-Mikrocontrollern Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |