Chương trình báo lỗi, ko bit sai ở đâu?

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • shevry
    Nhập môn đệ tử
    • Sep 2007
    • 6

    #1

    Chương trình báo lỗi, ko bit sai ở đâu?

    Mình mới vào nghề, viết thử 1 chương trình LED chạy qua lại nhưng khi biên dịch thì gặp lỗi sau:

    Debug build of project `D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.mcp' started.
    Language tool versions: MPASMWIN.exe v5.36, mplink.exe v4.36, mplib.exe v4.36
    Preprocessor symbol `__DEBUG' is defined.
    Fri Aug 27 10:05:14 2010
    ----------------------------------------------------------------------
    Make: The target "D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.o" is out of date.
    Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F887 "vd1.asm" /l"vd1.lst" /e"vd1.err" /o"vd1.o" /d__DEBUG=1
    Error[126] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 4 : Argument out of range (not a valid config register address)
    Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 32 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 40 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 70 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Halting build on first failure as requested.
    ----------------------------------------------------------------------
    Debug build of project `D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.mcp' failed.
    Language tool versions: MPASMWIN.exe v5.36, mplink.exe v4.36, mplib.exe v4.36
    Preprocessor symbol `__DEBUG' is defined.
    Fri Aug 27 10:05:15 2010
    ----------------------------------------------------------------------
    BUILD FAILED


    Ko biết chương trình sai ở đâu? nhờ các bậc tiền bối chỉ giúp. ^^
    Đây là chương trình của mình

    TITLE "Chay LED <->"
    PROCESSOR 16f887
    #include <p16f887.inc>
    __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
    ;Khai bao bien
    W_SAVE EQU 0X20
    STATUS_SAVE EQU 0X21
    LAN_LAP EQU 0X22
    XOAY EQU 0X23
    ;Chuong trinh
    ORG 0X0000
    GOTO Main
    ORG 0X0004
    GOTO Isr_Tmr1
    ORG 0X0005
    Main
    banksel PORTB
    CLRF PORTB
    banksel TRISB
    CLRF TRISB
    banksel T1CON
    BCF T1CON,TMR1CS
    BCF T1CON,T1CKPS0
    BCF T1CON,T1CKPS1
    MOVLW 0X9E
    MOVWF TMR1H
    MOVLW 0X58
    MOVWF TMR1L
    MOVLW D'5'
    MOVWF LAN_LAP
    banksel PIE1
    BSF PIE1,TMR1IE
    BSF INTCON,GIE
    banksel T1CON
    BSF T1CON,TMR1ON
    GOTO $
    Isr_Tmr1
    banksel INTCON
    BCF INTCON,GIE
    BCF PIE1,TMR1IE
    banksel PIR1
    BCF PIR1,TMR1IF
    BCF T1CON,TMR1ON
    MOVWF W_SAVE
    MOVF STATUS,W
    MOVWF STATUS_SAVE
    MOVLW 0X9E
    MOVWF TMR1H
    MOVLW 0X58
    MOVWF TMR1L
    DECFSZ LAN_LAP,1
    GOTO Tiep_tuc
    MOVLW D'5'
    MOVWF LAN_LAP
    Ktra_Xoay
    BTFSS XOAY,0
    GOTO Xoay_Phai
    RLF PORTB,0
    Ktra_C
    BTFSS STATUS,C
    GOTO Xuat_Led
    COMF XOAY,1
    GOTO Ktra_Xoay
    Xuat_Led
    MOVWF PORTB
    Tiep_tuc
    MOVF STATUS_SAVE,0
    MOVWF STATUS
    MOVF W_SAVE,0
    BSF PIE1,TMR1IE
    BSF INTCON,GIE
    BSF T1CON,TMR1ON
    RETFIE
    Xoay_Phai
    RRF PORTB,0
    GOTO Ktra_C
    END

    Đây là Pr-Scr của Chương trình:

    http://www.mediafire.com/i/?l36dwzq0d43hcol
    http://www.mediafire.com/i/?tkhcs718ca5qwdz
    http://www.mediafire.com/i/?dn6uooea1yi5qn4
    Last edited by shevry; 27-08-2010, 11:08 AM. Lý do: bổ xung Pr-Scr
  • unisa
    Đệ tử 2 túi
    • May 2005
    • 27

    #2
    báo lỗi khai báo fuse sai kìa bạn, mình cũng không biết sửa sao cho phải, bạn thử thay thế này xem
    Code:
    INCLUDE     <P16F877A.inc>
    __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
    còn mấy cái lỗi
    Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
    mình cũng bị dù dùng nhiều cách như dùng banksel, BSF và BCF status,RP0
    nhưng báo thì báo mình vẫn dịch ngon và chạy ngon, ko hiểu nổi luôn :-o

    Comment

    • shevry
      Nhập môn đệ tử
      • Sep 2007
      • 6

      #3
      Trước hết mình xin cám ơn bạn đã xem và suy ngẫm giùm. Nhìn report của nó thì ai ko biết sai dòng nào. ^^ Vấn đề là ở chỗ phải sửa lại như thế nào cho đúng. Hôm nay mới lục lọi trong mấy cái ví dụ của thằng Microchip (nói thiệt ra là dân VN mình biết rồi toàn giấu đem xuống hòm ko hà, ko biết để lại gì cho con cháu cả). Mình sửa lại cái dòng đó như sau:

      __CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _XT_OSC

      Biên dịch xong thì hết error nhưng warning thì dùng banksel vẫn bị. ko hiểu.

      Comment

      • ronin
        Đệ tử 1 túi
        • Mar 2009
        • 17

        #4
        nếu không phải la chương trình lớn thì wraming không ảnh hưởng gì đâu, nhung bạn cũng hết sức chú ý tới nó đó. bạn làm nhìu sẽ thấy.
        RNET.
        Xuancuongmta@gmail.com

        Comment

        • shevry
          Nhập môn đệ tử
          • Sep 2007
          • 6

          #5
          Mình thấy lạ là sao đã làm giống như chỉ dẫn của datasheet và các chương trình mẫu nhưng vẫn bị warning. Chẳng lẽ MPLab có vấn đề, thật là khó hiểu quá đi. Lúc trước học 89C51 đâu có bị như thế này, chương trình mẫu dạy sao làm như vậy thì ko bao giờ sai. Có lẽ vì thế mà ở VN có nhiều sách 89 nhưng sách PIC thì chỉ mới có 2 quyển. hic. Chẳng lẽ chuyển qua học avr nhỉ.

          Comment

          • namqn
            Trưởng lão PIC bang
            • Feb 2006
            • 3020

            #6
            Nguyên văn bởi shevry View Post
            Mình thấy lạ là sao đã làm giống như chỉ dẫn của datasheet và các chương trình mẫu nhưng vẫn bị warning. Chẳng lẽ MPLab có vấn đề, thật là khó hiểu quá đi. Lúc trước học 89C51 đâu có bị như thế này, chương trình mẫu dạy sao làm như vậy thì ko bao giờ sai. Có lẽ vì thế mà ở VN có nhiều sách 89 nhưng sách PIC thì chỉ mới có 2 quyển. hic. Chẳng lẽ chuyển qua học avr nhỉ.
            Chào bạn,

            Warning không phải là Error, nên bạn không nên quá bận tâm về nó. Message lại càng không cần lo lắng, vì nó chỉ là một thông báo nhắc nhở bạn (trong chương trình nhỏ của bạn thì chỉ là nhắc nhở rằng cần đảm bảo chọn đúng bank cho các thanh ghi).

            Các chương trình mẫu được viết cho các PIC chỉ có một từ cấu hình. Đến gần đây thì PIC16F887 (và một số chip tương tự) được Microchip sản xuất với 2 từ cấu hình, dẫn đến cần có một cách viết khác để thiết lập các từ cấu hình cho các PIC loại này. Và điều này cũng khiến một số chương trình mẫu trở nên "không đúng". Các chip 89 thuộc họ MCS-51 đã rất lâu đời, vốn không có những thay đổi lớn như vậy, nên các chương trình mẫu của chúng ít có cơ hội gặp rắc rối như trên.

            Tôi thường dùng cách cấu hình dưới đây cho PIC16F88x:
            Code:
            	__CONFIG  _CONFIG1, _HS_OSC & _FCMEN_OFF & _IESO_OFF & _CP_OFF & _WDT_OFF & _BOR_ON & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF
            	__CONFIG  _CONFIG2, _WRT_OFF & _BOR21V
            Phần liên quan đến bộ dao động là _HS_OSC có thể được thay đổi cho thích hợp với cấu hình phần cứng cụ thể.

            Thân,
            Biển học mênh mông, sức người có hạn.

            Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
            http://www.picvietnam.com/forum/showthread.php?t=1263

            Comment

            Working...