drehzahl: inc drehc cpi drehc, 1 brne drehzahl1 in r16,icr1l sts step1l,r16 in r16,icr1h sts step1h,r16 rjmp ende drehzahl1: cpi drehc, 2 brne ende in r16,icr1l in r17,icr1h lds r24,step1l lds r25,step1h sub r16,r24 sbc r17,r25 mov cl,r16 mov ch,r17 rcall step_to_rpm sts canal1l,dl sts canal1h,dh drehzahl2: ldi r16,0x00 out tcnt1h, r16 out tcnt1l, r16 clr drehc ende: reti ;------------------------------------------------------------------------------ ;rpm= const/step ; ;const=clock*2*60/VorteilerTimer ;const=10000000*60/2/64=4687500 (Hex:47 86 8c); ;Timersteps in cl und ch legen ;Ergebnis in al, ah step_to_rpm: ldi r16, 0x8c mov al, r16 ldi r16, 0x86 mov ah, r16 ldi r16, 0x47 mov bl, r16 rcall div24_16 ;------------------------------------------------------------------------------ div24_16: ldi r16, 24 mov bh, r16 clr dh mov dl, dh loop24: lsl al rol ah rol bl rol dl rol dh cp dl, cl cpc dh, ch brlo skip24 sub dl, cl sbc dh, ch inc al skip24: dec bh brne loop24 ret ;------------------------------------------------------------------------------