- SF800 Solar Speicher Tutorial         
Seite 5 von 5 ErsteErste ... 345
Ergebnis 41 bis 44 von 44

Thema: berechnungen...

  1. #41
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    Powerstation Test
    Jetzt hab ich den Bascom gequält (nur was für Erbsenzähler)

    Code:
    ' red0 = (boden_value_red0[2*i]*256 | boden_value_red0[2*i + 1]) >> 2;
    
    Dim Red0 As Word
    Dim Boden_value_red0(16) As Byte
    Dim I As Byte
    
    Dim X1 As Byte
    
       X1 = I * 2
       Red0 = Boden_value_red0(x1) * 256
       Incr X1
       Red0 = Red0 Or Boden_value_red0(x1)
       Shift Red0 , Right , 2
    
    End
    
    RED0                             Word              0060          96 
    BODEN_VALUE_RED0                 Byte (16)         0062          98 
    I                                Byte              0072          114 
    X1                               Byte              0073          115 
    
    
    ; X1 = I * 2
    	LDS	r16,0x0072	; r16 = i
    	LDI	r20,0x02	; r20 = "2"
    	MUL	r16,r20		; mul
    	LDI	XL,0x73
    	LDI	XH,0x00
    	ST	X,r0		; X1 
    
    ; red0 = tab (X1) * 256
    	LDI	XL,0x73		; X1
    	LDI	XH,0x00
    	LD	r10,X+		; 
    	CLR	r11		; 
    	LDI	XL,0x61		; 
    	LDI	XH,0x00
    	ADD	XL,r10
    	ADC	XH,r11		; tab[X1]
    
    	LD	r16,X+		; r16:r17 =  tab[X1]
    	CLR	r17
    	LDI	r20,0x00
    	LDI	r21,0x01	; r20:r21 = "256"
    	CALL	L_0x012E	; multiply
    	LDI	XL,0x60
    	LDI	XH,0x00
    	ST	X+,r16
    	ST	X,r17		; red0 = tab[i*2] * 256
    
    ; incr X1
    	LDI	XL,0x73
    	LDI	XH,0x00
    	LD	r24,X
    	SUBI	r24,0xFF
    	ST	X,r24
    
    ; red0 = red0 OR tab(x1)
    	LDI	XL,0x60		; 
    	LDI	XH,0x00
    	LD	r16,X+
    	LD	r17,X		; r16:r17 = red0
    
    	LDI	XL,0x73		; s.o.
    	LDI	XH,0x00
    	LD	r10,X+
    	CLR	r11
    	LDI	XL,0x61		; tab -offset
    	LDI	XH,0x00
    	ADD	XL,r10
    	ADC	XH,r11
    	LD	r20,X		r20:r21 = tab(i*2 + 1)
    	CLR	r21
    
    	OR	r16,r20
    	OR	r17,r21
    	LDI	XL,0x60
    	LDI	XH,0x00
    	ST	X+,r16		;red0
    	ST	X,r17
    
    
    ; shift red0, right, 2
    	LDI	r25,0x02	; = "2"
    	LDI	XL,0x60		; &red0
    	LDI	XH,0x00
    	CALL	L_0x0158	; shift right
    
    ;---------------END---------------
    	CLI
    
    L_0x00EA:
    	RJMP	L_0x00EA
    
    
    ;------------------- r16:r17 *= r20:r21 -----------
    L_0x012E:		
    	PUSH	r0
    	MUL	r16,r20
    	MOV	r2,r0
    	MOV	r3,r1
    	MUL	r20,r17
    	ADD	r3,r0
    	MUL	r21,r16
    	ADD	r0,r3
    	MOV	r16,r2
    	MOV	r17,r0
    	POP	r0
    	RET
    
    ;-------- shift  @(xL:xH)  right r25 times
    L_0x0158:
    	CPI	r25,0x00
    	BREQ	L_0x016C
    	LD	r16,X+
    	LD	r17,X
    L_0x0160:
    	LSR	r17
    	ROR	r16
    	DEC	r25
    	BRNE	L_0x0160
    	ST	X,r17
    	ST	-X,r16
    L_0x016C:
    	RET
    Also ganz brav, er verwendet zum Multiplizieren und zum Shiften Library-Functions. Brauch dadurch mehr platz, aber dann hat er das ein für alle Mal.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #42
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Er verwendet INT, weil das Zielfeld den Datentyp vorgibt.
    Da müßt man ein bißchen "Casten", könnte nützen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #43
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Uhh.. da haben wir wieder den guten alten Vergleich
    Bascom - C - ASM
    Das hat noch nie zu einem eindeutigen Ergebnis geführt.

    Aber was solls, ich bin auch mit Schuld...

    Gruß Jan

  4. #44
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Genau. Was gibt er keine Ruhe.
    Für jede Sprache gibt's Fans, und alle rufen jetzt "gewonnen"
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 5 von 5 ErsteErste ... 345

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress