Thông báo

Collapse
No announcement yet.

Delay

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

  • Delay

    Các bác cho em hỏi đoạn delay sau thì mất thời gian bao lâu với ms =1. ic dùng con 89s52 và thạch anh 11.0592Mhz.Em cảm ơn
    void delay_ms(unsigned int ms)
    {
    unsigned int h,j;
    for(h=0;h<ms;h++)
    for(j=0;j<125;j++)
    {}
    }

  • #2
    for(h=0;h<1;h++) thì mình nghĩ nó có tạo trễ đâu nhỉ?

    Comment


    • #3
      Ý em là cả hàm delay_ms đó mất bao nhiêu lâu ạ

      Comment


      • #4
        Nguyên văn bởi quyen607 Xem bài viết
        for(h=0;h<1;h++) thì mình nghĩ nó có tạo trễ đâu nhỉ?
        mình dạo này ít lập trình trên 8051 nên ko tiện test thử, nhưng nếu bạn muốn biết vòng lặp đó mất bao nhiêu thời gian thì bạn xao ko test thử đi, bằng cách là bạn viết một chương trình nhỏ, sau đó debug, khi đó sẽ có một cửa sổ hiện ra mã assembly của đoạn bạn viết bằng C. (nhớ ko nhầm thì đoạn lặp trên mất tầm 8 hay 12 chu kỳ hay xao đó.).

        Comment


        • #5
          Nguyên văn bởi quang_le_pt Xem bài viết
          Các bác cho em hỏi đoạn delay sau thì mất thời gian bao lâu với ms =1. ic dùng con 89s52 và thạch anh 11.0592Mhz.Em cảm ơn
          void delay_ms(unsigned int ms)
          {
          unsigned int h,j;
          for(h=0;h<ms;h++)
          for(j=0;j<125;j++)
          {}
          }
          Nguyên văn bởi quang_le_pt Xem bài viết
          Ý em là cả hàm delay_ms đó mất bao nhiêu lâu ạ
          Một vòng for hết khoảng 8 chu kỳ máy. ở chương trình trên cho lặp lại 125 vòng for , suy ra hết thời gian = 125*8 = 1000 us= 1ms để chạy hết cái vòng for thứ 2. Vậy muốn tạo thời gian trễ bao nhiêu thì đặt ms (ở vòng for thứ nhất)cho phù hợp thôi.
          //Hi. Lần này là lần thứ 3 mình trả lời câu này trên diễn đàn.Đây là câu hỏi rất thú vị.
          Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
          http://diencongnghiep360.com/
          http://tudienhathe.vn/

          Comment


          • #6
            Cảm ơn bác vietthanh123 rất nhiều. bác cho e hỏi mình có tính thời gian 1 chu kì máy ko ạ , như với thạch anh 11.0592M với thạch anh 12M sẽ khác nhau

            Comment


            • #7
              Thì do họ 8051 bên trong có 1 bộ chia tần, bộ này sẽ cấp clock cho các khối bên trong chip từ nguồn dao động ngoài qua 2 chân XTAL1 và XTAL2. Bình thường bộ chia tần sẽ ở chế độ mặc định là chia cho 12(bởi vậy bạn thấy với dòng 8051 thì mọi người hay dùng loại thạch anh này, khi đó sẽ rất dễ tính chu kỳ máy),. Vậy khi nếu bạn dùng thạch anh 12M thì sẽ tạo ra giao động là 12/12=1M cho các khối bên trong chip. Khi đó 1 chu kỳ máy sẽ thực hiện hết 1us. Nếu bạn dùng thạch anh 11.0592 thì dĩ nhiên chu kỳ máy sẽ chậm hơn so với khi dùng thạch anh 12M rồi. Tuy nhiên nó cũng ko có sự khác biệt nhiều lắm, thạch anh 11.0592 chỉ dùng khi có mạch truyền thông RS232 thôi.
              Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
              http://diencongnghiep360.com/
              http://tudienhathe.vn/

              Comment


              • #8
                Vác proteus ra bug 1 nhát ra ngay mà. ms=1 thì trễ 1.11ms với thạch anh 11.0592MHz

                Comment


                • #9
                  em tính thế này . 1 chu kì máy sẽ là 12/11.0592 = 1.085 uS
                  một vòng for khoảng 8 chu kì máy nên = 8*1.085 = 8.68 uS
                  vậy delay_ms(1) = 125*8.68 = 1085 uS

                  Comment

                  Về tác giả

                  Collapse

                  quang_le_pt yahoo: quang_le_haui@yahoo.com.vn phone: 01656290153 Tìm hiểu thêm về quang_le_pt

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

                  Collapse

                  Đang tải...
                  X