Naja, Althirsch, weiß nicht, wo du da hängenbleibst ?
Code:
const bufsize = nn
DIM buffer(bufsize] as byte
DIM Wrindex AS BYTE
DIM Rdindex AS BYTE

    Wrindex = 1
    Rdindex = 1





reinschreiben:
    buffer(Wrindex) = 1.byte
    gosub Incr_wrindex
    buffer(Wrindex) = 2.byte
    gosub Incr_wrindex
    buffer(Wrindex) = 3.byte
    gosub Incr_wrindex
    return




Incr_wrindex:
    incr Wrindex
    if Wrindex > bufsize then 
       wrindex = 1
    end if
    return


rauslesen:
    if Rdindex = Wrindex then 
           is_nix_da
    else
          1.byte = buffer(Rdindex)
          gosub Incr_rdindex
          2.byte = buffer(Rdindex)
          gosub Incr_rdindex
          3.byte = buffer(Rdindex)
          gosub Incr_rdindex
   end if
   return




Incr_rdindex:
    incr rdindex
    if rdindex > bufsize then 
       rdindex = 1
    end if
    return
Ist die Grundform. wenn "bufsize" ein vielfaches von 3 ist, kann man auch ein bißchen sparen
Zu klären ist beim reinschreiben, ob überhaupt Platz ist und beim lesen, was is, wenn nix da ist.

Kommt auf die Anwendung an.

In C ist das genauso, nur daß Wrindex und Rdindex von 0 beginnen.


Für C gibts beispiele in unserer Wiki
https://www.roboternetz.de/wissen/in...FO_mit_avr-gcc