ldi adresse,0x00 rcall eeprom_read mov temp3,daten aendern: passwortrichtig: ;Entprellen sbis pinc, 2 rjmp aendernfertig sbic pinc, 3 rjmp passwortrichtig rcall delay25ms sbic pinc, 3 rjmp passwortrichtig inc temp3 ;um eins erhöhen ldi temp1,0b01111001 ;bei 120 wieder auf Null setzen cp temp1,temp3 breq bei120 rjmp nicht120 bei120: ldi temp3,0x00 nicht120: mov r30,temp3 ldi r31,0x00 rcall to_ascii locate 2,15 mov temp1,r19 rcall lcd_data locate 2,14 mov temp1,r20 rcall lcd_data locate 2, 13 mov temp1,r21 rcall lcd_data ldi temp1,0x00 ;anstatt null unendlich->unbergrenzt cp temp1,temp3 breq null rjmp nichtnull null: ldi temp1,0b11110011 locate 2,15 rcall lcd_data nichtnull: rjmp aendern aendernfertig: sbic pinc, 2 ;entprellen rjmp aendernfertig rcall delay25ms sbic pinc, 2 rjmp aendernfertig ldi adresse,0x00 mov daten,temp3 rcall eeprom_write rjmp abgerneu1 ;*********************************************************************************** to_ascii: ldi r22, -1 + '0' _bcd7: inc r22 subi r23, low(1000) ;-1000 sbci r24, high(1000) brcc _bcd7 ldi r21, 10 + '0' _bcd8: dec r21 subi r23, low(-100) ;+100 sbci r24, high(-100) brcs _bcd8 ldi r20, -1 + '0' _bcd9: inc r20 subi r23, 10 ;-10 brcc _bcd9 subi r23, -10 - '0' mov r19, r23 ret