ja moin leute
hab mal wieder ein problem... will mir einen binär zu bcd Wandler programieren. und jedes mal wenn ich jezz zb von einer 255 eine hundert abziehe wir das Carry- bzw Digit-carry- Flag gestetzt. kann mir jemand sagen wieso?
hier noch mein code...
wäre über jede antwort erfreut...Code:main clrf BCD_100er clrf BCD_10er clrf BCD_1er clrdc clrc btfss PORTA,0 goto main ;Lade variable die in BCD zu Wandeln ist. movlw D'255' movwf ZU_WANDELN ;Subtrahiere den wert mit 100 solange bis Ergebnis 0 ;wenn ja dann springe zu "weiter" sonst wiederhole ;bis ergebniss 0 Hunderter movlw D'100' subwf ZU_WANDELN,1 incf BCD_100er,1 bdc weiter goto Hunderter ;addiere den Wert 100 zur speicherzelle ;um wieder einen genauen wert zu habe weiter clrdc decf BCD_100er,1 movlw D'100' addwf ZU_WANDELN,1 clrc ;Subtrahiere den wert mit 10 solange bis Ergebnis 0 ;wenn ja dann springe zu "Zehner" sonst wiederhole ;bis ergebniss 0 Zehner clrdc movlw D'10' subwf ZU_WANDELN,1 incf BCD_10er,1 bdc go_on goto Zehner ;addiere den Wert 100 zur speicherzelle ;um wieder einen genauen wert zu habe go_on clrdc decf BCD_100er,1 movlw D'10' addwf ZU_WANDELN,1 ;Subtrahiere den wert mit 1 solange bis Ergebnis 0 ;wenn ja dann springe zu "Zehner" sonst wiederhole ;bis ergebniss 0 Einer movlw D'1' subwf ZU_WANDELN,1 incf BCD_1er,1 bdc Ausgeben goto Einer







Zitieren
Lesezeichen