![]()  | 
			|||
| HSG | 
		    
  | 
		
Port A, Bit 0 wird mit einem 4,7 kΩ-Pull-Up-Widerstand auf eine 1 gezogen. Der Taster kann den Eingang auf 0 herunterziehen, wobei der 470 Ω-Widerstand als Schutzwiderstand für die Programmierphase dient.
		processor pic16f877a
		include   p16f877a.inc
		__config  _HS_OSC & _WDT_OFF & _PWRTE_ON
		org 	0x00
RESET:	clrf 	STATUS
		movlw 	0x00
		movwf 	PCLATH
		goto 	main
		org 	0x10
main:
; INITIALIZING PORTA (direkt aus Handbuch)
		bcf   	STATUS, RP0	;
		bcf   	STATUS, RP1	; Bank 0
		clrf	PORTA		; Initialize PORTA by clearing output data latches
		bsf   	STATUS, RP0	; Select Bank 1
		movlw	0x06		; Configure all pins
		movwf	ADCON1		; as digital inputs
		movlw	0xCF		; Value used to initialize data direction
		movwf	TRISA		; Set RA<3:0> as inputs, RA<5:4> as outputs
					; TRISA<7:6> are always read as '0'
; ergänzt
      		movlw	b'11111110'	; PORTB<7:1> auf Eingang
		movwf	TRISB		; PORTB<0>   auf Ausgang
		bcf   	STATUS, RP0	; wieder Bank 0 einschalten
loop: 		btfsc	PORTA,0	   	; bit test skip if clear
		goto	ein1		; Taste nicht gedrückt, Eingang=1
ein0:  		movlw	0x1	   	; Taste gedrückt, Eingang=0
		movwf	PORTB		; LED an RB0 einschalten ( mit 0 ein !)
		goto	endloop         ; Überspringen des ein1-Teils
ein1:   		movlw	0x0
		movwf	PORTB		; LED an RB0 abschalten ( mit 1 aus !)
endloop:		goto	loop
		end
Die Funktionalität des Programms ist sehr unspektakulär: Die LED leuchtet nur, wenn die Taste gedrückt ist. Das Programm zeigt übrigens auch, wie eine Alternative in Assembler programmiert werden kann.