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

                                Đang tải...
                                X