Delay

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • quang_le_pt
    Thành viên tích cực
    • Mar 2012
    • 189

    #1

    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++)
    {}
    }
  • quyen607
    Thành viên mới
    • Jun 2009
    • 14

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

    Comment

    • quang_le_pt
      Thành viên tích cực
      • Mar 2012
      • 189

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

      Comment

      • huuthobka
        Thành viên chính thức
        • Nov 2011
        • 71

        #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

        • vietthanh123
          Thành viên tích cực
          • Mar 2011
          • 479

          #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

          • quang_le_pt
            Thành viên tích cực
            • Mar 2012
            • 189

            #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

            • vietthanh123
              Thành viên tích cực
              • Mar 2011
              • 479

              #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

              • duong_act
                Thành viên tích cực
                • Nov 2008
                • 4903

                #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

                • quang_le_pt
                  Thành viên tích cực
                  • Mar 2012
                  • 189

                  #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...