Cần hướng dẫn về 16F877A

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • chienbinhgiu
    Thành viên mới
    • Aug 2008
    • 12

    #1

    Cần hướng dẫn về 16F877A

    Tui mới học PIC thôi , nói chung là biết được cấu trúc và cách hoạt động sơ sơ của con 16F877A ( do có học 1 chút về ASM) , nhưng chưa biết lập trình C

    Bi giờ tui muốn làm 1 mạch hẹn giờ kiểu như đồng hồ điện tử . Tui đã tìm hiểu và biết là mình phải dùng timer , ngắt rồi quét bàn phím rồi lập trình tùm lum hết .

    Phải nói là lượng kiến thức trên các diễn đàn quá nhiều , tui chỉ mới tìm hiểu , chưa xác định được hướng đi . Vậy ai đã từng làm hay biết về mạch này thì có thể dẫn hướng cho tui đi được không . Nhất là cái C .
  • deadbeat
    Thành viên mới
    • Nov 2008
    • 7

    #2
    nói chung tôi khuyên bạn, nên học C/C++, rất có ích sau này. đây có một mạch về digital clock, viết = asm, bạn xem thử http://www.hobby-elec.org/e_pic6_7.htm

    Comment

    • manhha2799
      Thành viên tích cực
      • Apr 2007
      • 140

      #3
      Từ từ tìm hiểu lập trình C đi bạn, dùng ccs c cho dễ dàng, lâu ngày rồi lập trình cũng quen thôi, Trình độ ngày cũng càng cao hơn. Lúc xưa mình cũng như bạn bây giờ. Nhưng 1 năm sau đã làm được cái lịch vạn niên treo ở nhà.

      Web:[url]www.ledviet.info/url]
      Email:
      DĐ:0949299699

      Comment

      • nhamdtk4
        Thành viên tích cực
        • Sep 2008
        • 121

        #4
        Các bác xem cho em bài này với ko hiểu sao nó lại ko chạy được. Sorry nha em ko port mạch lên dc nhưng mà nó rất đơn giản đầu ra dc lấy từ portd sử dụng ngắt ngoài để điều khiển thế thôi, các bác giúp em với nha. Thank!

        Đây là CT:
        #include<16f877a.h>
        #include<def_877a.h>
        #fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
        #use delay(clock=20000000)
        #use fast_io(d)
        #int_ext
        int i,j,nhay,loop1=255,loop2=1;
        ext_isr()
        {
        if(nhay==0) nhay=1;
        else nhay=0;
        }
        void delay_ms(int tre)
        {
        int x,y;
        for(x=0;x++;x<tre)
        {
        for(y=0;y++;y<100);
        }
        }
        void nhay1();
        void nhay2();
        void main()
        {
        trisd=0x00;
        enable_interrupts(int_ext);
        ext_int_edge(h_to_l);
        enable_interrupts(global);
        nhay=0;
        while(true)
        {
        switch(nhay)
        {
        case 0:nhay1(); break;
        case 1:nhay2(); break;
        }
        }
        }
        void nhay1()
        {
        for(i=0;i++;i<8)
        {
        portd=loop1;
        delay_ms(50);
        loop1<<=1;
        if(i==8) i=0;
        }
        }
        void nhay2()
        {
        for(j=0;j++;j<8)
        {
        portd=loop2;
        delay_ms(50);
        loop2<<=1;
        if(j==8) j=0;
        }
        }
        Nhớ quá khứ buồn rơi nước mắt.
        Nhìn tương lai lạnh buốt sống lưng.
        Y!M: nhamdtk4.

        Comment

        • manhha2799
          Thành viên tích cực
          • Apr 2007
          • 140

          #5
          Hình như thiếu khai báo portb=0xff (ngõ vào)

          Web:[url]www.ledviet.info/url]
          Email:
          DĐ:0949299699

          Comment

          • nhamdtk4
            Thành viên tích cực
            • Sep 2008
            • 121

            #6
            Nguyên văn bởi manhha2799 Xem bài viết
            Hình như thiếu khai báo portb=0xff (ngõ vào)
            Nhưng mình dùng nó làm ngắt ngoài cơ mà, chỉ cần khai báo ngắt là được chứ.
            Nhớ quá khứ buồn rơi nước mắt.
            Nhìn tương lai lạnh buốt sống lưng.
            Y!M: nhamdtk4.

            Comment

            • ttbonsevi
              Thành viên mới
              • Mar 2008
              • 26

              #7
              Mình góp ý với bạn mấy vấn đề như sau:
              1. Không hiểu bạn #include<def_877a.h> làm gì, những định nghĩa cần thiết đã có trong chương trình rồi còn gì?
              2. Bạn không cần phải viết hàm delay, ccs hỗ trợ bạn rồi
              3. Void nhay1(), void nhay2() xảy ra khi có ngắt ngoài phải không? như vậy nó phải được đặt trong hàm ext_isr()
              4. portd chắc là bạn khai báo trong #include<def_877a.h> phải không? Nếu chưa có bạn phải đặt portd=8.
              5. Bạn nên test thử với chương trình đơn giản như là xuất ra tất cả các chân và cho nháy 1s để test phần cứng và PIC. Nếu chạy ok rồi lúc ấy mới đi áp dụng các chương trình phức tạp dần lên
              Chúc bạn thành công!

              Comment

              • linhnc308
                Moderator
                • Aug 2005
                • 1084

                #8
                for(j=0;j++;j<8)
                {
                portd=loop2;
                delay_ms(50);
                loop2<<=1;
                if(j==8) j=0;
                }

                Bỏ lệnh if trong vòng lặp for đi, không cần thiết.
                Bỏ khai báo hàm delay_ms đi, không cần thiết, bản thân CCS có sẵn hàm delay_ms rồi.
                Bỏ 2 thứ đó đi, dịch lại xem sao. Kiểm tra giá trị biến Loop1 và Loop2 xem dịch đúng giá trị chưa. Có thể thử vòng lặp và hàm nháy bằng cách cho PORTD = i ở hàm nhay1 và PORTD = j ở nhay2
                Ethernet-RS232, PIC Webserver, RFID Reader
                CallerID, Cảnh báo BTS, ...
                0988006696
                linhnc308@gmail.com
                http://linhnc308.blogspot.com

                Comment

                • nhamdtk4
                  Thành viên tích cực
                  • Sep 2008
                  • 121

                  #9
                  Nguyên văn bởi linhnc308 Xem bài viết
                  Bỏ lệnh if trong vòng lặp for đi, không cần thiết.
                  Bỏ khai báo hàm delay_ms đi, không cần thiết, bản thân CCS có sẵn hàm delay_ms rồi.
                  Bỏ 2 thứ đó đi, dịch lại xem sao. Kiểm tra giá trị biến Loop1 và Loop2 xem dịch đúng giá trị chưa. Có thể thử vòng lặp và hàm nháy bằng cách cho PORTD = i ở hàm nhay1 và PORTD = j ở nhay2
                  Em làm đúng như vậy nhưng nó cũng ko ý kiến gì anh ah!
                  Nhớ quá khứ buồn rơi nước mắt.
                  Nhìn tương lai lạnh buốt sống lưng.
                  Y!M: nhamdtk4.

                  Comment

                  • handoivodoi
                    Thành viên mới
                    • Apr 2011
                    • 2

                    #10
                    vậy thì phải học c trước chứ?không biết gì thì sao mà chỉ?tui thì tạm tạm thôi!

                    Comment

                    • vodvt
                      Thành viên mới
                      • Jan 2010
                      • 1

                      #11
                      bác nào có tài liệu gì về báo trộm báo về điện thoại ko cho em xin với?
                      gmail:vodvt10101989@gmail.com

                      Comment

                      • katllu
                        Thành viên chính thức
                        • Jul 2009
                        • 49

                        #12
                        Có gì đâu mua module sim900+Píc6 về mà dùng tham khảo

                        Comment

                        • jaxuan
                          Thành viên mới
                          • Apr 2011
                          • 9

                          #13
                          chào mấy anh chị, em cũng đang làm mạch vi điều khiển cho pic 16f877a.
                          Đây là đồ án thầy giao, mong a chị giúp với, nếu có code càng tốt. mà em đang học và lập trình trong C nha
                          có thể gởi wa mail em cũng được: thanh.phong.thanh91@gmail.com
                          dưới đây là hình nè

                          Click image for larger version

