Thông báo

Collapse
No announcement yet.

[Thắc mắc] Lỗi lập trình Keil C

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • [Thắc mắc] Lỗi lập trình Keil C

    Không hiểu sao chương trình em viết như thế này, vậy mà khi biên dịch Keil C lại báo lỗi như thế này, các anh xem giúp em nha, em thử code đơn giản nhất nó cũng báo lỗi giống như vậy
    Click image for larger version

Name:	loi.png
Views:	1
Size:	8.4 KB
ID:	1414526

    đây là code em test thử nhưng vẫn báo lỗi như trên.
    Code:
    	
    #include<at89x51.h>				 
    // Ham Delay
    void delay(int time)
    {    
       while(time--)
            { 
        int temp = 121;   
        while(temp--);   
            }
    }  
    
    void main ()
    {			
        P0=0; 
        P0=P1=P2=P3=0; 
    }


  • #2
    Có cảnh báo chứ ko có lỗi cú pháp gì,ở đây bạn xây dựng hàm delay nhưng ko dùng nên trình dịch nhắc nhở thôi
    vanduc0211@gmail.com

    Comment


    • #3
      Nhưng sao em khi xuất file code này ra file hex, rồi dùng Protues để mô phỏng thì nó không chạy ????
      lẽ ra 4 Port phải chuyển sang mức thấp (0) hết nhưng nó lại ở mức 1 hết...

      em gửi file anh xem giúp em có lỗi gì không ạ !
      http://dl.dropbox.com/u/23155150/Testcode.rar

      Comment


      • #4
        chương trình bị lỗi là đúng rồi chứ gì nữa
        bạn phải thêm 1 dòng lệnh while(1); ngay trước khi kết thúc chương trình

        Comment


        • #5
          Cú pháp thì ko có lỗi,Tại vì bạn ko dùng vòng lặp,hàm delay nên thực hiện chương trên trong vỏn vẹn có vài chục us,mỗi lệnh cách nhau 8us sau đó thì ngừng,bạn chỉ thấy được kết quả cuối cùng là tất cả led sáng thôi(đoạn : P0=P1=P2=P3),thêm while(1) thì chương trình luôn chạy lặp lại,thêm hàm delay nữa để thấy được rõ từng hiệu ứng trong code
          #include<at89x51.h>
          // Ham Delay
          void delay(int time)
          {
          while(time--)
          {
          int temp = 121;
          while(temp--);
          }
          }
          //B?t d?u thân chuong trình luôn này
          void main ()
          {
          while(1)
          {

          P0=0;delay(300); // 8 chân trên c?ng P0 sáng
          P0=P1=P2=P3=0; // 32 chân trên 4 c?ng sáng h?t
          }
          }
          Last edited by viboyth.haui; 11-10-2012, 13:46.
          vanduc0211@gmail.com

          Comment


          • #6
            Em đã thử sữa lại theo các anh, những sao nó vẫn không chạy anh !??
            Nó vẫn cứ có 2 cái cảnh báo:
            Code:
            *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
                SYMBOL:  ?C_START
                MODULE:  STARTUP.obj (?C_STARTUP)
            *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
                SYMBOL:  ?C_START
                MODULE:  STARTUP.obj (?C_STARTUP)
                ADDRESS: 080AH
            Program Size: data=9.0 xdata=0 code=15
            creating hex file from "vidu6"...
            "vidu6" - 0 Error(s), 2 Warning(s).

            Comment


            • #7
              Bó tay với bạn,đoạn code mình post ở trên mình đã thử,ko có lỗi gì,cũng ko có cảnh báo gì cả,chạy đúng.bạn post cái đoạn code mới kia của bạn xem.
              Bạn có thể tham khảo thêm code này của mình,dùng hàm và mảng: led.c
              vanduc0211@gmail.com

              Comment


              • #8
                Nguyên văn bởi viboyth.haui Xem bài viết
                Bó tay với bạn,đoạn code mình post ở trên mình đã thử,ko có lỗi gì,cũng ko có cảnh báo gì cả,chạy đúng.bạn post cái đoạn code mới kia của bạn xem.
                Bạn có thể tham khảo thêm code này của mình,dùng hàm và mảng: led.c
                Cảm ơn anh nhiều nha, em thấy chỗ sai rồi ! hi...mà anh có thể giải thích giúp em cách tính hàm trễ 1s với thạch anh 12MHz là như thế nào anh?

                Comment


                • #9
                  @@ 2 cảnh báo chứ k phải lỗi nhá...cái này xem cách lập trình chứ k phải do phần mềm nhá
                  hình như lỗi bảng mã Unicode..chắc viết có dấu hả.?

                  Comment


                  • #10
                    Nguyên văn bởi tan0710 Xem bài viết
                    @@ 2 cảnh báo chứ k phải lỗi nhá...cái này xem cách lập trình chứ k phải do phần mềm nhá
                    hình như lỗi bảng mã Unicode..chắc viết có dấu hả.?
                    không anh ! em bị lỗi ở bước add file code. mà anh cho em hỏi hàm delay 1s với từng con thạch anh 12MHz, 24MHz ..tính như thế nào ạ ??

                    Comment


                    • #11
                      -Phần chú thích sau dấu "//" thì ko được biên dịch,bạn muốn viết trời đất gì vào đấy cũng được (nhưng chỉ trên 1 dòng đấy thôi)
                      -Cách tình như sau: Thạch anh 12MHz thì tần số của 89xx sẽ bị chia 12 lần còn 1MHz,tức là chu kì máy là 1us,mỗi 1 lệnh (bất kì) thì sẽ mất 8 chu kì,tức là mất 8us
                      mình lấy ví dụ với hàm delay đơn vị 1ms ( delay(1)=1ms )
                      void delay(int ms)
                      {
                      int o,q;
                      for(o=0;0<ms;o++)
                      {
                      for(q=0;q<125;q++)
                      {}
                      }
                      }
                      Mỗi lần lặp của q mất 8 (us),nếu lặp 125 lần sẽ mất 125*8=1000 (us)=1(ms),mỗi vòng lặp của o gồm 125 vòng lặp của q (mất 1(ms)) => có ms vòng lặp của o thì sẽ mất
                      ms (ms) => muốn trễ n (ms) thì gọi hàm : delay(n) ,ví dụ: muốn trễ 1(s)=1000 (ms) thì gọi delay(1000)
                      Tất nhiên bạn có thể xây dựng hàm delay tùy theo ý muốn,tùy vào từng mạch cụ thể với yêu cầu trễ khác nhau mà xây dựng cho phù hợp
                      vanduc0211@gmail.com

                      Comment


                      • #12
                        Nguyên văn bởi viboyth.haui Xem bài viết
                        -Phần chú thích sau dấu "//" thì ko được biên dịch,bạn muốn viết trời đất gì vào đấy cũng được (nhưng chỉ trên 1 dòng đấy thôi)
                        -Cách tình như sau: Thạch anh 12MHz thì tần số của 89xx sẽ bị chia 12 lần còn 1MHz,tức là chu kì máy là 1us,mỗi 1 lệnh (bất kì) thì sẽ mất 8 chu kì,tức là mất 8us
                        mình lấy ví dụ với hàm delay đơn vị 1ms ( delay(1)=1ms )

                        Cảm ơn anh rất nhiều ! em hiểu cách tính rồi !
                        Anh cho em hỏi thư viện "#include<intrins.h>" có chức năng gì anh ?

                        Em có đoạn code sau:
                        Code:
                        void hieu_ung_7(void)
                        {
                        unsigned char M[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,
                        0x80,0x00};
                        unsigned char N[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,
                        0x01,0x00};
                        P0=P1=P2=P3=0xff;
                        for(i=0;i<8;i++)
                        {
                        P0=M[i];
                        delay2(300);
                        }
                        for(i=0;i<8;i++)
                        {
                        P2=N[i];
                        delay2(300);
                        }for(i=0;i<8;i++)
                        {
                        P3=N[i];
                        delay2(300);
                        }for(i=0;i<8;i++)
                        {
                        P1=N[i];
                        delay2(300);
                        }
                        }
                        Có phải code trên gồm 2 mảng M,N khổng anh ??
                        các phần tử "0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,
                        0x80,0x00",....là địa chỉ hay sao ạ?? làm sao biến đổi nó (mã Hex)

                        Comment


                        • #13
                          Bạn phải post đầy đủ code thì mới biết được người ta lấy ra cái gì từ thư viện intrins.h chứ,nhưng theo mình thì có lẽ là chèn cái thư viện này vào để lấy hàm _nop_()
                          hàm này cũng có thể dùng kiểu như hàm trễ,nó sẽ tạm dừng trong 3 chu kì máy
                          Trong code bạn đưa ra thì M,N là 2 mảng,nhưng khai báo trong thân hàm "hieu_ung_7" thì chỉ dùng được trong phạm vi hàm này,nếu muốn dùng được trong cả chương trình thì ko được đặt khai báo chúng trong bất kì hàm nào cả
                          Phần mã code 0x80,0x00,.... thì xem tại đây: http://www.dientuvietnam.net/forums/...11/#post610346
                          vanduc0211@gmail.com

                          Comment


                          • #14
                            Nguyên văn bởi viboyth.haui Xem bài viết
                            Bạn phải post đầy đủ code thì mới biết được người ta lấy ra cái gì từ thư viện intrins.h chứ,nhưng theo mình thì có lẽ là chèn cái thư viện này vào để lấy hàm _nop_()
                            hàm này cũng có thể dùng kiểu như hàm trễ,nó sẽ tạm dừng trong 3 chu kì máy
                            Trong code bạn đưa ra thì M,N là 2 mảng,nhưng khai báo trong thân hàm "hieu_ung_7" thì chỉ dùng được trong phạm vi hàm này,nếu muốn dùng được trong cả chương trình thì ko được đặt khai báo chúng trong bất kì hàm nào cả
                            Phần mã code 0x80,0x00,.... thì xem tại đây: http://www.dientuvietnam.net/forums/...11/#post610346
                            rồi em hiểu luôn !
                            mình có thể lập trình cho ngõ ra sao cho LED sáng với cường độ khác nhau không anh??? (nghĩa là độ sáng của LED ấy)
                            em thấy cái phàn mềm LEDimm làm được điều này hok biết mình có thể lập trình được như thế không anh >?

                            Comment


                            • #15
                              Có thể thay đổi,xem tại đây : http://www.dientuvietnam.net/forums/...den-led-78519/
                              vanduc0211@gmail.com

                              Comment

                              Về tác giả

                              Collapse

                              lee_trieu Tìm hiểu thêm về lee_trieu

                              Bài viết mới nhất

                              Collapse

                              • mansion123
                                Bật mí những điều ít ai biết về thi công gỗ óc chó
                                bởi mansion123
                                Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng
                                ...
                                hôm nay, 16:08
                              • tuyennhan
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi tuyennhan
                                Cái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
                                Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .
                                hôm nay, 07:44
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Cám ơn những lời chúc tốt đẹp của em.

                                Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.

                                Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....
                                hôm nay, 02:00
                              • nhathung1101
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi nhathung1101
                                Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                                Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                                Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                                Hôm qua, 22:18
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                                Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                                Hôm qua, 14:51
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                                Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                                Hôm qua, 14:39
                              • dinhthuong80
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi dinhthuong80
                                Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                                Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                                Hôm qua, 14:28
                              • bqviet
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi bqviet
                                Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                                21-02-2025, 20:26
                              • mèomướp
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi mèomướp
                                Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                                21-02-2025, 12:32
                              • vi van pham
                                Trả lời cho Tiếng Anh cho người Việt
                                bởi vi van pham
                                Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                                Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                                20-02-2025, 21:31
                              Đang tải...
                              X