Hi,

gut das es nur im Schaltplan ist, es sei dir verziehen

Also als Schutz für den PIC solltest Du die Eingänge entkoppeln, d.h. einen Schutzwiderstand verbauen damit falls ein Eingang versehentlich als Ausgang definiert wird kein hoher Strom fließen kann, der den PIC zerstört.

Code:
Ich versuch mich mal künstlerisch.
RA0 ----- 1k ----- Taster ----- GND.
Zwischen 1k und Taster noch eine Pullup (z.B. 4,7k) an Vdd (+).
Nun zum Code:
Code:
   movlw   0x00               ;PORTB, setze alle Bits 0
   movwf    PORTB
machst Du schon indem Du clrf PORTB in der Zeile drüber ausführts. Nur mal so nebenbei.

Funktioniert das:
Code:
loop3
   
   BTFSS   PORTA,0   
   call   main
   call   wait
   goto    loop3   
         
   return
Ich habs jetzt nicht simuliert aba könnte es sein das Du einen Stack Überlauf produzierst, da Du hier main mit call aufrufst, d.h. er springt zu main (Rücksprungeadresse wird gespeichert), im main springt er zu wait (+ 1 weitere Adresse) irgendwann kommt er bei loop 3 das glecihe wiederholt sich bis der Stack überläuft (max. 8 Adresse), dann macht der PIC schmarrn.

Am besten mal im MPLAB testen!

mfg
Benny