Mathew - I think your trouble is in these subroutines - I have modified them - InitPortA BSF STATUS,RP0 ; Select bank 1 MOVLW 0 ; Clears w register MOVWF TRISA ; Set port a as outputs BCF STATUS,RP0 ; Select page 0 MOVWF PORTA RETURN ;-------------------------------------------------------------------------- InitPortB BSF STATUS,RP0 ; Select bank 1 MOVLW 255 ; movwf TRISB ; Set port a as outputs bcf STATUS,RP0 ; Select page 0 RETURN Also I noticed that in your Loop, at the end you are calling Loop - this will cause a stack overflow. You should do a "goto Loop" instead Loop MOVF PORTB,w ; Read Portb into w register MOVWF PORTA ; Move W into Porta BTFSC W,7 ; If bit 7 is set goto Chase CALL Chase GOTO Loop You might want to go back and examine the reset of your code to make sure you are in the correct bank, and calling the register by it's name in that bank. David -----Original Message----- From: Mathew Cohen [mailto:mathew@EVERYTHINGIT.NET] Sent: Friday, October 15, 1999 10:44 AM To: PICLIST@MITVMA.MIT.EDU Subject: Troubles specifing banks with 16f84 Hey I am getting an error with the following asm file. The error says that the register that I am trying to access is in a different bank can someone help.