Thông báo

Collapse
No announcement yet.

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

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

  • 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


    • 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


      • 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


        • 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


          • 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


            • ah quên!
              các link trên trang luckytoki đó.
              ví dụ:
              http://luckytoki.com/haibac/download...rial/uv2.exe.c

              Comment


              • 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


                • 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


                  • 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


                    • 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


                      • 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


                        • 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


                          • 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


                            • 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


                              • 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...
                                X