Mình đoán bạn copy code của 16F đổi sang 18F, tổ chức bộ nhớ chương trình hai dòng này khác nhau. Với 16F vector 0x04 là vector ngắt, còn 2 vector ngắt của 18F ở 0x08 và 0x18, do đó code thường bắt đầu ở 0x2a.
Bạn thử đoạn code này xem sao.
Code:
; Include file, change directory if needed
include "p18f4550.inc"
config FOSC=HSPLL_HS, PLLDIV=5, CPUDIV=OSC1_PLL2, WDT=OFF, PWRT=ON, LVP=OFF, MCLRE=ON, PBADEN=OFF
c1 equ 0x01
c2 equ 0x02
; Start at the reset vector
Reset_Vector code 0x000
goto Start
; Start application beyond vector area
code 0x002A
Start
clrf TRISB, a
loop
movlw 0xff
movwf LATB, a
call delay
clrf LATB, a
call delay
bra loop
delay
movlw 0xff
movwf c1, a
loop1
movlw 0xff
movwf c2, a
loop2
decfsz c2
bra loop2
decfsz c1
bra loop1
return
end