Name:	yeucau.png
Views:	1
Size:	34.2 KB
ID:	1359297
                          Click image for larger version

Name:	yeucauphancung.png
Views:	1
Size:	21.6 KB
ID:	1359298

                          Comment

                          • manhtk1111
                            Thành viên mới
                            • Feb 2012
                            • 8

                            #14
                            phải hỉu rõ vè lập trình rùi hãng làm he.

                            Comment

                            • caovanhuong
                              Thành viên tích cực
                              • Oct 2008
                              • 1800

                              #15
                              Nguyên văn bởi olyvip
                              Hôm trước mình có mua code đồng hồ số giao tiếp ds1307 của anh hệ,mạch của anh ấy chạy ngon thật.Mình mô phỏng chạy rất đẹp bảo vệ đồ án được 10 điểm thích thật,anh ấy còn cho mình code lập trình nữa chứa.Đúng là mất tiền mà có được cái hay cũng thích.Đây là website bán hàng của anh ấy các bạn nè:
                              http://vip1990.blogtiengviet.net/
                              anh em nào cần mua mạch cứ liên hệ với anh ấy là có mạch chạy luôn.
                              khiếp! đề tài đồng hồ số sử dụng DS1307 chả có gì mới mẻ, tiến bộ mà cũng được 10 điểm.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...