


| Im Datenteil des
Source-Codes : ORG 1000H ; WF00, CH1 db 0x00,0x00,0x01,0x2C db 0x27,0x10,0x07,0xD0 db 0x3A,0x98,0x00,0x00 db 0x4E,0x20,0x07,0xD0 db 0x75,0x30,0x01,0x2C db 0xFF,0xFF,0xFF,0xFF ORG 1100H ; WF00, CH2 db 0x00,0x00,0x09,0xC4 db 0x30,0xD4,0x09,0xC4 db 0x3A,0x98,0x01,0xF4 db 0x61,0xA8,0x01,0xF4 db 0x6B,0x6C,0x09,0xC4 db 0x75,0x30,0x09,0xC4 db 0xFF,0xFF,0xFF,0xFF ORG 1200H ; WF01, CH1 db 0xFF,0xFF,0xFF,0xFF ORG 1300H ; WF01, CH2 db 0xFF,0xFF,0xFF,0xFF ... |











![]() |
Beispiel für eine Korrektur
der Daten : Grün ist die erste Winkelhalbierende bis zu der der Bresenham funktioniet. Blau ist die gewünschte Gerade mit einer Steigung von z.B. m=2,4. Idee ist nun, das mit man dy durch dx teilt und das ganzzahlige Ergebnis notiert. Dies ist später die Schritthöhe p der Korrekturgerade. Die neue Gerade die Bresenham berechnen muss ist also dy=dy-n*p. Durch diesen Trick liegt die Gerade immer unter 45 Grad (hier die rote Linie) Nach dem berechnen eines neuen Schrittes wird dann bei jedem Schritt von x wieder x*p dazuaddiert. Diese additive Gerade ist hier gelb dargestellt. |
| Original-Code vom 16F876: Lb1 addwf Ones,f decf Tens,f btfss STATUS,CARRY goto Lb1 |
| musste beim 18F2550 dann lauten : Lb1 decf Tens,f addwf Ones,f btfss STATUS,CARRY goto Lb1 |