![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Nhập môn đệ tử
|
Lỗi do lập trình hay do trình biên dịch ?
Tại sao khi viết chương trình ngắt trong MPLAB (7.31) mặc dù đã theo đúng khung chương trình ngắt do bác falleaf giới thiệu nhưng chưong trình vẫn bị Faile(Lỗi).
Cụ thể là viết chương trình như sau : Code:
PROCESSOR PIC16F877 INCLUDE <P16F877.INC> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF & _CPD_OFF DATAOUT EQU 0x20 W_save EQU 0x21 PCLATH_SAVE EQU 0X22 STATUS_SAVE EQU 0X23 FSR_SAVE EQU 0X24 ORG 0x0000 GOTO batdau ORG 0x004 ;<<=======================(thay bởi 0x005 thì thành công) GOTO ISR_NGAT ISR_NGAT MOVWF W_save MOVWF STATUS_SAVE MOVF PCLATH,W CLRF PCLATH MOVF FSR,W MOVWF FSR_SAVE BTFSS PIR1,PSPIF GOTO thoat BCF PIR1,PSPIF BSF STATUS,RP0 BTFSC TRISE,OBF GOTO thoat BCF STATUS,RP0 MOVF DATAOUT,0 MOVWF PORTD thoat BCF STATUS,RP0 MOVF FSR_SAVE MOVWF FSR MOVF PCLATH_SAVE MOVWF PCLATH SWAPF STATUS_SAVE,W MOVWF STATUS SWAPF W_save,1 SWAPF W_save,0 RETFIE ORG 0x000 CLRF STATUS CLRF PCLATH GOTO batdau ORG 0x050 batdau BCF STATUS,RP1 BCF STATUS,RP0 CLRF PORTD BSF STATUS,RP0 MOVLW B'00010111' MOVWF TRISE MOVLW 0x006 MOVWF ADCON1 BSF PIE1,PSPIE BCF STATUS,RP0 BSF INTCON,GIE BSF INTCON,PEIE MOVLW b'01010101' MOVWF DATAOUT MOVF PORTD GOTO $ END Phiền các bạn giải thích hộ ? Thanks ! |
![]() |
![]() |
![]() |
#2 |
Đệ tử 5 túi
Tham gia ngày: Sep 2006
Bài gửi: 100
: |
Lỗi báo như thế nào? Bạn phải post dòng thông báo lỗi lên thì mới trả lời cụ thể được
|
![]() |
![]() |
![]() |
#3 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Chỉ thấy bạn có 1 cái sai là lặp 2 lần "org 0x00", bỏ cái bên dưới là ok.
Bạn cũng không cần đặt thêm cái org 0x50 làm chi, bây giờ thì chưa sai, nhưng rất dễ sai. Không hiểu = cách nào mà bạn dịch được cho dù đổi thành org 0x05. Bạn nên coi lại tut xem chỉ thị org nghĩa là gì. |
![]() |
![]() |
![]() |
#4 |
Đệ tử 5 túi
Tham gia ngày: Sep 2006
Bài gửi: 100
: |
Nếu bạn viết đúng như đoạn chương trình trên đây thì mình tìm thêm được vài lỗi nữa của bạn. Bạn viết là :
ISR_NGAT MOVWF W_save MOVWF STATUS_SAVE MOVF PCLATH,W CLRF PCLATH MOVF FSR,W MOVWF FSR_SAVE ..... Phải sửa lại là : ISR_NGAT: MOVWF W_save ; Save WREG MOVF STATUS,W ; Save STATUS CLRF STATUS MOVWF STATUS_SAVE MOVF PCLATH, W MOVWF PCLATH_SAVE MOVF FSR, W MOVWF FSR_SAVE ........ Thoat: CLRF STATUS MOVF FSR_SAVE, W MOVWF FSR MOVF PCLATH_SAVE, W MOVWF PCLATH MOVF STATUS_SAVE, W MOVWF STATUS SWAPF W_save, F SWAPF W_save, W RETFIE |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|