Bit als "Eram/Sram oder Iram Bit" speichern

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Bit als "Eram/Sram oder Iram Bit" speichern

      Moin!
      Wie lege ich ein einzelnes Bit im Eram ab?
      In solchen Fällen habe ich mir bisher immer damit geholfen , daß ich im Hauptprogramm ein bit in ein Hilfsbyte kopiert habe, um das Hilfsbyte dann als Eram Byte abzuspeichern.
      Kann man das Bit nicht DIREKT im Eram ablegen? Folgender Code funktioniert. Nach dem Neustart leuchtet die LED oder nicht- je nachdem wie sie zuvor getogglet wurde.
      Wie erspare ich mir nun den Umweg über Bit-->> byte--> Byte Eram? Ich will Bit--> Bit Eram!


      $regfile = "m328pdef.dat"
      $crystal = 16000000
      $hwstack = 100
      $swstack = 100
      $framesize = 100
      Ddrd = &B11101111
      Ddrb = &B11111111
      Ddrc = &B11111111
      led alias portb.0
      Taster Alias Pind.4
      config debounce = 20
      dim LED_eram as eram byte
      Portd.4 = 1

      if led_eram > 1 then
      led= 1
      else
      led= 0
      end if

      do
      Debounce Taster , 0 , Led_check , Sub
      Loop

      led_check:
      toggle led
      if led= 1 then
      led_eram=2
      else
      led_eram = 1
      end if
      Return
    • Eram-Variablen können keine Bits speichern, da gehen nur ganze Bytes. Wenn du einzelne Bits im EEProm speichern willst kannst du das nur über einen Umweg machen

      BASCOM-Quellcode

      1. Dim A As Bit, B As Bit
      2. Dim Flags As Byte
      3. Dim E_flags As Eram Byte
      4. Flags.0 = A
      5. Flags.1 = B
      6. 'usw...
      7. E_flags = Flags
      Vielleicht hilft dir das schon weiter.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • @djmsc
      Ich würde sogar noch einen Schritt weiter gehen und den Umweg über die Bitvariablen A und B sparen. Es gibt nur zwei Bytes: Das Sram-Byte und das namensgleiche Eram-Byte mit Prefex EE_ zum Beispiel. Der Zugriff im Programm auf die einzelnen Bits dann per alias.

      Quellcode

      1. dim LED as byte
      2. dim EE_LED as eram byte
      3. LED_Rot alias LED.0
      4. LED_Gelb alias LED.1
      5. LED_Gruen alias LED.2
      6. if LED_Rot = 1 then
      7. reset LED_Gelb
      8. reset LED_Gruen
      9. endif
      10. EE_LED = LED
      Alles anzeigen
      Über die alias können die einzelnen Bits dann per if...then abgefragt und per set/reset manipuliert werden. Leider geht mit den alias keine Zuweisung einer Bit-Operation wie and, or, xor. Bei deiner Version mit den Bit-Variablen geht das natürlich.