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

  • Tao ham macro trong keil cho 8051

    xin cac cao thu chi giao cho em (ngohaibac ,queduong,MicroDuyphi ....)

    em viet chuong trinh cho 8051 bang ngon ngu assembler tren KEIL
    tao ham macro trong file co ten: HAM_MACRO.asm
    viet chuong trinh thu 2 co ten goi la: MAIN.asm
    ca hai chuong trinh deu o trong 1 project
    lam sao de em goi duoc ham macro trong ct HAM_MACRO tu ct MAIN ?
    (o trong file nay goi ham macro trong file kia)

    neu dung chi dan public & exturn chi goi duoc bang lenh call (lcall) thoi chu khong goi ten ham macro duoc
    vi du :
    day la chuong trinh trong file main.asm :

    ;exturn code (push_dprt,pop_dprt) ;thu dung ham nay nhung khong duoc
    org 0000
    tiep:
    push_dptr ;goi ham macro push_dptr
    pop_dptr ;goi ham macro pop_dptr
    sjmp tiep
    end

    sau day la ct thu 2
    file ham_macro.asm nhu sau :

    ;public push_dprt,pop_dprt ; thu dung ham nay nhung khong duoc
    push_dprt macro
    push dph
    push dpl
    endm
    pop_dprt macro
    pop dpl
    pop dph
    endm
    end

    mong cac ban trong dien dan chi giup
    xin cam on cac ban !

    Comment


    • xin cac cao thu chi giao cho em (ngohaibac ,queduong,MicroDuyphi ....)

      em viet chuong trinh cho 8051 bang ngon ngu assembler tren KEIL
      tao ham macro trong file co ten: HAM_MACRO.asm
      viet chuong trinh thu 2 co ten goi la: MAIN.asm
      ca hai chuong trinh deu o trong 1 project
      lam sao de em goi duoc ham macro trong ct HAM_MACRO tu ct MAIN ?
      (o trong file nay goi ham macro trong file kia)

      neu dung chi dan public & exturn chi goi duoc bang lenh call (lcall) thoi chu khong goi ten ham macro duoc
      vi du :
      day la chuong trinh trong file main.asm :

      ;exturn code (push_dprt,pop_dprt) ;thu dung ham nay nhung khong duoc
      org 0000
      tiep:
      push_dptr ;goi ham macro push_dptr
      pop_dptr ;goi ham macro pop_dptr
      sjmp tiep
      end

      sau day la ct thu 2
      file ham_macro.asm nhu sau :

      ;public push_dprt,pop_dprt ; thu dung ham nay nhung khong duoc
      push_dprt macro
      push dph
      push dpl
      endm
      pop_dprt macro
      pop dpl
      pop dph
      endm
      end

      mong cac ban trong dien dan cuu giup
      xin cam on cac ban !

      Comment


      • mấy pr0 cho mình yahoo được không? thanks

        Comment


        • Các anh chị ởi cho em hỏi một số điểm trong đoạn code này
          Đây là mạch của nó ạ

          #include <at89x52.h>
          #include <intrins.h>
          #define clk P3_0
          #define store P3_2// pin 12 Latch Clock
          #define ser P3_1 //Pin 14 Serial Data Input
          #define quet P2
          unsigned char i,x,y,a,b,min,max;
          unsigned int z=0,z1,min1,max1;
          code unsigned int chu[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          // doan ma giai ma Du lieu tich cuc muc [1]
          0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x7F,0x49,0x49, 0x49,0x36,0x00,0x3E,0x41,0x41,
          0x41,0x22,0x00,0x7F,0x41,0x41,0x41,0x3E,0x00,0x7F, 0x49,0x49,0x49,0x41,0x00,0x7F,
          0x09,0x09,0x09,0x01,0x00,0x3E,0x41,0x49,0x49,0x7A, 0x00,0x7F,0x08,0x08,0x08,0x7F,
          0x00,0x00,0x41,0x7F,0x41,0x00,0x00,0x30,0x40,0x40, 0x40,0x3F,0x00,0x7F,0x08,0x14,
          0x22,0x41,0x00,0x7F,0x40,0x40,0x40,0x40,0x00,0x7F, 0x02,0x04,0x02,0x7F,0x00,0x7F,
          0x02,0x04,0x08,0x7F,0x00,0x3E,0x41,0x41,0x41,0x3E, 0x00,0x7F,0x09,0x09,0x09,0x06,
          0x00,0x3E,0x41,0x51,0x21,0x5E,0x00,0x7F,0x09,0x09, 0x19,0x66,0x00,0x26,0x49,0x49,
          0x49,0x32,0x00,0x01,0x01,0x7F,0x01,0x01,0x00,0x3F, 0x40,0x40,0x40,0x3F,0x00,0x1F,
          0x20,0x40,0x20,0x1F,0x00,0x3F,0x40,0x3C,0x40,0x3F, 0x00,0x63,0x14,0x08,0x14,0x63,
          0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x71,0x49,0x45, 0x43,0x00,

          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

          };
          void xuatdata(){//create a High-to_low transition, enable output
          store=1;//pin 12 Latch Clock
          store=0;//tao xung Clock tác dông canh xuong'
          }

          void serial(unsigned char ser_data){
          for(i=0;i<8;i++){

          y=ser_data;
          ser_data=_crol_(ser_data,1);
          y&=0x80;

          if(y==0x80)
          ser=1;
          else
          ser=0;
          clk=1;//create a High-to-Low transition=> why?
          clk=0;

          }
          }

          void main(void){
          min1=24; //8 byte tinh tu led cuoi
          max1=32;
          min=min1;
          max=max1;

          while(1)
          {
          x=0xfe;
          while(min++)
          {
          serial(chu[min]); //led 3
          serial(chu[min-8]); //led 2
          serial(chu[min-16]); //led 1
          quet=x;
          x=_crol_(x,1);
          xuatdata();

          while(z++)
          {
          if(min==max)
          {
          min1++;
          max1++;
          min=min1;
          max=max1;
          }
          if(min1==100)
          {
          min1=24;
          max1=32;
          min=min1;
          max=max1;

          }
          if(z==700)
          {
          z=0;
          }
          }

          }

          }
          }
          Đây là code hiển thị chữ chạy ra 3 led matrix dùng IC đệm dịch 74HC595
          thứ nhât
          clk=1;//create a High-to-Low transition=> why?
          clk=0;
          Chỗ đó tại sao phải tạo xung cạnh xuống trong khi muốn cho con 595 chạy thì cần phải xung cạnh lên ?
          2..
          min1=24; //8 byte tinh tu led cuoi
          max1=32;
          min=min1;
          max=max1;
          min1=24 và max1=32 nghĩa là gì
          3.
          serial(chu[min]); //led 3
          serial(chu[min-8]); //led 2
          serial(chu[min-16]);
          khi xuất ra tại sao lại -8 rồi -16 ?
          4.
          f(min1==100)
          {
          min1=24;
          max1=32;
          min=min1;
          max=max1;

          }
          if(z==700)
          {
          z=0;
          }
          Đoạn chuơng trình trên nghĩa là sao, tại sao lại so sánh min1 với 100 và z với 700 để làm gì , em không hiểu
          5. Đối với bài này là xuất ra 3 led matrix thôi vậy nếu em muốn nâng lên 5 led matrix thì em sẽ thay đổi những điểm nào trong bài này a.
          Mong các anh chị giúp em tí, em xin chân thành cảm ơn ạ
          Mail:hagasy@gmail.com
          6.
          y=ser_data;
          ser_data=_crol_(ser_data,1);
          y&=0x80;

          if(y==0x80)
          ser=1;
          else
          ser=0;
          Còn chỗ y&=0x80 có tác dụng gì rồi đem vào so sánh if(y==0x80) ser=1 else ser=0 để làm gì em chưa hiểu lắm, mong các pro giải thích cặn kẽ hộ em ah
          Last edited by hagasy; 01-11-2009, 22:58. Lý do: Update

          Comment


          • Và anh chị nào có tài liệu chi tiết nói về IC 74HC595 tiếng việt share cho em với, đọc datasheet chỉ hiểu lơ mơ thôi tại ENglish em gà lắm

            Comment


            • hỏi về keil c

              có ai biết nhiều về keil cho mình hỏi keil c nó báo lỗi *** error 56: cant open file là lỗi gì vậy
              mình xin cam ơn!

              Comment


              • Cao thủ giúp em !
                em muốn ứng dụng pwm vào điều khiển mấy con led đơn cho đẹp mắt nhưng sao khó quá ! hic hic
                #include <REGX52.H>
                #define bat 0
                #define tat 1
                sbit led1=P2^0;
                sbit led2=P2^1;
                sbit led3=P2^2;
                sbit led4=P2^3;
                sbit led5=P2^4;
                sbit led6=P2^5;
                sbit led7=P2^6;
                sbit led8=P2^7;
                bit pwm;
                /*Tao ham tre*/

                void delay(long time)
                {
                long n;
                for(n=0;n<time;n++) { ; }
                }

                void khoitaotime0(void)
                {
                EA=0;// cam ngat toan cuc
                TMOD=0x02; //time0 che do 2, 8bit auto reload
                TH0=0x9B;//gia tri nap lai 155 doi ra so hex
                TL0=0x9B;//gia tri nap lai 155 doi ra so hex
                ET0=1;// cho phep ngat time 0
                EA=1;// cho phep ngat toan cuc
                TR0=1; // chay timer0 bat dau dem so chu ky may
                }

                unsigned char dem = 0;
                unsigned char phantramxung;

                void timer1(void) interrupt 1
                {
                TR0=0;// dung chay timer0
                TF0=0;// xoa co, o che do co tu duoc xoa
                dem++;
                if(dem<phantramxung)
                {pwm=bat; // neu bien dem<phantramxung thi dua gia tri bat led ra
                }
                else
                {pwm=tat;
                }
                if(dem==200) dem=0; // neu dem =200 thi gan lai bang 0 de bat dau chu ky moi
                TR0=1;//cho chay timer
                }
                void pwm_led(void)
                {
                int i,j;
                khoitaotime0();
                for(i=1;i<199;i++)
                {phantramxung=i; delay(1000);}
                for(j=199;j>=0;j--)
                {phantramxung=j; delay(1000);}

                }
                void main(void)
                {
                while(1)
                {
                led1=pwm;
                pwm_led();
                delay(1000);
                led2=pwm;
                pwm_led();
                delay(1000);
                led3=pwm;
                pwm_led();
                delay(1000);
                led4=pwm;
                pwm_led();
                delay(1000);
                }

                }

                Comment


                • lỗi trong Keil c

                  xin giúp em xử lý lỗi này trong keil c với:

                  ************************************************** ****************************
                  * RESTRICTED VERSION WITH 0800H BYTE CODE SIZE LIMIT; USED: 082CH BYTE (102%) *
                  ************************************************** ****************************
                  Program Size: data=53.4 xdata=0 code=2339
                  LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
                  *** FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
                  MODULE: C:\KEIL\C51\LIB\C51S.LIB (-----)
                  LIMIT: 0800H BYTES
                  Target not created

                  thanks!!!

                  Comment


                  • cái lỗi này là do phần mền Keil của bạn, chương trình C cho 89 thì không có lỗi.
                    Khắc phục bằng cách cài bản Keilc khác.

                    Comment


                    • các phần mềm lập trình cho VĐK

                      Các bác pro ơi !
                      Làm ơn giúp em với . Chẳng là em đang có thắc mắc là có bao nhiêu phần mềm có thể dùng để lập trình cho VĐK . Các bác làm ơn giúp em . Nếu muk có cả hướng dẫn dùng các phần mềm đấy thì càng tốt ak hjhj

                      Comment


                      • co ai co sach huong dan hoc kel C ko ? pót len cho em voi . Nick cua e la ANH_DUNG_240290 . Cam on truoc nha ! ah , cho e phan giao tiep phim nhan voi 89C51 luon nha . Thanks!

                        Comment


                        • sao e lam jong a ma bi loi z?
                          loi nay ne:
                          SIMULATION LOG
                          ==============
                          Design: C:\Users\hp\Desktop\Led nhay tien-lui\Led nhay tien-lui.DSN
                          Doc. no.: <NONE>
                          Revision: <NONE>
                          Author: <NONE>
                          Created: 18/01/08
                          Modified: 14/11/09

                          Compiling source files...
                          Build completed OK.
                          Compiling netlist...
                          Linking netlist...
                          Partition analysis...

                          Simulating partition 1 [038BE31F]...
                          PROSPICE Release 6.9 SP5 (C) Labcenter Electronics 1993-2006.
                          SPICE Kernel Version 3f5. (C) Berkeley University ERL.

                          Reading netlist...
                          Reading SPICE models...
                          Building circuit...
                          Instantiating SPICE models...
                          [LED FLICK 1~7] Loading HEX file '..\..\..\..\Keil\C51\Examples\led\ledtienlui.hex' .
                          ERROR: [LED FLICK 1~7] Error reading HEX file '..\..\..\..\Keil\C51\Examples\led\ledtienlui.hex' at line 1: Colon expected at start of line..
                          Warning: [LED FLICK 1~7] No program code loaded.
                          [DSIM] BOOT Error.
                          Real Time Simulation failed to start
                          Totaliters=0, Totalsteps=0, Goodsteps=0, Badsteps=0


                          Real Time Simulation FAILED.

                          Comment


                          • Nguyên văn bởi doireuphong Xem bài viết
                            co ai co sach huong dan hoc kel C ko ? pót len cho em voi . Nick cua e la ANH_DUNG_240290 . Cam on truoc nha ! ah , cho e phan giao tiep phim nhan voi 89C51 luon nha . Thanks!
                            cái này có được k bạn http://dientuvietnam.net/forums/showthread.php?t=23380

                            Comment


                            • mấy pro nào chỉ dùm mình sữa lỗi này cái mình viết chương trình cho 1 led đơn nhấp nháy nhưng khi biên dịch thì nó cứ báo lỗi tìm hoài mà hok biết là nó bị cái gì nữa đây là code của mình:
                              01. /*==================bo tien xu li====================*/
                              02. #include <AT89x51.H> // dinh kem file thu vien
                              03. #define bat 1 //dinh nghia gia tri bat den Led
                              04. #define tat 0 //dinh nghia gia tri tat den Led
                              05. /*==================khai bao bien====================*/
                              06. sbit Led = P1^0; // khai bao bien Led kieu bit chan P1.0
                              07. /*==================khai bao ham=====================*/
                              08. /*------------------ham tre--------------------------*/
                              09. void delay(long time)
                              10. {
                              11. while(time--)
                              12. }
                              13. /*--------------------ham chinh-----------------------*/
                              14. void main(void)
                              15. {
                              16. while(1)
                              17. {
                              18. Led=bat; // bat Led
                              19. delay(25000)// tre 1s
                              20. Led=tat; // tat Led
                              21. delay(25000) //tre 1s
                              22. }
                              23. }
                              và nó báo lỗi là :
                              Build target 'Target 1'
                              compingling Text1.c...
                              TEXT1.C(12): error C141: syntax error near '}'
                              TEXT1.C(20): error C141: syntax error near 'Led'
                              TEXT1.C(22): error C141: syntax error near '}'
                              khi nhấn đúp chuột vào TEXT1.C(12) thì nó báo lổi ở dòng thứ 12
                              còn khi nhấp đúp chuột vào TEXT1.C(20) thì nó báo lỗi ở dòng thứ 20
                              còn khi nhấp đúp chuột vào TEXT1.C(22) thì nó báo lỗi ở dòng thứ 22
                              mình không hiểu gì cả kiểm tra thì đâu có sai đâu nhỉ mấy pro nào đã xài qua cái này thì làm ơn chỉ dùm cái nhé
                              thank mấy pro
                              làm sao hiểu hết được công nghệ :)

                              Comment


                              • /*==================bo tien xu li====================*/
                                #include <AT89x51.H> // dinh kem file thu vien
                                #define bat 1 //dinh nghia gia tri bat den Led
                                #define tat 0 //dinh nghia gia tri tat den Led
                                /*==================khai bao bien====================*/
                                sbit Led = P1^0; // khai bao bien Led kieu bit chan P1.0
                                /*==================khai bao ham=====================*/
                                /*------------------ham tre--------------------------*/
                                //Ham con delay
                                void delay(unsigned int n)
                                {
                                unsigned int i;
                                for(i=0; i<n; i++){;}
                                }
                                /*--------------------ham chinh-----------------------*/
                                void main ()
                                {
                                while (1)


                                {
                                Led=bat; // bat Led
                                delay (25000);// tre 1s
                                Led=tat; // tat Led
                                delay (25000); //tre 1s
                                }
                                }
                                ///////////////////////////////////////////////////////////
                                Đã sửa dịch hết lỗi rồi đó
                                Mạch nạp Pickit 2 SE ---> 170k BH 1 năm
                                Pic 18F2550 PDIP Thailand bao test 60K/1c


                                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 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ạ 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 qua, 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 qua, 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 qua, 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 ??...
                                  25-11-2024, 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...
                                  25-11-2024, 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...
                                  25-11-2024, 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...
                                  25-11-2024, 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...
                                  25-11-2024, 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ả...
                                  25-11-2024, 20:43
                                Đang tải...
                                X