Thông báo

Collapse
No announcement yet.

Dành cho người mới tìm hiểu 8051

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

  • danh cho nguoi moi tim hieu 8051

    Cac anh oi tiep tuc huong dan tiep cho tui em ve nut nhan va LCD di ma.Tui em doi lau qua,nhan tien cho em hoi doan code sau cai nao thi toi uu hon va do ton ram hon:
    //======================
    void delay (unsigned int ms)
    {
    while(ms--) //ms nhap la1000 de co dc 1S
    {
    TMOD=0x01;
    TH0=0xFC;
    TL0=0x18;
    TR0=1;
    while(!TF0);
    TR0=0;
    TF0=0;
    }
    }
    //=======va doan code nay
    void delay(unsigned char ms)
    {
    while(ms--) //NHAP LA 20 de co duoc 1 s
    {
    TMOD=0x01;
    TH0=50000;
    TL0=50000;
    TR0=1;
    while(!TF0);
    TR0=0;
    TF0=0;

    }
    }
    |

    Comment


    • @Jindo:
      Theo tôi cách thứ 2 tốt hơn cách 1.
      Nhưng tại sao cả 2 cách đều dùng vòng lặp để tạo trễ? Bạn làm thế là mất đi ý nghĩa của ngắt.
      Bạn hãy làm như sau: trong hàm ngắt của timer0 bạn viết lệnh giảm giá trị mS và kiểm tra mS nếu mS<1 thì đã có 1 giây, bạn xuất lệnh điều khiển hoặc bật 1 cờ nào đó báo hiệu đã đếm hết. Làm như vậy trong quá trình timer chạy thì chip vẫn có khả năng làm những công việc khác như quét LED, đọc port...(lưu ý khai báo biến toàn cục).
      Thân.
      Một bông hồng cho những ai đang còn mẹ,
      Đang còn mẹ để lòng vui sướng hơn ..

      Comment


      • Hãy bàn về chương trình dịch VXL bằng phần mềm BasicASM nhiều hơn

        Mình thấy các bạn bàn nhiều về vi điều khiển họ 8051 dùng trình dịch C mà không thấy bạn nào nói về trình dịch BasicASM cả. Mình đưa lên diển đàn với đề tài này nhằm các bạn thảo luận nhiều hơn về trinh dịch này. Có bạn nào đang dùng trình dịch này xin hãy post lên để cùng chia sẻ .Rất mong sự góp ý của các bạn

        Comment


        • tim hieu keil c

          Cam on anh HPECOM cung cac anh trong dien dan,theo goi y cua anh em viet doan code sau de quet 1 Port bao het 0.5s the nhung no ko chay mong cac giai thich ro giup em ve van de dung timer de quet.Cam on cac anh
          #include<reg52.h>
          //khai bao bien
          unsigned char ms=10;
          //khai bao vi tri ham
          void delay();
          void ngat_timer0 ();
          //ham delay bang timer
          void delay(void)
          {
          while(ms--)
          {
          TMOD = 0x01;
          TH0 = 50000;
          TL0 = 50000;
          TR0 = 1;
          while(!TF0);
          TR0 = 0;
          TF0=0;
          }
          }
          //ham ngat dung timer 0
          void ngat_timer0(void)interrupt 1 using 0
          {
          unsigned char i=255;
          if(ms<1)
          {
          P0=0xff;
          while(i--);

          }
          }
          //ham main
          void main (void)
          {
          EA=0x82;
          P0=0;
          P2=0xff;
          while(1)
          {
          P2++;
          delay();
          }
          }
          |

          Comment


          • Chào bạn Quỳnh!

            Nguyên văn bởi quynh Xem bài viết
            Đây là quyển sách khá hay về lạp trinh C cho 8051.
            Tui up mãi lên đây ko được.Bạn nào cần thì liên hệ với mình nhé.Quyển này viết bằng tiếng anh, khá cơ bản.Dung lượng gần 5MB
            Rất vui khi bạn có sách lập trình C cho con 8051, đây là tài liệu mà mình tìm đỏ cả mắt luôn. Vì vậy mình rất cần sự chia sẻ của bạn. mail ID cua minh la: ungsieuchinh@yahoo.com . Cho minh xin nhe, cám ơn bạn nhiều. Chúc bạn vui !!

            Comment


            • Nguyên văn bởi jindo Xem bài viết
              Cam on anh HPECOM cung cac anh trong dien dan,theo goi y cua anh em viet doan code sau de quet 1 Port bao het 0.5s the nhung no ko chay mong cac giai thich ro giup em ve van de dung timer de quet.Cam on cac anh
              #include<reg52.h>
              //khai bao bien
              unsigned char ms=10;
              //khai bao vi tri ham
              void delay();
              void ngat_timer0 ();
              //ham delay bang timer
              void delay(void)
              {
              while(ms--)
              {
              TMOD = 0x01;
              TH0 = 50000;
              TL0 = 50000;
              TR0 = 1;
              while(!TF0);
              TR0 = 0;
              TF0=0;
              }
              }
              //ham ngat dung timer 0
              void ngat_timer0(void)interrupt 1 using 0
              {
              unsigned char i=255;
              if(ms<1)
              {
              P0=0xff;
              while(i--);

              }
              }
              //ham main
              void main (void)
              {
              EA=0x82;
              P0=0;
              P2=0xff;
              while(1)
              {
              P2++;
              delay();
              }
              }
              Bạn nên làm như sau:
              Code:
              // Giả sử bạn dùng thạch anh 12Mhz
              #include <reg2051.h>
              //==========================================================================================
              //Khai bao cac bien toan cuc
              //==========================================================================================
              //65.535*15~1.000.000uS=1S
              unsigned int	gIntCnt=15;	//He so nhan voi Int_tm0 de co 1S
              unsigned int	gCIntCnt=15;   //Dem he so nhan voi Int_tm0 de co 1S
              bit gOPin;
              //==========================================================================================
              // NGAT NGOAI 0
              //==========================================================================================
              void int_ext0 (void) interrupt 0 {return;}
              //==========================================================================================
              // NGAT TIMER0
              //==========================================================================================
              void int_tmr0 (void) interrupt 1 
              {	if (--gCIntCnt < 1) 	//65.535*15~1.000.000uS=1S
              	{   gCIntCnt = gIntCnt;
                               gOPin=~gOPin;
                               P1_0=gOPin;
                               //**********************************************
                               //Các lệnh bạn viết ở đây sẽ được thực hiện sau mỗi giây.
                               //**********************************************
              	}
              	TF0=0;                            //Hạ cờ
              	TR0=1;                            //Cho phép Timer0 chạy lại.
              }
              //==========================================================================================
              // NGAT NGOAI 1
              //==========================================================================================
              void int_ext1 (void) interrupt 2 {return;}
              //==========================================================================================
              // NGAT TIMER1
              //==========================================================================================
              void int_tmr1 (void) interrupt 3 {return;}
              //==========================================================================================
              // NGAT PORT NOI TIEP
              //==========================================================================================
              void int_srl (void) interrupt 4 {return;}
              //==========================================================================================
              //*********************************** CHUONG TRINH CHINH ***********************************
              //==========================================================================================
              void main(void)
              {	EA=1;		//Cho phep ngat toan cuc.
              	ET0=1;          	//Cho phep ngat bo dinh thoi 0.
              	TMOD= 0x01;	//Timer0 che do 1 16 bits.
              	TR0=1;                //Cho Timer0 chay.
              
              	P1=0x00;
              	P3=0xFF;
              	while(1)
              	{;   //Bạn viết code ở đây
                               /* *********************************************
                               Các lệnh bạn viết ở đây sẽ được thực hiện liên tục nhưng khi Timer tràn thì các lệnh sẽ đc tạm dừng lại để xử lý các lệnh trong ngắt Timer0, sau khi xứ lý ngắt xong các lệnh lại được tiếp tục từ vị trí đã dừng lúc trước.
                               ********************************************* */
              	}
              }
              Chúc bạn thành công!
              Một bông hồng cho những ai đang còn mẹ,
              Đang còn mẹ để lòng vui sướng hơn ..

              Comment


              • tặng bài tl này
                Attached Files

                Comment


                • Các bác cho hỏi : làm thế nào mà ở giữa thân chương trình , ta có thể nạp dữ liệu cho mảng 1 cách ngắn gọn, bây giờ em toàn phải làm kiểu
                  mang[0]=x;
                  mang[1]=y;
                  ...
                  mang[n]=z;
                  nên rất dài dòng
                  Cung cấp Oscilocope , Inverter , Switching , DC power supply , AC millivolt meter ....

                  Comment


                  • Nguyên văn bởi hiodong Xem bài viết
                    Các bác cho hỏi : làm thế nào mà ở giữa thân chương trình , ta có thể nạp dữ liệu cho mảng 1 cách ngắn gọn, bây giờ em toàn phải làm kiểu
                    mang[0]=x;
                    mang[1]=y;
                    ...
                    mang[n]=z;
                    nên rất dài dòng
                    sao không thử dùng vòng lặp cho nó tự nạp có phải ngắn hơn không? tôi chưa thử , chỉ nghĩ vậy thôi. bác thử xem nhé!

                    Comment


                    • có ai có chương trình cho 89s52 để điều khiển dèn giao thông cho mình với
                      cầu mong mọi người giúp đỡ.mình đang rất cần .Xin cảm ơn

                      Comment


                      • Nguyên văn bởi ngoctam_dt4k Xem bài viết
                        có ai có chương trình cho 89s52 để điều khiển dèn giao thông cho mình với
                        cầu mong mọi người giúp đỡ.mình đang rất cần .Xin cảm ơn
                        Bạn sử dụng mạch số như sơ đồ sau ,còn 89c52 thì bạn lập trình cho tạo ra xung 1Hz

                        http://dientuvietnam.net/forums/show...7457#post67457
                        Attached Files

                        Comment


                        • C ==&gt; Asm

                          Có cách nào dùng Keil để convert chương trình C sang ASM không các anh chị?

                          Comment


                          • Nguyên văn bởi bliki Xem bài viết
                            Có cách nào dùng Keil để convert chương trình C sang ASM không các anh chị?
                            lúc debug có cửa sổ các lệnh Asem tương ứng đấy

                            Comment


                            • tạo dải tần số từ 10Hz đến 5KHz

                              các Pác giúp tôi dùng KeilC lập trình bộ tạo 1 dải tần số từ 10Hz đến 5KHz với

                              Comment


                              • LED đơn.



                                cho em hỏi một chút mong anh chị giúp đỡ ,

                                em muon nối 20 con LED đơn trên một chân của vdk 8051 ,em muốn cả 20

                                LED này sáng bưng lên ,em không biêt làm cách nào nối nó ,em mong anh

                                chi giúp em lập sơ đồ nối 20 con LED nay ,

                                em rất cần đến nó ngay ,em rất cần anh chị giúp đỡ .

                                em đa tạ trước !!!!!!!!!!!!!!

                                Last edited by VNarmy; 30-01-2008, 13:08.

                                Comment

                                Về tác giả

                                Collapse

                                quynh Tìm hiểu thêm về quynh

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X