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

                                • mèomướp
                                  Trả lời cho Công thức điện tử
                                  bởi mèomướp
                                  Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                  hôm nay, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                  hôm nay, 20:31
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  Ok , thanks bác đã chỉ...
                                  hôm nay, 15:06
                                • nguyendinhvan
                                  Công thức điện tử
                                  bởi nguyendinhvan
                                  Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                  Chập thì thay. Cháy thì tháo
                                  Làm thì láo. Báo thì hay
                                  May thì khoe. Rủi thì bỏ
                                  Thành tích nhỏ. Báo thành to
                                  Làm cho có. Báo chi li
                                  Sai cả li. Báo
                                  ...
                                  hôm nay, 00:35
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                  Hôm qua, 22:31
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                  Hôm qua, 22:14
                                • bactho
                                  Trả lời cho Tự làm máy đo Cuộn cảm
                                  bởi bactho
                                  Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                  Hôm qua, 21:48
                                • yname11
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi yname11
                                  màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                  Hôm qua, 21:43
                                • bactho
                                  Trả lời cho các bạn giúp mình về file HEX với!!!
                                  bởi bactho
                                  Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                  Hôm qua, 21:21
                                • mèomướp
                                  Trả lời cho Xin hỏi về màn hình laptop
                                  bởi mèomướp
                                  Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                  Hôm qua, 20:43
                                Đang tải...
                                X