Thông báo

Collapse
No announcement yet.

Tính tổng số chu kì máy

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

  • Tính tổng số chu kì máy

    Hi,
    Cho mình hỏi cách tính tổng số chu kì máy với đoạn Delay dưới.
    (Có thể cho mình công thức tổng quát với đoạn lệnh dưới)


    Delay:
    Mov R7,#0FFH
    Kt1: Mov R6,#0FFH
    Kt2 Mov R5,#0FFH
    Kt3: Djnz R5,Kt3
    Djnz R6,Kt2
    Djnz R7,Kt1
    Ret

  • #2
    hai vòng lặp thì tính như dưới, còn 3 cái thì tính sao nhỉ. Ai giúp mình đi


    Tổng thời gian của chương trình con Delay:

    Nếu sử dụng thạch anh 12MHz thì mỗi chu kì máy là 1µs
    Lệnh Mov R7,#0FFH thực hiện 1 lần và mất 1 chu kì máy
    Lệnh Djnz R6,Kt1 thực hiện 255 lần và mỗi lần mất 2 chu kì máy
    Đoạn lệnh
    Kt2: Mov R6,#0FFH
    Kt1: Djnz R6,Kt1 ;kí hiệu Kt thay cho kiểm tra
    Djnz R7,Kt2
    Đoạn lệnh này được thực hiện 255 lần với mỗi lần gồm
    (255×2)chu kì máy của lệnh Djnz R6,Kt1
    và 2 chu kì máy của lệnh Djnz R7,Kt2
    và 1 chu kì máy của lệnh Mov R6,#0FFH
    Tổng cộng đoạn trên đã thực hiện (1+(255×2)+2)×255)=130815 chu kì máy
    Vậy tổng cộng chương trình con Delay đã thực hiện 130815+1=130816 chu kì máy
    tức là đã thực hiện trong 130816µs , khoảng thời gian gần bằng 0.13s
    Như vậy trong 1s led sáng khoảng 4 lần đủ để mắt người có thể nhận ra được

    Comment


    • #3
      Nguyên văn bởi binhdao123 Xem bài viết
      Hi,
      Cho mình hỏi cách tính tổng số chu kì máy với đoạn Delay dưới.
      (Có thể cho mình công thức tổng quát với đoạn lệnh dưới)


      Delay:
      Mov R7,#0FFH
      Kt1: Mov R6,#0FFH
      Kt2 Mov R5,#0FFH
      Kt3: Djnz R5,Kt3
      Djnz R6,Kt2
      Djnz R7,Kt1
      Ret
      Delay:
      Mov R7,#0FFH
      Kt1: Mov R6,#0FFH
      Kt2 Mov R5,#0FFH
      Kt3: Djnz R5,Kt3 ; Thời gian trễ vòng này = 2*255 = 510 MC
      Djnz R6,Kt2 ; Thời gian trễ vòng này = (510 + 2 + 1) * 255 = 130815 MC
      Djnz R7,Kt1 ; Thời gian trễ vòng này = (130815 + 2 + 1) * 255 = 33358590 MC

      => Tổng thời gian tính từ khi gọi lệnh delay đến khi kết thúc lệnh trở về là: 33358590 + 1 + 1 = 33358592 chu kỳ máy.
      Nếu dùng thạch anh 12MHz thì (1MC = 1us) chương trình trên tạo trễ 1 khoảng thời gian là: 33358592 * 1us = 33358592 us ~= 33,34s

      Comment


      • #4
        Delay:
        Mov R7,#0FFH
        Kt1: Mov R6,#0FFH
        Kt2 Mov R5,#0FFH
        Kt3: Djnz R5,Kt3 ; Thời gian trễ vòng này = 2*255 = 510 MC
        Djnz R6,Kt2 ; Thời gian trễ vòng này = (510 + 2 + 1) * 255 = 130815 MC // số 2 và 1 là của 2 đoạn lệnh nào vậy bạn.
        Djnz R7,Kt1 ; Thời gian trễ vòng này = (130815 + 2 + 1) * 255 = 33358590 MC //số 2 và 1 là của 2 đoạn lệnh nào vậy bạn.
        33358590 + 1 + 1 = 33358592 // 1 và 1 là của đoạn lệnh nào vậy bạn.

        Có thể rút ra công thức tính tổng quát được không bạn.

        Thank.
        P/S: Mình không phải chuyên ngành điện tử nhưng có học môn vi điều khiển nên bạn có thể giải thích kĩ hơn cho mình nhe.

        Comment


        • #5
          Nguyên văn bởi binhdao123 Xem bài viết
          Delay:
          Mov R7,#0FFH
          Kt1: Mov R6,#0FFH
          Kt2 Mov R5,#0FFH
          Kt3: Djnz R5,Kt3 ; Thời gian trễ vòng này = 2*255 = 510 MC
          Djnz R6,Kt2 ; Thời gian trễ vòng này = (510 + 2 + 1) * 255 = 130815 MC // số 2 và 1 là của 2 đoạn lệnh nào vậy bạn.
          Djnz R7,Kt1 ; Thời gian trễ vòng này = (130815 + 2 + 1) * 255 = 33358590 MC //số 2 và 1 là của 2 đoạn lệnh nào vậy bạn.
          33358590 + 1 + 1 = 33358592 // 1 và 1 là của đoạn lệnh nào vậy bạn.

          Có thể rút ra công thức tính tổng quát được không bạn.

          Thank.
          P/S: Mình không phải chuyên ngành điện tử nhưng có học môn vi điều khiển nên bạn có thể giải thích kĩ hơn cho mình nhe.
          Delay:
          Mov R7,#0FFH
          Kt1: Mov R6,#0FFH
          Kt2 Mov R5,#0FFH
          Kt3: Djnz R5,Kt3 ; Thời gian trễ vòng này = 2*255 = 510 MC
          Djnz R6,Kt2 ; Thời gian trễ vòng này = (510 + 2 + 1) * 255 = 130815 MC | Số 2 cho lệnh Djzn R6, Kt21 cho lệnh Kt2 Mov R5,#0FFH
          Djnz R7,Kt1 ; Thời gian trễ vòng này = (130815 + 2 + 1) * 255 = 33358590 MC | Tương tự như bên trên.

          Còn ở dòng: 33358590 + 1 + 1 = 33358592 thì 1MC cho lệnh RET1 MC cho lệnh Mov R7,#0FFH (đây là các lệnh ở ngoài vòng lặp chính - còn vòng lặp chính được thực hiện bởi các lệnh DJNZ)

          Nếu bạn muốn viết những câu lệnh do một thời gian trễ định trước thì có thể tính được. Còn nếu cho một đoạn lệnh trước và tính thời gian trễ của đoạn lệnh (như đề bài trên của bạn) thì đành phải lần theo từng dòng lệnh để tính thôi.

          Comment


          • #6
            Nguyên văn bởi Ck33spkt Xem bài viết
            Delay:
            Mov R7,#0FFH
            Kt1: Mov R6,#0FFH
            Kt2 Mov R5,#0FFH
            Kt3: Djnz R5,Kt3 ; Thời gian trễ vòng này = 2*255 = 510 MC
            Djnz R6,Kt2 ; Thời gian trễ vòng này = (510 + 2 + 1) * 255 = 130815 MC | Số 2 cho lệnh Djzn R6, Kt21 cho lệnh Kt2 Mov R5,#0FFH
            Djnz R7,Kt1 ; Thời gian trễ vòng này = (130815 + 2 + 1) * 255 = 33358590 MC | Tương tự như bên trên.

            Còn ở dòng: 33358590 + 1 + 1 = 33358592 thì 1MC cho lệnh RET1 MC cho lệnh Mov R7,#0FFH (đây là các lệnh ở ngoài vòng lặp chính - còn vòng lặp chính được thực hiện bởi các lệnh DJNZ)

            Nếu bạn muốn viết những câu lệnh do một thời gian trễ định trước thì có thể tính được. Còn nếu cho một đoạn lệnh trước và tính thời gian trễ của đoạn lệnh (như đề bài trên của bạn) thì đành phải lần theo từng dòng lệnh để tính thôi.
            Thanks!!!!
            P/S: Cho mình xin yahoo hoặc email đi.

            Comment


            • #7
              thank!!!cho minh xin fb di Ck33spkt va binhdao123

              Comment


              • #8
                Đề : cho tần số thạch anh 6Mhz , viết chương trình delay 192ms .
                => fmay = fxn/12 = 6/12=0.5
                1 chu kỳ máy thực hiện mất 0.5*10^-6 s
                tìm X chu kỳ máy để trễ 1 khoảng 192*10^-3 s
                ==> X = (192*10^-3 ) /(0.5*10^-6) = 384000 chu kỳ máy
                vậy phải viết hàm delay thường như thế nào để thực hiến 384000 chu kỳ máy (trễ 192ms )
                và nếu viết bằng time thì viết ntn để trễ 192ms . mong các bác chỉ giúp . ( nếu phía trên e tính sai thì mong các bác chỉ bảo thêm )
                Ph.vmr

                Comment


                • #9
                  Nguyên văn bởi phonghp91 Xem bài viết
                  Đề : cho tần số thạch anh 6Mhz , viết chương trình delay 192ms .
                  => fmay = fxn/12 = 6/12=0.5
                  1 chu kỳ máy thực hiện mất 0.5*10^-6 s
                  tìm X chu kỳ máy để trễ 1 khoảng 192*10^-3 s
                  ==> X = (192*10^-3 ) /(0.5*10^-6) = 384000 chu kỳ máy
                  vậy phải viết hàm delay thường như thế nào để thực hiến 384000 chu kỳ máy (trễ 192ms )
                  và nếu viết bằng time thì viết ntn để trễ 192ms . mong các bác chỉ giúp . ( nếu phía trên e tính sai thì mong các bác chỉ bảo thêm )
                  1 chu kì máy của 6Mhz là 2uS

                  Comment


                  • #10
                    úi chết mình nhầm đó là f chứ không phải T . vậy với Tmay=2us thì để trễ 192ms cần thực hiện 96000 chu ky máy đúng không b chung 1608 . nếu đúng thì chỉ mình cách viết hàm delay nhé . thankss
                    Ph.vmr

                    Comment


                    • #11
                      Nguyên văn bởi phonghp91 Xem bài viết
                      úi chết mình nhầm đó là f chứ không phải T . vậy với Tmay=2us thì để trễ 192ms cần thực hiện 96000 chu ky máy đúng không b chung 1608 . nếu đúng thì chỉ mình cách viết hàm delay nhé . thankss
                      Đây là đoạn code thực hiện delay 192ms với thạch anh 12MHz, bạn có thể tham khảo và phát triển thêm với thạch anh 6MHz của bạn:
                      Code:
                      ; START: Wait loop, time: 192 ms
                      ; Clock: 12000.0 kHz (12 / MC)
                      ; Used registers: R0, R1, R2, R3
                          MOV    R3, #002h
                          MOV    R2, #0BAh
                          MOV    R1, #004h
                          MOV    R0, #03Eh
                          NOP
                          DJNZ    R0, $
                          DJNZ    R1, $-5
                          DJNZ    R2, $-9
                          DJNZ    R3, $-13
                          MOV    R0, #0CEh
                          DJNZ    R0, $
                      ; Rest: 0
                      ; END: Wait loop

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X