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

                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                                  hôm nay, 13:11
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                                  hôm nay, 09:25
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                                  Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                                  hôm nay, 09:10
                                • Ng.Phuong.5
                                  Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                                  bởi Ng.Phuong.5
                                  Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                                  Mấy con...
                                  Hôm qua, 19:44
                                • viettinh
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi viettinh
                                  Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                                  Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                                  Hôm qua, 18:12
                                • nguyendinhvan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi nguyendinhvan
                                  Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                                  Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                                  Cách đơn giản...
                                  Hôm qua, 00:04
                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                                  08-01-2025, 19:02
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                                  08-01-2025, 15:43
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                                  08-01-2025, 15:28
                                • mèomướp
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi mèomướp
                                  Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                                  08-01-2025, 11:44
                                Đang tải...
                                X