I think you're confused on the correct method of debouncing.

The object is to check for a switch hit, wait for the bouncing to stop, then check again and see if the same switch is still hit.
The way you are doing it, you'll catch the bouncing and kick out of your check before you get a chance to check it after the bouncing is over...

Try this:

Code:
INCLUDE "MODEDEFS.BAS"
@ DEVICE PIC16F628a,XT_OSC
@ DEVICE pic16F628a, WDT_OFF
@ DEVICE pic16F628a, PWRT_ON
@ DEVICE pic16F628a, MCLR_ON
@ DEVICE pic16F628a, BOD_ON
@ DEVICE pic16F628a, LVP_OFF
@ DEVICE pic16F628a, CPD_OFF
@ DEVICE pic16F628a, PROTECT_OFF
DEFINE OSC 4 
CMCON=%00000111 : PORTA = 0 : PORTB = 0 : trisa = %00000010
trisb = %10000000 : mydata1 VAR byte : mydata2 var byte : address1 var byte
 address2 var byte : checksum var byte : chk_sum var byte : serpin VAR porta.1
PAUSE 50 
loop:     gosub loop1 : CheckSum = (address1 + address2) + (mydata1 + mydata2)
IF checksum != chk_sum THEN loop
IF (mydata1) != (mydata2) THEN loop
IF (address1) != (address2) THEN loop
if mydata1=%01010110 then toggle 0
pause 50
lp1:
if mydata1=%01011001 then
pause 50
if mydata1=%01011001
high 1 
else
low 1
endif 
if mydata1=%01011010 then
pause 50
if  mydata1=%01011010
high 2
else
low 2
endif
if mydata1=%01100101 then
pause 50
if mydata1=%01100101
high 3
else
low 3
endif
if mydata1=%01100101 then
pause 50
if mydata1=%01100101
high 4
else
low 4
endif
if mydata1=%01101001 then toggle 5
if mydata1=%01101010 then toggle 6
goto loop
loop1:
SERIN serpin,N9600,[254],address1,address2,mydata1,mydata2,chk_sum
Return