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

CCS C cho PIC/dsPIC phiên bản 4.xxx

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • falleaf
    PIC Bang chủ
    • May 2005
    • 2627

    #1

    CCS C cho PIC/dsPIC phiên bản 4.xxx

    Luồng này tiếp theo luồng CCS C cho PIC16F877A.

    - Tutorial của nhh đã cũ, CCS C có nhiều thay đổi, do vậy từ CCS C 4.xxx một số câu lệnh và ký hiệu được thay đổi.
    - Luồng trước quá dài, chúng tôi tạm khoá để mở luồng mới, các thành viên sẽ dễ theo dõi hơn.

    Chúc vui
    Công ty TNHH Thương mại và Giao nhận R&P
    store.hn@rpc.vn - store.hcm@rpc.vn

    Học PIC như thế nào?
  • falleaf
    PIC Bang chủ
    • May 2005
    • 2627

    #2
    Nguyên văn bởi bean984 View Post
    cho mình hỏi
    port c của con 16f877a này có gì đặc biệt không vậy?
    mình dùng 3 chân RC0,RC1,RC2 để nối đến 3 chân điều khiển LCD.nhưng tại sao khi mình không set_tris cổng này mà vẫn điều khiển được LCD.
    mình hỏi một câu nữa nhé.
    khi dùng các chân RC6,RC7 để truyền nhận thì không được set_tris cổng C? nếu vậy muốn dùng các chân khác với mục đích I/O thì làm ntn?
    mình cảm ơn nhiều!!!
    Nguyên văn bởi thaithienanh View Post
    Port C của 16f877a tích hợp các modul truyền nhận dữ liệu theo các chuẩn khác nhau như I2C, SPI, .... chứ cũng chẳng có gì đặc biệt cả
    - Bạn không set_tris nhưng vẫn điều khển được LCD là vì trình dịch CCS hỗ trợ, nó sẽ set_tris giùm bạn ở mỗi câu lệnh liên quan đến I/O => tốc độ xử lý và bộ nhớ giảm đi đáng kể do hành động set_tris lập đi lập lại nhiều lần dẫn đến dài dòng thừa thải code đơn giản thì không sao chứ nếu code đòi hỏi tốc độ và dung lượng bộ nhớ lớn thì mình khuyên nên dùng set_tris.
    - Bạn dùng lệnh set_tris thì không giao tiếp đuợc với PC qua chuẩn 232, mình cũng chưa để ý cái này, nhưng mình nghĩ chắc chắn là đuợc chứ , bạn nên xem lại set i/o của bạn cho hai chân RC6 và RC7 đã đúng chưa , lưu ý lại với bạn ở đây chân RC6 là chân truyền (tranmister) tức ngõ ra và chân RC7 là chân nhận (Receiver) tức ngõ vào. Với lại trong câu lệnh set tris để set ngõ vào thì dùng bit (1), và ngõ ra tương ứng với bit (0).

    Còn bạn gì ở trên kia muốn tìm hiểu giao tiếp với PC thì tìm lại trên diễn đàn nhé, có quá nhiều bài viết hướng dẫn và cả ví dụ mẫu về nó rồi đấy

    Chúc các bạn thành công.
    Thân.
    Nguyên văn bởi bean984 View Post
    nhưng mình đã thử lại I/O của port C bằng cách nháy led. Hoàn toàn không được nếu không set_tris. và với các port khác cũng vậy????

    Luồng này tiếp tục thảo luận ở đây

    Chúc vui
    Công ty TNHH Thương mại và Giao nhận R&P
    store.hn@rpc.vn - store.hcm@rpc.vn

    Học PIC như thế nào?

    Comment

    • lion
      Đệ tử 6 túi
      • May 2007
      • 126

      #3
      bác F cho em vài link về CCS C 4.xxx

      Comment

      • lion
        Đệ tử 6 túi
        • May 2007
        • 126

        #4
        tìm trong diễn đàn này mệt quá

        Comment

        • picthanh
          Đệ tử 2 túi
          • Jun 2007
          • 44

          #5
          to hard : chắc phải tháo ra cài lại thôi, lưu là thằng này và thằng Deepfreeze ko ưa gì nhau, nên cài vào ko chạy dc, báo lỗi tùm lum, lúc trước tui bị một lần rồi.
          VÔ DANH !!!

          Comment

          • Hard
            Đệ tử 2 túi
            • May 2006
            • 26

            #6
            Hi,
            Đành phải xin phép câu thêm một bài vậy. Bác có thể giải quyết vấn đề bằng cách down phiên bản 4.065 về. Trong phiên bản này có IDEUTILS sẵn, chỉ cần chạy file này để cài đặt, nó tương thích cho cả version 4.068. Bên thread Trình biên dịch và mô phỏng đã đề cập đến vấn đề này rồi. Chúc bác thành công.
            Thân ái.

            Comment

            • tyhon
              Đệ tử 1 túi
              • Nov 2007
              • 22

              #7
              Giao tiếp Pic(16f877a) với máy tính

              em đang làm về phần giao tiếp giữa pic(16f877a) với máy tính dùng phần mềm ccs để lập trình
              anh nào có tài liệu thì có thể giúp đơ em, em đang rất cần
              mail của em là qvinh_bk86@yahoo.com.vn,
              em cảm ơn nhiều
              Rất mong thư!

              Comment

              • falleaf
                PIC Bang chủ
                • May 2005
                • 2627

                #8
                Nguyên văn bởi lion View Post
                bác F cho em vài link về CCS C 4.xxx
                Bạn đã đọc list của diễn đàn chưa? Bạn nghĩ rằng bạn có thể tìm cái chương trình nạp đó ở đâu?

                Chúc vui
                Công ty TNHH Thương mại và Giao nhận R&P
                store.hn@rpc.vn - store.hcm@rpc.vn

                Học PIC như thế nào?

                Comment

                • Tuane06_spkt
                  Nhập môn đệ tử
                  • Mar 2008
                  • 5

                  #9
                  Hic cac bac oi help me,em down các tài liệu trên điễn đàn về nhà và làm theo như các bác nói,nhưng mà sao nó không chạy,em đang dùng CCS V4.057 hôm nay em quên không mang theo đoan code em làm,nhưng đại loại là em đã khai báo #include <16F877A.h> nhưng không hiểu sao khi compiler lại báo là lỗi "A#device" cần phải thêm vào là sao các bác(hi em dịch ra đầy không biết có đúng không),các bác giúp em nhé,em đang làm đồ án liên quan đến Pic mà lại lập trình bằng C

                  Comment

                  • lion
                    Đệ tử 6 túi
                    • May 2007
                    • 126

                    #10
                    tui đang dùng phiên bản CCS 4.065
                    không biết còn phiên bản nào cao hơn không hả anh em ???

                    Comment

                    • falleaf
                      PIC Bang chủ
                      • May 2005
                      • 2627

                      #11
                      Nguyên văn bởi lion View Post
                      tui đang dùng phiên bản CCS 4.065
                      không biết còn phiên bản nào cao hơn không hả anh em ???
                      Bạn vẫn không chịu nhìn kỹ các tiêu đề được dán lên à? Hãy đọc những bài đầu tiên ở đó trở xuống.

                      Chúc vui
                      Công ty TNHH Thương mại và Giao nhận R&P
                      store.hn@rpc.vn - store.hcm@rpc.vn

                      Học PIC như thế nào?

                      Comment

                      • kennybk04
                        Đệ tử 1 túi
                        • Jan 2007
                        • 11

                        #12
                        Thắc mắc ngắt timer

                        Em viết chương trình ngắt timer nhấp nháy led, nhưng nạp vào pic phải đợi 1 lúc sau nó mới bắt đầu nháy led, bác nào khắc phục jùm em với.
                        Đây là code.

                        Code:
                        #include <16F877A.h>
                        #include <DEFS_16F877A.h>
                        #device 16F877*=16 ADC=10
                        #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
                        #use delay(clock=4000000)
                        #use fast_io(b)
                        #use fast_io(c)
                        #use fast_io(d)
                        
                        #int_timer0
                        void interrupt_timer0(){
                           int1 a;
                           int16 count;
                           set_timer0(56);
                           ++count;
                           if(count == 500)
                           {
                               count=0;
                               a=~a;
                               RB0=a;
                           }
                               
                             
                        }
                        void main()
                        {
                            set_tris_b(0);
                            setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
                            enable_interrupts(int_timer0);
                            enable_interrupts(global);
                            set_timer0(56);
                            
                            while(true)
                            {
                            }
                        }
                        Last edited by namqn; 30-04-2008, 09:34 PM.

                        Comment

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

                          #13
                          Trước khi vào vòng while(true) trong main(), bạn nên đặt trước giá trị của count, nếu không thì count có thể mang giá trị bất kỳ, và điều kiện (count == 500) của bạn có thể phải sau khi count được tăng vài chục ngàn giá trị mới thỏa mãn (nếu tình cờ sau khi PIC reset biến count mang giá trị ngẫu nhiên là 501 chẳng hạn).

                          Tôi thường khởi tạo biến count ngay trước khi vào vòng while(true) trong main(), và dùng điều kiện (count >= 500) thay cho (count == 500) trong phần xử lý ngắt.

                          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

                          • Tuane06_spkt
                            Nhập môn đệ tử
                            • Mar 2008
                            • 5

                            #14
                            hi hi em sửa được lỗi đó rùi,nhưng vẫn không hiểu,bác nào giải thích hộ em với,khi em tạo một project mới,ví dụ em tạo trong thư mục "C:\Bai_tap" thỉ trong phần soạn thảo của em xuất hiện khai báo #include "C:\Bai_tap\nhapnhayB.h" nếu em để nguyên như này thì khi compiler sẽ báo lỗi " a #device" gì đó,nhưng khi em bỏ dòng này đi thì mọi việc ok,hic

                            Comment

                            • tyhon
                              Đệ tử 1 túi
                              • Nov 2007
                              • 22

                              #15
                              Em có đoạn code sau nhưng em không hiểu là lệnh adcHI và adcLO làm gì (với khai báo
                              char adcHI,adcLO).Anh nào giải thích hộ em

                              Code:
                                 while(TRUE)
                                      {
                                             adcValue = read_adc(); // Get ADC reading
                               
                                             adcHI = (char)((adcValue >> 5)& 0x1f);       
                                             adcLO = (char)((adcValue & 0x1f)|0x80);     
                                                    
                                             putc(adcHI);  
                                             putc(adcLO);   
                               
                                             delay_ms(10);  // Preset delay, repeat every 10ms
                                      }
                              }
                              Last edited by namqn; 06-05-2008, 01:09 AM.

                              Comment

                              Working...