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

  • các anh ơi, em mới tập tọe lập trình, em viết chương trinh nháy led như này, nhưng nó cú báo lỗi, không hiểu vì sao?em dùng keil C
    #include<thu viện của 8051>
    sbit LED 0x80;
    int i;
    #define delay 1000
    #define ON 0
    #define OFF 1
    void init();
    void delay();
    void main()
    {
    init();
    while(1)
    {
    LED = ON;
    delay();
    LED = OFF;
    delay()
    }
    }
    void init()
    { LED = ON}
    void delay()
    {for(i=0;i<=delay;i++)
    {};}

    Comment


    • Mình cũng mua về dùng không phải kinh doanh đâu. Ai có nhu cầu thì mình để lại cho.

      Comment


      • Nguyên văn bởi hoasua_2005 Xem bài viết
        các anh ơi, em mới tập tọe lập trình, em viết chương trinh nháy led như này, nhưng nó cú báo lỗi, không hiểu vì sao?em dùng keil C
        #include<thu viện của 8051>
        sbit LED 0x80;
        int i;
        #define delay 1000
        #define ON 0
        #define OFF 1
        void init();
        void delay();
        void main()
        {
        init();
        while(1)
        {
        LED = ON;
        delay();
        LED = OFF;
        delay()
        }
        }
        void init()
        { LED = ON}
        void delay()
        {for(i=0;i<=delay;i++)
        {};}
        lỗi nhìu wa, u coi lại mấy bài đầu của luồng này về cách viết Keil C nhá " sau mỗi lệnh phải có dấu ; để báo hết lệnh"
        http://dientuvietnam.net/forums/showthread.php?t=1195

        Comment


        • các bác ơi em đang phải làm đồ án vđk về mạch đếm sử dụng cảm biến hồng ngoại với 8051,sản phẩm hiện thị máy tính,các bác chỉ cho em code để cho sản phẩm hiện thị lên máy tính bằng keilC với...em xin cảm ơn và hậu tạ!!

          Comment


          • có ai giúp mình sửa code,mình dịch ko bị lỗi nhưng chạy debug thì báo lỗi...code và mô phỏng có bên dưới....Thanks nhiều
            Attached Files

            Comment


            • sao ko ai giúp mình vậy cà!!!!!

              Comment


              • các anh ơi cho em hỏi với:
                cấu trúc lệnh :struct co ý nghĩa gì vậy.có đoạn code nào ko cho em tham khảo với.

                Comment


                • Làm thế nào để sử dụng asembly kèm với file C hả các bác!
                  Em mới tìm hiểu về dùng C để lập trình cho VĐK nên không rõ lắm !
                  Có vài chỗ thấy dùng asembly thì quen hơn!

                  Comment


                  • Đây là code dùng để đo và khống chế nhiệt độ. Mấy bác cho em hỏi tại sao nó toàn báo lỗi này: DONHIETDO.C(10): error C231: 'WR': redefinition. không biết tại sao. sửa hoài ko được. ai biết chỉ giáo dùm em nha.
                    #include<stdio.h>
                    #include<reg52.h>
                    #include<math.h>

                    /*nut nhan*/
                    sbit giam=P1^0;
                    sbit tang=P1^1;
                    sbit giu=P1^2;

                    sbit WR=P1^7;
                    /*led khong che*/
                    sbit led_giu=P1^3;
                    sbit led_tang=P1^4;
                    sbit led_giam=P1^5;

                    /*led hien thi*/
                    sbit led_tram=P2^4;
                    sbit led_chuc=P2^5;
                    sbit led_donvi=P2^6;

                    /********************/

                    int j,z;
                    unsigned int gtso,songuyen,sothapphan,m,giatri,t;
                    float dienap;
                    unsigned char tram,chuc,donvi;
                    unsigned int LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};

                    void delay (long int time)
                    {

                    long int i;
                    for(i=1;i<=time;i++)
                    {
                    TH0=(-9207)/256;
                    TL0=(-9207)%256;
                    TR0=1;
                    while(!TF0);
                    TF0=0;
                    TR0=0;
                    }

                    }

                    void hienthinhietdothuc (void)

                    {
                    donvi = t/100;
                    chuc = ((t%100)/10);
                    led_donvi = 0;led_chuc = 1; led_tram =1;
                    P0 = LED[donvi];
                    delay(5);
                    xoa();
                    led_donvi = 1;led_chuc = 0; led_tram =1;
                    P0 = LED[chuc];
                    delay(5);
                    xoa();

                    }

                    void xoa (void)

                    {
                    P2=0xff;
                    P2=0xff;
                    }

                    void caidat (void)
                    {
                    giatri=20;
                    do
                    {
                    if(!tang)
                    {
                    giatri++;
                    while(!tang);
                    }
                    if(!giam)
                    {
                    giatri--;
                    while(!giam);
                    }

                    tram=giatri/100;
                    led_donvi =1; led_chuc = 1; led_tram =0;
                    P0 = LED[tram];
                    delay(5);
                    xoa();

                    }
                    }
                    void main(void)
                    {
                    giu=tang=giam=1;
                    xoa();
                    giatri=20;
                    delay(500);
                    hienthinhietdothuc();
                    while(giu); //cho nhan
                    while(!giu); //cho nha
                    delay(100);
                    caidat();
                    P3=0xff;
                    while(1)
                    {

                    WR=0;
                    for(j=1;j<=3;+++j);
                    WR=1;
                    delay(200); //thoi gian cho bien doi
                    gtso=P3; //doc gia tri dien ap bien doi duoc
                    t=gtso-273; //muc 2.73v tuong ung voi 0c
                    /////////////////////////////////
                    if(t>=(giatri+1))//nhiet do thuc vuot qua nhiet do dat
                    {
                    led_tang=0;
                    led_giam=1;
                    led_giu=1;
                    }
                    if(t==giatri)//nhiet do thuc bang nhiet do dat
                    {
                    led_tang=1;
                    led_giam=1;
                    led_giu=0;
                    }
                    if(t<=(giatri-1))//nhiet do thuc nho hon nhiet do dat
                    {
                    led_tang=1;
                    led_giam=0;
                    led_giu=1;
                    }
                    ////////////hien thi nhiet do thuc//////////////////
                    hienthinhietdothuc();


                    }
                    }




                    Comment


                    • Nguyên văn bởi nanhqui_13 Xem bài viết
                      Đây là code dùng để đo và khống chế nhiệt độ. Mấy bác cho em hỏi tại sao nó toàn báo lỗi này: DONHIETDO.C(10): error C231: 'WR': redefinition. không biết tại sao. sửa hoài ko được. ai biết chỉ giáo dùm em nha.
                      #include<stdio.h>
                      #include<reg52.h>
                      #include<math.h>

                      /*nut nhan*/
                      sbit giam=P1^0;
                      sbit tang=P1^1;
                      sbit giu=P1^2;

                      sbit WR=P1^7;
                      /*led khong che*/
                      sbit led_giu=P1^3;
                      sbit led_tang=P1^4;
                      sbit led_giam=P1^5;

                      /*led hien thi*/
                      sbit led_tram=P2^4;
                      sbit led_chuc=P2^5;
                      sbit led_donvi=P2^6;

                      /********************/

                      int j,z;
                      unsigned int gtso,songuyen,sothapphan,m,giatri,t;
                      float dienap;
                      unsigned char tram,chuc,donvi;
                      unsigned int LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};

                      void delay (long int time)
                      {

                      long int i;
                      for(i=1;i<=time;i++)
                      {
                      TH0=(-9207)/256;
                      TL0=(-9207)%256;
                      TR0=1;
                      while(!TF0);
                      TF0=0;
                      TR0=0;
                      }

                      }

                      void hienthinhietdothuc (void)

                      {
                      donvi = t/100;
                      chuc = ((t%100)/10);
                      led_donvi = 0;led_chuc = 1; led_tram =1;
                      P0 = LED[donvi];
                      delay(5);
                      xoa();
                      led_donvi = 1;led_chuc = 0; led_tram =1;
                      P0 = LED[chuc];
                      delay(5);
                      xoa();

                      }

                      void xoa (void)

                      {
                      P2=0xff;
                      P2=0xff;
                      }

                      void caidat (void)
                      {
                      giatri=20;
                      do
                      {
                      if(!tang)
                      {
                      giatri++;
                      while(!tang);
                      }
                      if(!giam)
                      {
                      giatri--;
                      while(!giam);
                      }

                      tram=giatri/100;
                      led_donvi =1; led_chuc = 1; led_tram =0;
                      P0 = LED[tram];
                      delay(5);
                      xoa();

                      }
                      }
                      void main(void)
                      {
                      giu=tang=giam=1;
                      xoa();
                      giatri=20;
                      delay(500);
                      hienthinhietdothuc();
                      while(giu); //cho nhan
                      while(!giu); //cho nha
                      delay(100);
                      caidat();
                      P3=0xff;
                      while(1)
                      {

                      WR=0;
                      for(j=1;j<=3;+++j);
                      WR=1;
                      delay(200); //thoi gian cho bien doi
                      gtso=P3; //doc gia tri dien ap bien doi duoc
                      t=gtso-273; //muc 2.73v tuong ung voi 0c
                      /////////////////////////////////
                      if(t>=(giatri+1))//nhiet do thuc vuot qua nhiet do dat
                      {
                      led_tang=0;
                      led_giam=1;
                      led_giu=1;
                      }
                      if(t==giatri)//nhiet do thuc bang nhiet do dat
                      {
                      led_tang=1;
                      led_giam=1;
                      led_giu=0;
                      }
                      if(t<=(giatri-1))//nhiet do thuc nho hon nhiet do dat
                      {
                      led_tang=1;
                      led_giam=0;
                      led_giu=1;
                      }
                      ////////////hien thi nhiet do thuc//////////////////
                      hienthinhietdothuc();


                      }
                      }

                      khi dùng Sbit thì u nên ghi lun ra địa chỉ của nó , vd :
                      Code:
                      sbit WR 0x97 // WR = P1.7
                      cái địa chỉ này trong file AT89S53.h đó , còn nếu nhác thì dùng :
                      Code:
                      #define WR P1_7
                      thông báo lỗi trên là tên WR đc định nghĩa 2 lần . Có nghĩa là nó đã đc định nghĩa ở đâu đó trong mấy file u include . Bây h , u lại định nghĩa đó là chân P1_7 .

                      Comment


                      • Uh. Cảm ơn bạn nhiều. Nhưng mà bạn cho hỏi thêm, mình đã sửa WR thành WR_1 thì nó lại báo mấy lỗi này:
                        DONHIETDO.C(53): warning C206: 'xoa': missing function-prototype
                        DONHIETDO.C(63): error C231: 'xoa': redefinition
                        DONHIETDO.C(66): error C231: 'xoa': redefinition
                        DONHIETDO.C(91): error C141: syntax error near '}', expected 'while'


                        cứ để nguyên thì nó lỗiONHIETDO.C(10): error C231: 'WR': redefinition
                        còn cho thêm_1 thì nó lại thêm mấy lỗi đó. Sửa hoải nhưng ko được. Ai biết chỉ dùm cái nha. ^^! thanks trước!!!




                        Comment


                        • cho minh hoi chut xíu:
                          org 0000 ;reset
                          set P1,#55h ; chọn P1 đầu vào.
                          set psw 4 ; chọn băng ghi số 2
                          set sp 7 ; chọn ngăn nhớ từ số8 trở đi.
                          count equ=35;
                          pups 4; rut ra
                          púp 3;
                          mov A,P1;
                          mov R4,count;
                          mov R3,25 ; định thời
                          pop 4 ;
                          pop 3 ;ghi vao
                          Mov P2,A ; xuất ra p2
                          jim here;
                          and
                          vay giữa lệnh mov, pup,pop và sp ghi the nao ( minh sẽ chỉnh cho dung thủ tục)

                          Comment


                          • cac anh cho em hoi.Neu dung proteus.lap trinh bang Keil C xg thi nap vao chip the nao ah.cac anh huong dan cu the dk.em thu lam nhu trong sah n k thah cong

                            Comment


                            • Nguyên văn bởi nanhqui_13 Xem bài viết
                              Uh. Cảm ơn bạn nhiều. Nhưng mà bạn cho hỏi thêm, mình đã sửa WR thành WR_1 thì nó lại báo mấy lỗi này:
                              DONHIETDO.C(53): warning C206: 'xoa': missing function-prototype
                              DONHIETDO.C(63): error C231: 'xoa': redefinition
                              DONHIETDO.C(66): error C231: 'xoa': redefinition
                              DONHIETDO.C(91): error C141: syntax error near '}', expected 'while'


                              cứ để nguyên thì nó lỗiONHIETDO.C(10): error C231: 'WR': redefinition
                              còn cho thêm_1 thì nó lại thêm mấy lỗi đó. Sửa hoải nhưng ko được. Ai biết chỉ dùm cái nha. ^^! thanks trước!!!
                              bạn để nguyên thì nó bị lỗi là do bạn định nghĩa biến WR 2 lần trong đoạn code.
                              còn những lỗi xuất hiện khi bạn sửa đó là do bạn thiếu khai báo "prototype" của hàm 'xoa' ở phần mở đầu.
                              SỰ HỌC LÀ MÃI MÃI......!!!!

                              Comment


                              • Nguyên văn bởi Wind27588 Xem bài viết
                                cac anh cho em hoi.Neu dung proteus.lap trinh bang Keil C xg thi nap vao chip the nao ah.cac anh huong dan cu the dk.em thu lam nhu trong sah n k thah cong
                                hic , u phải hiểu là dù lập trình = ngôn ngữ j thì ta cũng phải dịch ra file *.HEX để nạp vào chip. Sau khi u viết code xong , phải nhấn F7 ( Keil C) thì trình dịch tạo ra file hex đúng ko ? trong Protues , click đôi vào chip , chỉ đường dẫn đến file HẼ đó mà nạp vào . ok chưa ?

                                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