list p=16f877 #include org 0x00 init bsf STATUS, RP0 ;Bank 1 setzen movlw B'00000000' ;Port D alle out movwf TRISD bcf STATUS, RP0 ;Bank 0 setzen clrw PORTD ;Alle LED´s aus bsf STATUS, RP0 ;Bank 1 setzen movlw B'11111111' ;Port B alle Eingänge movwf TRISB bcf STATUS, RP0 ;Bank 0 setzen goto main main MOVLW 5 ;Wert 5 in Arbeitsregister laden MOVWF 0x20 ;Wert 5 in Speicherzelle 5 setzen LOOP ;Schleife Marke1 btfss PORTB, 3 ;Wenn Taster an RB3 gedrückt ist lese weiter goto Marke1 btfss PORTB, 2 ;Taster der an RB2 liegt Gedrückt? goto Marke1 bcf PORTB, 4 ;Lösche das Bit aus RB4 falls gesezt. Marke2 btfss PORTB,4 ;Cyklus start goto Marke2 bsf PORTD, 4 ;Zange zu nop bcf PORTD, 4 ;Lösche das bit bsf PORTD, 6 ;Automatische Stangenzufuhr start Marke3 btfss PORTB, 1 ;Wenn RB1 bättetigt goto Marke3 bcf PORTD, 6 ;Stangenzufuhr stoppen bsf PORTD, 5 ;Schraubstock zu bsf PORTD, 7 ;Zange auf nop bsf PORTD, 6 ;Stangenzufur auf ausgangspunkt Marke4 btfss PORTB, 3 ;Ist Stangenzufur zurück? goto Marke4 bcf PORTD, 6 ;Dan stopp Stangenzufur(rückwärts) bsf PORTD, 4 ;Starte Säge Marke5 btfss PORTB, 0 ;Ist Säge unten goto Marke5 bcf PORTD, 4 ;Säge stop DECFSZ 0x20,1 ;Wert 1 von Wert in 0x20 abziehen GOTO LOOP ;Gehe zur Schleifenbeginn end