Adressierung

bubu

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe eine Aufgabe und ich wiess nicht wie kann ich die Aufgabe machen. Ich bittte um Hilfe.

AUFGABE: Durch Eingabe einer Integerzahl soll das entsprechende Bit in einem Datenbaustein gestezt werden.

Ich habe schon etwas mit ANY-Zeiger probiert aber konnte nichts machen.

Vielen Dank!
 
dafür sollte ein gewöhnlicher pointer reichen

wie groß ist denn das anzusprechende feld?
übergibst du byte und bit getrennt oder ist DBX4.7 einfach das 40. bit?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Welches Bit?

In SCl könnte man's so machen:

Code:
FUNCTION FC177 : BOOL
TITLE = 'SetBitDB'
VERSION : '1.0'
AUTHOR  : kai
NAME    : SetBitDB
FAMILY  : xS7
VAR_INPUT
  IN : INT;
  Set : BOOL;
END_VAR
VAR_TEMP
    Bytezeiger : INT;
    Boolzeiger : INT;
END_VAR
  
BEGIN
Bytezeiger := IN / 8;
Boolzeiger := IN MOD 8;
IF Set THEN
    DB10.DBX[Bytezeiger,Boolzeiger] := TRUE;
END_IF;
FC177 := FALSE;
END_FUNCTION
 
In SCl könnte man's so machen:

in awl dann äquivalänt so:

Code:
*
      L     #iBitNumber
      L     8
      /I    
      T     #iByte

      L     #iBitNumber
      L     8
      MOD   
      T     #iBit

      L     #iByte
      SLD   3
      L     #iBit
      +D    
      LAR1  

      AUF   #DbByNumber
      U     #xSet
      S     DBX [AR1,P#0.0]
aber verstehen mußtes selber :rolleyes: ...wobei hier 40 das bit 5.0 ist

so is schöner:

Code:
*
      L     #iBitNumber
      L     8
      /I    
      T     #dTemp

      L     P##dTemp
      LAR1  

      L     W [AR1,P#2.0]
      SLD   3
      L     W [AR1,P#0.0]
      +D    
      LAR1  

      AUF   #DbByNumber
      U     #xSet
      S     DBX [AR1,P#0.0]
:rolleyes:
 
Zuletzt bearbeitet:
Zurück
Oben