
Zitat von
oderlachs
Danke JoeamBerg , wieder was dazugelernt ...
Ich freu mich ja, wenn ich mal denke, dass ich irgendetwas weiß. Und Du wusstest das ja auch schon mal.
Im Übrigen ist es nicht so ganz nachvollziehbar, was der Threadersteller meint mit
... benutze ja keine RISC-MCU, um sie dann mit ungeschicktem Code zu kastrieren ...
... denn in meinem PingPong in C habe ich ja in word-variablen bitweise geschaltet. Das geht recht easy, auch wenn das Compilat dann ein paar Zeilen mehr macht - was solls.
Hier meine Bitoperation im Word-Feld:
Code:
L[rPr] |= ((uint16_t)1<<4); // Setze LEDBit rPr (rechtes Poti)
Im Einzelnen läuft das so:
Code:
...
volatile uint16_t L[20]; // LED-Reihe 1 bis 10, Rest ist Dummy
...
// Aus dieser Codezeile
L[rPr] |= ((uint16_t)1<<4); // Setze LEDBit rPr (rechtes Poti)
// macht der Compiler dann diesen Maschinencode
L[rPr] |= ((uint16_t)1<<4); // Setze LEDBit rPr (rechtes Poti)
404: e0 91 b0 00 lds r30, 0x00B0
408: f0 e0 ldi r31, 0x00 ; 0
40a: ee 0f add r30, r30
40c: ff 1f adc r31, r31
40e: ef 54 subi r30, 0x4F ; 79
410: ff 4f sbci r31, 0xFF ; 255
412: 80 81 ld r24, Z
414: 91 81 ldd r25, Z+1 ; 0x01
416: 80 61 ori r24, 0x10 ; 16
418: 91 83 std Z+1, r25 ; 0x01
41a: 80 83 st Z, r24
Lesezeichen