Timothy B. schrieb:
> Leider steht dem PIC nur 8 bit Speicherplatz zur Verfügung
Eine Speicherzelle hat 8 bit, da es mehr als eine davon gibt sind es
viel mehr als 8 bit, bei deinem PIC 2048 mal 8 bit.
> und nun weiß ich nicht wie ich es hin bekomme diese 24Bit in einzelne
> Register zu speichern
In einzelne Register geht das nicht, du musst du 3 8-bit Zellen
verwenden.
> oder den zu benötigenden platz zu reservieren.
Das könnte z.B. so aussehen
1 | udata 0x20 ;oder welche Adresse auch immer
|
2 | result res 3
|
3 |
|
4 | ;....
|
5 |
|
6 | ; reult = 256 * DataH + DataL
|
7 | MOVFF DataH, result + 1
|
8 | MOVFF DataL, result
|
9 |
|
10 | ; result = result * 2
|
11 | CLRC
|
12 | RLCF result, f, a/b ; abhängig von der Adress access (a) RAM oder banked (b)
|
13 | RLCF result + 1, f, a/b
|
14 | RLCF result + 2, f, a/n
|
BTW: Quellcode kann man auch direkt im Text posten, da muss man keine
jpg mit Kompressionsartefakten verwenden.
Mit deinem Code wird das sowieso nichts, da du den MULWF befehl mMn
nicht verstanden hast:
1 | MULWF Multiply W with f
|
2 |
|
3 | An unsigned multiplication is carried
|
4 | out between the contents of W and the
|
5 | register file location ‘f’. The 16-bit
|
6 | result is stored in the PRODH:PRODL
|
7 | register pair. PRODH contains the
|
8 | high byte. Both W and ‘f’ are
|
9 | unchanged.
|
Und 256 ist in einer 8 bit Speicherzelle gleich 0.