RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Lỗi thường gặp - 628A

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • Thangleduc
    Nhập môn đệ tử
    • May 2005
    • 9

    #1

    Lỗi thường gặp - 628A

    Anh Hiệp ơi, em copy cái code của anh viết ở diễn đàn vào Mplab IDE rồi nhấn Alt + F10, sao no hiện nhiều lỗi vậy ?


    Code mà em copy là: ;================================================= =======
    ; Ten chuong trinh : Mach test den LED_1
    ; Nguoi thuc hien : Falleaf
    ; Ngay thuc hien : 23/05/2005
    ; Phien ban : 1.0
    ; Mo ta phan cung : Dung PIC16F628A - thach anh 10MHz
    ; : LED giao tiep voi PORTB
    ; : Cuc am cua LED noi voi GND
    ; : RB0 - RB7 la cac chan output
    ;----------------------------------------------------------------
    ; Ngay hoan thanh : 23/05/2005
    ; Ngay kiem tra : 23/05/2005
    ; Nguoi kiem tra : Doan Hiep
    ;----------------------------------------------------------------
    ; Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau
    ; : hoac cac chu thich khac
    ; : vd, dung che do Power On Reset, PORTB = 00000000
    ; : hoac, chuong trinh viet cho PIC Tutorial
    ; : hoac, chuong trinh nay hoan toan mien phi va co the dung cho
    ; : moi muc dich khac nhau
    ;================================================= =======

    ;================================================= ======
    TITLE "Mach test LED_1"
    PROCESSOR P16F628A
    INCLUDE <P16F628A.inc>
    __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC

    ;================================================= ==============================
    ;================================================= ==============================
    ORG 0x0000
    GOTO MAIN


    ORG 0x0005

    MAIN
    BANKSEL TRISB ; bank select
    CLRF TRISB ; trisb = 00000000
    ; portb = output
    BANKSEL PORTB
    BSF PORTB, 0 ; rb0 = 1
    ; RB0 = 5V
    GOTO $ ; dung chuong trinh tai day
    ; vong lap tai cho^~
    ; khong bao gio ket thuc
    END. ; lenh bat buoc de ket thuc
    ;================================================= ===============================



    Roi em Alt + F10, nó hiện errors như sau:


    Quote:" Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F452 "Test 1.asm" /l"Test 1.lst" /e"Test 1.err"
    Warning[215] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 25 : Processor superseded by command line. Verify processor symbol.
    Message[301] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F628A.INC 35 : MESSAGE: (Processor-header file mismatch. Verify selected processor.)
    Warning[230] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 27 : __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG.
    Error[126] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 27 : Argument out of range (not a valid config register address)
    Warning[226] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 32 : Destination address must be word aligned
    Error[157] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 35 : ORG at odd address
    Warning[226] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 44 : Destination address must be word aligned
    Warning[207] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 47 : Found label after column 1. (END.)
    Error[129] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 49 : Expected (END)
    Error[173] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 49 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM)
    Halting build on first failure as requested.
    BUILD FAILED: Mon Oct 16 12:32:54 2006
    ".


    Có ai biết gì thêm thì chi mình với, đọc 1 hồi rồi mù, hixhix.

    Em vào Configure -> Select Device -> rồi chọn Pic16F628A. rồi quay lại cái code của anh, em nhấn Alt + F10, thì nó chỉ còn chưng này errors à:


    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Test 1.asm" /l"Test 1.lst" /e"Test 1.err"
    Warning[215] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 25 : Processor superseded by command line. Verify processor symbol.
    Message[302] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 39 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Error[173] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 48 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM)
    Halting build on first failure as requested.
    BUILD FAILED: Mon Oct 16 13:09:18 2006
    Last edited by namqn; 17-10-2006, 05:37 PM. Lý do: Updating
  • chipchipvn
    Đệ tử 2 túi
    • Oct 2006
    • 43

    #2
    Mình trả lời hộ bác F, hình như code này không có gì sai cả ( Bác F viết mừ) nhưng chỉ có 1 cái là đường dẫn (path) của file ASM của bạn quá dài (>62 ký tự) nên nó không chạy được thôi. Bạn sửa đường dẫn cho ngắn lại là xong thui.

    Comment

    • Thangleduc
      Nhập môn đệ tử
      • May 2005
      • 9

      #3
      I got it, love you, chipchpVn.

      Comment

      • lamhoang
        Đệ tử 2 túi
        • Dec 2005
        • 27

        #4
        Đề nghí chuyển bài này vào phần những câu hỏi thông thường để mọi người dễ theo dõi.
        Đóng góp với mong muốn diễn đàn tốt hơn!

        Comment

        • MHz
          Đệ tử 2 túi
          • Jun 2005
          • 34

          #5
          Nguyên văn bởi chipchipvn View Post
          Mình trả lời hộ bác F, hình như code này không có gì sai cả ( Bác F viết mừ) nhưng chỉ có 1 cái là đường dẫn (path) của file ASM của bạn quá dài (>62 ký tự) nên nó không chạy được thôi. Bạn sửa đường dẫn cho ngắn lại là xong thui.
          ...chính xác, à mà còn 1 lỗi nữa nè :
          Sau lệnh END không có dấu chấm (.), bác xóa dấu chấm "chết tiệt" đó đi thì Ok...

          Comment

          • Thangleduc
            Nhập môn đệ tử
            • May 2005
            • 9

            #6
            Hi, mình chẳng biết post câu hỏi ở đâu cả.

            Mình có thêm câu hỏi này:

            KHi mình viết code để cho LED nó sáng, nhưng sao mình ko biết viết như thế nào:
            0000 = 0
            0001 = 1
            0010 = 2
            0011 = 3
            0100 = 4
            0101 = 5
            0110 = 6
            0111 = 7
            1000 = 8
            .............
            11111 = F


            Vậy thì mình viết code như thế nào để set từng LED nó chay ?

            Port P1.1 = 0000 0000 = ....??....
            Port P1.1 = 1000 0000 = ....??....
            Port P1.1 = 0100 0000 = ....??....
            Port P1.1 = 0010 0000 = ....??....
            Port P1.1 = 0001 0000 = ....??....
            Port P1.1 = 0000 1000 = ....??....
            Port P1.1 = 0000 0100 = ....??....
            Port P1.1 = 0000 0010 = ....??....
            Port P1.1 = 0000 0001 = ....??....


            Đó là chạy 1 đèn một

            Còn chay 2 đèn 1 lúc:

            Port P1.1 = 1100 0000 = ....??....
            Port P1.1 = 0110 0000 = ....??....
            Port P1.1 = 0011 0000 = ....??....
            Port P1.1 = 0001 1000 = ....??....
            Port P1.1 = 0000 1100 = ....??....
            Port P1.1 = 0000 0110 = ....??....
            Port P1.1 = 0000 0011 = ....??....


            Còn chay 3 đèn 1 lúc:

            Port P1.1 = 1110 0000 = ....??....
            Port P1.1 = 0111 0000 = ....70....
            Port P1.1 = 0011 1000 = ....C7....
            Port P1.1 = 0001 1100 = ....??....
            Port P1.1 = 0000 1110 = ....??....
            Port P1.1 = 0000 0111 = ....??....


            Còn chay 4 đèn 1 lúc:

            Port P1.1 = 1111 0000 = ....??....
            Port P1.1 = 0111 1000 = ....??....
            Port P1.1 = 0011 1100 = ....??....
            Port P1.1 = 0001 1110 = ....??....
            Port P1.1 = 0000 1111 = ....??....


            Còn chay 5 đèn 1 lúc:

            Port P1.1 = 1111 1000 = ....??....
            Port P1.1 = 0111 1100 = ....??....
            Port P1.1 = 0011 1110 = ....??....
            Port P1.1 = 0001 1111 = ....??....


            Còn chạy như vầy thì sao ?

            Port P1.1 = 1111 1111 = ....FF....



            Mình thấy nhiều người viết code để chạy LED, nhưng lại ko biết "công thức" để biết các số BINARY sang HEXADECIMAL

            Comment

            • chipchipvn
              Đệ tử 2 túi
              • Oct 2006
              • 43

              #7
              Mình thấy cái này chỉ có cách là học thuộc thôi (mình cũng chỉ làm thế, không bít trò nào hay hơn), nhưng có một mẹo nhỏ (hình như bạn cũng bít rùi). Mình tách 4 số thành một nhóm, rùi bi-hex ( mình nghĩ cũng dễ nhớ thui) có 15 cái à. Vd: 01111100= 0111 1100 = 7 C = 7C. Mình chỉ bít có thế :d. Ngòai ra không biết hơn.

              Comment

              • spirit
                Đệ tử 2 túi
                • Aug 2006
                • 42

                #8
                Nguyên văn bởi Thangleduc View Post
                Hi, mình chẳng biết post câu hỏi ở đâu cả.

                Mình có thêm câu hỏi này:

                KHi mình viết code để cho LED nó sáng, nhưng sao mình ko biết viết như thế nào:
                0000 = 0
                0001 = 1
                0010 = 2
                0011 = 3
                0100 = 4
                0101 = 5
                0110 = 6
                0111 = 7
                1000 = 8
                .............
                11111 = F


                Vậy thì mình viết code như thế nào để set từng LED nó chay ?

                Port P1.1 = 0000 0000 = ....??....
                Port P1.1 = 1000 0000 = ....??....
                Port P1.1 = 0100 0000 = ....??....
                Port P1.1 = 0010 0000 = ....??....
                Port P1.1 = 0001 0000 = ....??....
                Port P1.1 = 0000 1000 = ....??....
                Port P1.1 = 0000 0100 = ....??....
                Port P1.1 = 0000 0010 = ....??....
                Port P1.1 = 0000 0001 = ....??....


                Đó là chạy 1 đèn một

                Còn chay 2 đèn 1 lúc:

                Port P1.1 = 1100 0000 = ....??....
                Port P1.1 = 0110 0000 = ....??....
                Port P1.1 = 0011 0000 = ....??....
                Port P1.1 = 0001 1000 = ....??....
                Port P1.1 = 0000 1100 = ....??....
                Port P1.1 = 0000 0110 = ....??....
                Port P1.1 = 0000 0011 = ....??....


                Còn chay 3 đèn 1 lúc:

                Port P1.1 = 1110 0000 = ....??....
                Port P1.1 = 0111 0000 = ....70....
                Port P1.1 = 0011 1000 = ....C7....
                Port P1.1 = 0001 1100 = ....??....
                Port P1.1 = 0000 1110 = ....??....
                Port P1.1 = 0000 0111 = ....??....


                Còn chay 4 đèn 1 lúc:

                Port P1.1 = 1111 0000 = ....??....
                Port P1.1 = 0111 1000 = ....??....
                Port P1.1 = 0011 1100 = ....??....
                Port P1.1 = 0001 1110 = ....??....
                Port P1.1 = 0000 1111 = ....??....


                Còn chay 5 đèn 1 lúc:

                Port P1.1 = 1111 1000 = ....??....
                Port P1.1 = 0111 1100 = ....??....
                Port P1.1 = 0011 1110 = ....??....
                Port P1.1 = 0001 1111 = ....??....


                Còn chạy như vầy thì sao ?

                Port P1.1 = 1111 1111 = ....FF....



                Mình thấy nhiều người viết code để chạy LED, nhưng lại ko biết "công thức" để biết các số BINARY sang HEXADECIMAL
                Bạn tham khảo thêm kĩ thuật bảng của mod Chính
                Theo mình nghĩ viết số binary sẽ dễ dàng trong việc quản lí led vì chỉ cần nhìn vào là thấy ngay.Còn số hex thì để nhìn cho gọn mà thôi
                Bạn viết như trên là sai rồi phải là thế này chứ
                ví dụ :PORTB=xxxxxxxxx chứ không phải port P1.1 vì đây là 1 byte mà

                Comment

                • Thangleduc
                  Nhập môn đệ tử
                  • May 2005
                  • 9

                  #9
                  uh, cảm ơn bạn, nhưng mà mình nghe nói, nếu viết nhiều code kiêu Binary nhiều th2 tốn nhiều memory cua IC lắm, hình nhu có cách viết nào đó cũng do the same job mà lại ngắn và ít tốn bộ nhớ lắm. Có ai biết ko, post lên chỉ mọi người đi, cảm ơn.

                  Comment

                  • spirit
                    Đệ tử 2 túi
                    • Aug 2006
                    • 42

                    #10
                    Đồng ý với bạn viết mã binary sẽ tốn nhiều bộ nhớ của chip hơn mã hex điều (này mình cũng đã kiểm chứng rồi).Nhưng theo mình nghĩ tốn không nhiều lắm đâu nếu bạn viết Code không quá lớn,ai mà viết hết rom của pic16F628(hoặc những con pic cao hơn) thì mình bái phục họ đã đạt trình đọ thượng thừa rồi.
                    Chính vì vậy chúng ta nên viết sao cho dẽ hiểu nhất nhìn vào là xác định mình đang viết cái gì.
                    Còn cách mà bạn muốn không biết là cái này không nữa?
                    addwf PCL,f
                    dt "mã hex_1,mã hex2,..."
                    -->một dạng của kĩ thuật bảng
                    Cái này là theo mình nghĩ thôi nha,có thể không đúng như vậy đâu.

                    Comment

                    Working...