out_number: push temp push temp1 ldi temp2, -1 ; Die Tausenderstelle bestimmen _out_tausend: inc temp2 subi temp, low(1000) ; -1000 sbci temp1, high(1000) brcc _out_tausend ldi ZL, low(2*Codes) ; fuer diese Ziffer das Codemuster fuer ldi ZH, high(2*Codes) ; die Anzeige in der Codetabelle nachschlagen add ZL, temp2 lpm sts Segment3, r0 ; und dieses Muster im SRAM ablegen ; die OvI Routine sorgt dann duer die Anzeige ldi temp2, 10 _out_hundert: ; die Hunderterstelle bestimmen dec temp2 subi temp, low(-100) ; +100 sbci temp1, high(-100) brcs _out_hundert ldi ZL, low(2*Codes) ; wieder in der Codetabelle das entsprechende ldi ZH, high(2*Codes) ; Muster nachschlagen add ZL, temp2 lpm sts Segment2, r0 ; und im SRAM hinterlassen ldi temp2, -1 _out_zehn: ; die Zehnerstelle bestimmen inc temp2 subi temp, low(10) ; -10 sbci temp1, high(10) brcc _out_zehn ldi ZL, low(2*Codes) ; wie gehabt: Die Ziffer in der Codetabelle ldi ZH, high(2*Codes) ; aufsuchen add ZL, temp2 lpm sts Segment1, r0 ; und entsprechend im SRAM ablegen _out_einer: ; bleiben noch die Einer subi temp, low(-10) ; +10 sbci temp1, high(-10) ldi ZL, low(2*Codes) ; ... Codetabelle ldi ZH, high(2*Codes) add ZL, temp lpm sts Segment0, r0 ; und ans SRAm ausgeben pop temp1 pop temp ret