Forum: Mikrocontroller und Digitale Elektronik Was soll das bedeuten?


von Ron N. (blitzgeist)


Lesenswert?

Hi,

kann mir jemand erklären warum es hier einen Unterschied im disassembly 
listing gibt?

.
.
.

a = Eingang1 (zb Port A0)

b = Eingang2 (zb Port C2)

.
.
.

Das dazugehörige disassembly listing

.
.
.
1
a =  Eingang1; 
2
  5204    5080     MOVF 0xf80, W, ACCESS
3
  5206    0B01     ANDLW 0x1
4
  5208    0100     MOVLB 0
5
  520A    6FE0     MOVWF 0xe0, BANKED
6
7
b =  Eingang2;
8
  5216    5082     MOVF 0xf82, W, ACCESS
9
  5218    0B04     ANDLW 0x4
10
  521A    E001     BZ 0x521e
11
  521C    0E01     MOVLW 0x1
12
  521E    0100     MOVLB 0
13
  5220    6FE0     MOVWF 0xe0, BANKED

Ich verstehe da soweit alles, nur den Sinn und Zweck der zwei Zeilen 
nicht
1
 5218    0B04     ANDLW 0x4
2
 521A    E001     BZ 0x521e

Kann mir jemdand das erklären, was sich der Compiler dabei gedacht hat?
PIC18F2250, C18 Compiler.

lg,
blitzgeist

von Dieter Werner (Gast)


Lesenswert?

Das Ergebnis in a bzw. b ist ein boolscher Wert, also 0 oder 1.

Wenn Du Bit 0 einliest enthält das wreg nach dem ANDLW 0x1 schon den 
richtigen Wert.

Bei dem zweiten Beispiel steht aber nach dem ANDLW 0x4 entweder 0 oder 4 
im wreg, bei 4 wird MOVLW 0x1 ausgeführt und bei 0 wird es übersprungen.
Als Folge enthält wreg dann auch wieder 0 oder 1.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.