Hallo
Also ich bin ueberhaupt nicht mit den Routinen von Microchip begeistert.
bei mir Klappen die gar nicht ich komm nie auf mein gewuenschtes Ergebnis.
Ich hab mal die erste bei AN617 rausgesucht fuer 16/8Bit Dividierung und hab die erste Routine gewaehlt. (Ich hab auch schon mal andere Routinen benutzt bin dabei aber auch nie auf mein Ergebnis gekommen.)
Ich teil bei der Routine 1250 durch 250 ergebnis muesste 5 sein bekomm aber 4 heraus.Code:list p=16f873 ; list directive to define processor #include <p16f873.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_ON & _CPD_OFF ; '__CONFIG' directive is used to embed configuration data within .asm file. ; The lables following the directive are located in the respective .inc file. ; See respective data sheet for additional information on configuration word. ;***** VARIABLE DEFINITIONS w_temp EQU 0x20 ; variable used for context saving status_temp EQU 0x21 ; variable used for context saving AARGB0 EQU 0x22 AARGB1 EQU 0x23 ;geteil durch BARG EQU 0x24 BARGB0 EQU 0x25 BARGB1 EQU 0x26 ;Ergebnis REMB0 EQU 0x27 REMB1 EQU 0x28 LOOPCOUNT EQU 0x29 ;********************************************************************** ORG 0x000 ; processor reset vector clrf PCLATH ; ensure page bits are cleared goto main ; go to beginning of program ;Initialisierung ini movlw d'250' movwf BARG movlw 0xE2 movwf AARGB0 movlw 0x04 movwf AARGB1 return main call ini MOVF BARGB0,W SUBWF REMB0, F RLF AARGB0, F RLF AARGB0,W RLF REMB0, F MOVF BARGB0,W ADDWF REMB0, F RLF AARGB0, F MOVLW 6 MOVWF LOOPCOUNT LOOPS1608A RLF AARGB0,W RLF REMB0, F MOVF BARGB0,W BTFSC AARGB0,0 SUBWF REMB0, F BTFSS AARGB0,0 ADDWF REMB0, F RLF AARGB0, F DECFSZ LOOPCOUNT, F GOTO LOOPS1608A RLF AARGB1,W RLF REMB0, F MOVF BARGB0,W BTFSC AARGB0,0 SUBWF REMB0, F BTFSS AARGB0,0 ADDWF REMB0, F RLF AARGB1, F MOVLW 7 MOVWF LOOPCOUNT LOOPS1608B RLF AARGB1,W RLF REMB0, F MOVF BARGB0,W BTFSC AARGB1,0 SUBWF REMB0, F BTFSS AARGB1,0 ADDWF REMB0, F RLF AARGB1, F DECFSZ LOOPCOUNT, F GOTO LOOPS1608B BTFSS AARGB1,0 ADDWF REMB0, F NOP NOP NOP END ; directive 'end of program'
Ich hab schon mit mehreren Zahlen gerechnet aber nie auf irgend ein richtiges Ergebnis gekommen.
Koennte mir einer dabei weiterhelfen richtige Werte auszurechnen?? [-o<
Gruss Egg







Zitieren

Lesezeichen