Timer của 16F887
Viết Chương trình chạy Timer0:
goto init
org 0x0004
bcf INTCON, 2
retfie
;=========
init
banksel TRISA
movlw 0x00
movwf OPTION_REG
movlw 0xA0
movwf INTCON
nop
goto $+0x00
END
;=====================
Khi chay Debugger MPLAB SIM hoặc Proteus VSM thì theo dõi TMR0 trong tab Watch thì chạy bình thường.
Nhưng khi chạy Debugger PICkit 2 (chạy có PIC trên mạch), thì TMR0 nhảy loạn xạ, không theo step. bit INTCON, 2 không xóa được ( nó được tự động set khi gán giá trị cho INTCON).
Ngắt vẫn xảy ra, nhưng không theo lúc TMR0 tràn (bit INTCON, 2 lúc nào cũng set).
Chạy thử trên EasyPIC-PRO Dev. KIT kết quà cũng vậy.
Như vậy là do lỗi PIC hay PICkit2.
|