Hallo, Ich benutze 2 LM75 in einer Schaltung die leider beim Eiswürfeltest 1,5 Grad anzeigen. Dies möchte ich in meiner Software kompensieren indem ich die 1,5 Grad abziehe. Die vom LM75 kommende Zahl ist im Zweierkomplement und 9 Bit breit. Wenn der LM nun 1 Grad anzeigt und ich ziehe 1.5 davon ab komme ich von positiv nach negativ. Habe also einen Overflow (dachte ich jedenfalls). Aber das V-Bit rührt sich nicht. Mein Code läuft mittlerweile, habe das anders gelöst. Trotzdem möchte ich gern wissen wie bvrs und brvc funktionieren. Die ASM Hilfe im Studio und das PDF von Atmel helfen net wirklich.
1 | BRVS – Branch if Overflow Set |
2 | Description: |
3 | Conditional relative branch. Tests the Overflow Flag (V) and branches relatively to PC if V is set. This instruction branches |
4 | relatively to PC in either direction (PC - 63 ≤ destination ≤ PC + 64). The parameter k is the offset from PC and is represented |
5 | in two’s complement form. (Equivalent to instruction BRBS 3,k). |
6 | Operation: |
7 | (i) If V = 1 then PC ← PC + k + 1, else PC ← PC + 1 |
8 | Syntax: Operands: Program Counter: |
9 | (i) BRVS k -64 ≤ k ≤ +63 PC ← PC + k + 1 |
10 | PC ← PC + 1, if condition is false |
11 | 16-bit Opcode: |
12 | Status Register (SREG) and Boolean Formula: |
13 | Example: |
14 | add r3,r4 ; Add r4 to r3 |
15 | brvs overfl ; Branch if overflow |
16 | ... |
17 | overfl: nop ; Branch destination (do nothing) |
18 | Words: 1 (2 bytes) |
19 | Cycles: 1 if condition is false |
20 | 2 if condition is tr |