HƯỚNG DẪN LẬP TRÌNH KEIL C CHO 8051-[Chỉ dành post bài hướng dẫn]

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • nmhoang
    Thành viên mới
    • Nov 2007
    • 23

    #496
    mình mới bắt đầu tìm hiểu KEIL C nên gặp khá nhiều rắc rối. Mình có viết 1 đoạn chương trình chớp tắt 8 led ra port1 đó, nhưng mình viết theo kiểu mãng cho gắn gọn và bị lỗi ko chạy được, chỉ giúp mình với, chương trình mình viết như sau:

    #include "regx51.h"
    int i;
    unsigned char code led[]={P1_0,
    P1_1,
    P1_2,
    P1_3,
    P1_4,
    P1_5,
    P1_6,
    P1_7};

    void delay(unsigned int time)
    {
    while(time--)
    {
    unsigned char time=121;

    };
    }
    void main(void)
    {
    while(1)
    {
    for (i=0;i<=7;i++)
    {
    printf("led[%d]=%d\t",i,led[i])=1;delay(1000);
    printf("led[%d]=%d\t",i,led[i])=0;delay(1000);
    };
    };
    }

    Comment

    • nmhoang
      Thành viên mới
      • Nov 2007
      • 23

      #497
      mình đã sửa chương trình thành thế này nhưng nó chỉ nháy đèn ở P1.0 thôi hà, mất port không nháy, mình vẫn còn sai chổ nào vậy???????/

      #include "regx51.h"
      int i;

      unsigned char code led[]={0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97};

      void delay(unsigned int time)
      {
      while(time--)
      {
      unsigned char temp=121;
      while(temp--);
      };
      }
      void main(void)
      {
      while(1)
      {
      for (i=1;i<=8;i++)
      {
      P1=led[i];
      P1=1; delay(1000);
      P1=0; delay(1000);
      };
      };
      }

      Comment

      • KDT_2008
        Banned
        • Jun 2008
        • 81

        #498
        Chỗ này nè bạn:
        P1=led[i];
        P1=1; delay(1000);
        P1=0; delay(1000);

        Sữa lại là:

        P1=led[i]; delay(1000);
        P1=1; delay(1000);
        P1=0; delay(1000);

        Thử xem nhá!

        Comment

        • VNarmy
          Moderator
          • Feb 2007
          • 1413

          #499
          Nguyên văn bởi nmhoang Xem bài viết
          unsigned char code led[]={P1_0,
          P1_1,
          P1_2,
          P1_3,
          P1_4,
          P1_5,
          P1_6,
          P1_7};
          Nguyên văn bởi nmhoang Xem bài viết
          unsigned char code led[]={0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97};
          Ko khai báo tắt như trên được đâu. Bạn cần phải phân trường hợp để tác động thôi.
          AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
          Xem thêm tại Online Store ---> Click here
          Mob: 0982.083.106

          Comment

          • alone_87
            Thành viên mới
            • Mar 2008
            • 27

            #500
            Bac NgoHaiBac oi!
            các link của bác cho em down không được.
            Bác có thể send qua mail giúp em không?
            mail:bienvangdemthu@yahoo.com
            Cảm ơn bác nha!

            Comment

            • alone_87
              Thành viên mới
              • Mar 2008
              • 27

              #501
              ah quên!
              các link trên trang luckytoki đó.
              ví dụ:

              Comment

              • alone_87
                Thành viên mới
                • Mar 2008
                • 27

                #502
                help me!

                Em cũng làm như Bác NgoHaiBAc chỉ nhưng keil của em khi debug nó báo như sau:--- Error: failed to execute 'C:\Keil\ARM\BIN\C51.EXE'
                là sao hả bác.

                Comment

                • alone_87
                  Thành viên mới
                  • Mar 2008
                  • 27

                  #503
                  bạn kien_tran nay!
                  mình cũng đang gặp lỗi như bạn:
                  Build target 'Target 1'
                  Compiling leddon.C...
                  ***WARNING C318 IN LINK 1 OF LEDDON.C: CAN'T OPEN FILE 'REGX51.H'
                  leddon.C(14):error C202 : 'P1_0' : undefined identifier
                  leddon.C(15):error C202 : 'P1_0' : undefined identifier
                  Target not creat
                  bạn giải quyết được chưa?
                  chỉ cho minihf cái.
                  thanhks!!

                  Comment

                  • anh_tran
                    Thành viên tích cực
                    • Oct 2007
                    • 136

                    #504
                    thì ko mở được file regx51.h nên bạn khai báo P1_0 ko được định nghĩa
                    bạn xem trong thu viện của mình coi có thư viên đó ko nếu ko thì mình sẽ gửi cho bạn hay xem có cái thư viện nào tương tự ko thì dùng thôi.

                    Comment

                    • alone_87
                      Thành viên mới
                      • Mar 2008
                      • 27

                      #505
                      cảm ơn nha
                      lỗi này mình khắc phục xong rồi!Do thiếu thư viện thôi.mình đã tìm được rồi!
                      thanks.

                      Comment

                      • tranpic
                        Banned
                        • Aug 2007
                        • 194

                        #506
                        Nguyên văn bởi nmhoang Xem bài viết
                        mình đã sửa chương trình thành thế này nhưng nó chỉ nháy đèn ở P1.0 thôi hà, mất port không nháy, mình vẫn còn sai chổ nào vậy???????/

                        #include "regx51.h"
                        int i;

                        unsigned char code led[]={0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97};

                        void delay(unsigned int time)
                        {
                        while(time--)
                        {
                        unsigned char temp=121;
                        while(temp--);
                        };
                        }
                        void main(void)
                        {
                        while(1)
                        {
                        for (i=1;i<=8;i++)
                        {
                        P1=led[i];
                        P1=1; delay(1000);
                        P1=0; delay(1000);
                        };
                        };
                        }
                        viết gì kì vậy bồ.thứ nhất bạn khai báo các giá trị trong mãng là 0x90....0x97 ý bạn là địa chỉ của các P1_0....P1_7 đúng không, nhưng chương trình nó chỉ hiểu đó là một mảng chứa các giá trị 8 bit ko dấu có giá trị là 0x90...0x97, cho nên khi bồ viết P1=led[i] thì Port 1 có giá trị của giá trị mảng thứ i (ví dụ: nếu i=0 thì P1=0x90, tương ứng với các led ở chân P1_4 và P1_7 sáng với điều kiện là kích sáng mức 1, nếu kích sáng mức 0 thì 2 thằng này tắt), lý do bạn ko thấy các đèn chớp tắt(lung lung theo giá trị mảng) là do thiếu delay thôi...

                        for (i=1;i<=8;i++)
                        {
                        P1=led[i];delay(1000)
                        P1=1; delay(1000);
                        P1=0; delay(1000);
                        };
                        nếu viết như trên thì sau khi sáng 1 giá trị mảng xong là nó sáng P1_0 1 cái.

                        nếu muốn viết chỉ sáng tắt tuần tự các led thì bạn thử như thế này đi.

                        #include "AT89X52.h"
                        void delay(unsigned int time)
                        {
                        while(time--)
                        {
                        unsigned char temp=121;
                        while(temp--);
                        }
                        }
                        void main(void)
                        {
                        unsigned char i;
                        while(1)
                        {
                        for (i=0;i<8;i++)
                        {
                        P1=1<<i;
                        delay(1000);
                        P1=0;
                        delay(1000);
                        }
                        }
                        }


                        chúc bạn thành công!!!!!!!!!!!!!

                        Comment

                        • hoangthehung
                          Banned
                          • Jan 2008
                          • 48

                          #507
                          cho minh hoi ve keil cho p89v51rd2

                          #include&lt;P89x51rd2.h> : dong nay nghia la sao ma em bi loi hoai. anh chi nao co cho em xin.

                          Comment

                          • hoangthehung
                            Banned
                            • Jan 2008
                            • 48

                            #508
                            nhan day, bac nao co code robocon cho ho phillip ( p89v51rb2 hoac p89v51rd 2)hoan chinh (code c nha ) gui cho minh tham khao duoc khong , minh me robocon va dang tap lap trinh de sang nam choi. email cua minh : hoangthehung.bkas@gmail.com .thank truoc nha!

                            Comment

                            • anh_tran
                              Thành viên tích cực
                              • Oct 2007
                              • 136

                              #509
                              Nguyên văn bởi hoangthehung Xem bài viết
                              #include&lt;P89x51rd2.h> : dong nay nghia la sao ma em bi loi hoai. anh chi nao co cho em xin.
                              mình nghĩ ko có đâu chỉ có #include<P89x51rd2.h>
                              khai báo thư viện để tiện cho việc sử dụng thôi (những từ gợi nhớ)

                              Comment

                              • manfred
                                Thành viên mới
                                • Jul 2008
                                • 2

                                #510
                                Help!!!! Lap trinh matblab de giai phuong trinh

                                Ban o minh co mot bai toan Keu viet Thuat toan Function =pp lap don
                                Minh xin nho ban chi giup
                                Tinh nghiem gan dung cua phuong trinh f(x)=0 theo pp lap don
                                Yeu cau nhap
                                Ham so g(x) duoi dang chuoi_Ham so g(X) la ham duoc bien doi tu phuong trinh f(X) co dang x=g(x)
                                Khoang phan li nghiem: can duoi a-can tren b
                                Sai so ep
                                He so co q
                                Gia tri lap ban dau x0 thuoc khoang[a,b]
                                Yeu cau xuat ra
                                Nghiem gan dung x trong khoang[a,b]
                                Bang ket qua:
                                f(X)=x3+x-1000 g(X)=can bac 3(1000-x) [a,b]=[9,10] eq=0.001 q=0.0034 x0=10 x=?
                                f(x)=(x-cos(x)) g(X)=cos(x) [0,1] eq=0,001 q=0.85 x0=1 x=?

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...