Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Demoprogramm: Die ANZAHL Elemente zweier BYTE-Felder vergleichen Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 23.12.2023 19:24)
Dietmar nutzt:  Open-Micro, Open-Mini, Open-Midi, Open-Macro, Open-Maxi, Open-Mini Station
' ===========================================================================
' 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
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

Bisherige Antworten:

Demoprogramm: Felder aus Tabellen lesen (von Christian - 13.01.2024 16:17)
    Re: Demoprogramm: Felder aus Tabellen lesen (von Dietmar - 13.01.2024 16:30)
        Re: Demoprogramm: Felder aus Tabellen lesen (von Christian - 13.01.2024 19:54)
            Re: Demoprogramm: Felder aus Tabellen lesen (von Dietmar - 13.01.2024 20:21)