Thông báo

Collapse
No announcement yet.

cần giúp về cách viết replay bằng ám cho 89c51

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

  • cần giúp về cách viết replay bằng ám cho 89c51

    em đang tự học lập trình cho 89c51 bằng asm nhưng chỗ ghi replay thi giải thích không rõ ràng nên em không hiểu được vậy các bác chỉ cho em cách viết và cách tính thời gian cho relay được không ạ
    thank các bác đã quan tâm

  • #2
    Reply

    Replay là gì nhỉ.
    Hay ý bạn là delay.

    Comment


    • #3
      Nguyên văn bởi loatchoat Xem bài viết
      em đang tự học lập trình cho 89c51 bằng asm nhưng chỗ ghi replay thi giải thích không rõ ràng nên em không hiểu được vậy các bác chỉ cho em cách viết và cách tính thời gian cho relay được không ạ
      thank các bác đã quan tâm
      muốn tính được thời gian delay thì trước hết bạn phải biết rỏ mình đang sửa dụng thạch anh bao nhiêu mhz -> thời gian thực thi một lệnh là bao nhiêu, biết được chu kì máy của các lệnh ( số chu kì thực thi của mổi lệnh) -> tính là ra thôi
      ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

      Comment


      • #4
        Nguyên văn bởi thuongdtqb Xem bài viết
        muốn tính được thời gian delay thì trước hết bạn phải biết rỏ mình đang sửa dụng thạch anh bao nhiêu mhz -> thời gian thực thi một lệnh là bao nhiêu, biết được chu kì máy của các lệnh ( số chu kì thực thi của mổi lệnh) -> tính là ra thôi
        ak quên delay chứ vâng em sử dụng thạch anh 12mhz bác ạ .mà trong một ic em làm nhiều delay để chạy nhiều chế độ khác nhau có được không bác mà cách viết và cách tính thế nào vậy bác em vẫn không hiểu lám hik tiện đây bác có tài liệu nào dễ hiểu cho em xin với được không ạ hy

        Comment


        • #5
          Nguyên văn bởi maingochoc Xem bài viết
          Replay là gì nhỉ.
          Hay ý bạn là delay.
          vâng em quên mất delay chứ hj

          Comment


          • #6
            Nguyên văn bởi loatchoat Xem bài viết
            ak quên delay chứ vâng em sử dụng thạch anh 12mhz bác ạ .mà trong một ic em làm nhiều delay để chạy nhiều chế độ khác nhau có được không bác mà cách viết và cách tính thế nào vậy bác em vẫn không hiểu lám hik tiện đây bác có tài liệu nào dễ hiểu cho em xin với được không ạ hy
            chương trình delay củng là một chương trình tạo thời gian trể, ta có thể tạo nhiều delay giống như chương trình con thôi khi cần delay nào thì gọi delay đó ra. về tài liệu tham khảo thì hầu hết gt vdk nào củng có nhưng mình thấy dể hiểu nhất là gt vdk của tống văn ôn.
            muốn biết cách tính thì bạn xem vd sau:
            delay:
            mov r1,200 1 ckm
            loop: mov r2,200 1 ckm
            here: djnz r2,here 2 ckm
            djnz r1,loop 2 ckm
            ret 1 ckm
            - 1 chu kì máy bằng 12 chu kì dao động vì thế để thính số chu kì máy ta chỉ cần xác định 12 chu kì dao động của thạch anh. thạch anh 12mhz nên thời gian thực thi 1 chu kì máy là 1/(12mhz/12)=1uS
            - thời gian thục thi vòng lặp here là (200x2)x1uS=400us
            - vòng lặp loop thực hiện vòng lặp here 200 lần = 200x400=80000us
            - ở đây ta tính thêm thời gian thục thi lệnh djnz r2,loop và mov r2,200 nên thời gian thực thi lệnh này là: 3x200x1= 600us
            - thời gian thực thi lệnh ban đâu mov r1,200 và lệnh ret là (1+1)x1=2us
            -> tổng thời gian thực thi chuwong trình delay là: 80000+600+2=80602us
            và nhớ khi bạn dùng lệnh call để gọi chương trình delay thì cộng thêm 2us nửa nhé
            không biết mình tính như vậy có đúng không nửa.
            ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

            Comment


            • #7
              Nguyên văn bởi thuongdtqb Xem bài viết
              chương trình delay củng là một chương trình tạo thời gian trể, ta có thể tạo nhiều delay giống như chương trình con thôi khi cần delay nào thì gọi delay đó ra. về tài liệu tham khảo thì hầu hết gt vdk nào củng có nhưng mình thấy dể hiểu nhất là gt vdk của tống văn ôn.
              muốn biết cách tính thì bạn xem vd sau:
              delay:
              mov r1,200 1 ckm
              loop: mov r2,200 1 ckm
              here: djnz r2,here 2 ckm
              djnz r1,loop 2 ckm
              ret 1 ckm
              - 1 chu kì máy bằng 12 chu kì dao động vì thế để thính số chu kì máy ta chỉ cần xác định 12 chu kì dao động của thạch anh. thạch anh 12mhz nên thời gian thực thi 1 chu kì máy là 1/(12mhz/12)=1uS
              - thời gian thục thi vòng lặp here là (200x2)x1uS=400us
              - vòng lặp loop thực hiện vòng lặp here 200 lần = 200x400=80000us
              - ở đây ta tính thêm thời gian thục thi lệnh djnz r2,loop và mov r2,200 nên thời gian thực thi lệnh này là: 3x200x1= 600us
              - thời gian thực thi lệnh ban đâu mov r1,200 và lệnh ret là (1+1)x1=2us
              -> tổng thời gian thực thi chuwong trình delay là: 80000+600+2=80602us
              và nhớ khi bạn dùng lệnh call để gọi chương trình delay thì cộng thêm 2us nửa nhé
              không biết mình tính như vậy có đúng không nửa.
              khó hiểu thế có lẽ là phải từ từ nghiên cứu thì mới hiểu được đúng thật không có người cầm tay chỉ việc thi việc gì cũng khó .
              vd em muốn viết deay la 1 phút thì sẽ viết như thế nào vậy bác

              Comment


              • #8
                Nguyên văn bởi loatchoat Xem bài viết
                khó hiểu thế có lẽ là phải từ từ nghiên cứu thì mới hiểu được đúng thật không có người cầm tay chỉ việc thi việc gì cũng khó .
                Vd em muốn viết deay la 1 phút thì sẽ viết như thế nào vậy bác
                đơn giản nhất thì mún viết dược delay 1 phút thì bạn viết được delay 1s rồi viết chương trình delay 1p. Trong chương trình delay 1p gọi chương trình delay 1s 60 lần. Nếu mún ngắn gọn hơn nửa thì viết delay 1s, viết delay 5s ( gọi delay 1s 5 lần), viết delay 20s (gọi delay 5s 4 lần), viết delay 1p gọi delay 20s 3 lần là xong.
                Chúc vui
                ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                Comment


                • #9
                  Nguyên văn bởi thuongdtqb Xem bài viết
                  đơn giản nhất thì mún viết dược delay 1 phút thì bạn viết được delay 1s rồi viết chương trình delay 1p. Trong chương trình delay 1p gọi chương trình delay 1s 60 lần. Nếu mún ngắn gọn hơn nửa thì viết delay 1s, viết delay 5s ( gọi delay 1s 5 lần), viết delay 20s (gọi delay 5s 4 lần), viết delay 1p gọi delay 20s 3 lần là xong.
                  Chúc vui
                  thế một us băng bao nhiêu % giây vậy bác

                  Comment


                  • #10
                    Nguyên văn bởi loatchoat Xem bài viết
                    thế một us băng bao nhiêu % giây vậy bác
                    1S=1000mS=1000000uS
                    ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                    Comment


                    • #11
                      Nguyên văn bởi thuongdtqb Xem bài viết
                      1S=1000mS=1000000uS
                      bac co the viết cho em delay =20%giây được không bác em đọc mà vẫn không hỉu

                      Comment


                      • #12
                        Nguyên văn bởi loatchoat Xem bài viết
                        bac co the viết cho em delay =20%giây được không bác em đọc mà vẫn không hỉu
                        20% giấy là 200000uS=200mS
                        Code:
                        delay:     
                                      mov     r1,#200
                        lap:         mov     r2,#200
                                      nop
                                      nop
                                      nop
                                      djnz     r2,$               ;hết vòng lạp này thì được 1000uS
                                      djnz     r1,lap
                                      ret
                        ở chương trình trên là delay 200602uS
                        muốn delay chín xác thì phải dùng timer
                        ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                        Comment


                        • #13
                          Nguyên văn bởi thuongdtqb Xem bài viết
                          20% giấy là 200000uS=200mS
                          Code:
                          delay:     
                                        mov     r1,#200
                          lap:         mov     r2,#200
                                        nop
                                        nop
                                        nop
                                        djnz     r2,$               ;hết vòng lạp này thì được 1000uS
                                        djnz     r1,lap
                                        ret
                          ở chương trình trên là delay 200602uS
                          muốn delay chín xác thì phải dùng timer
                          timer là gì vậy anh. mà sao mỗi lần em thấy anh viêt delay một kiểu thế

                          Comment


                          • #14
                            Nguyên văn bởi loatchoat Xem bài viết
                            timer là gì vậy anh. Mà sao mỗi lần em thấy anh viêt delay một kiểu thế
                            ình như chú chưa đọc qua giáo trình vdk thì phải.cố gắng đọc kỉ giáo trình của tống văn ôn nhé. Trong đó có hết đó.
                            ★♀♥♂Oº°(¯`◦_ _◦´¯)°ºO♂♥♀ღ ★

                            Comment


                            • #15
                              Nguyên văn bởi loatchoat Xem bài viết
                              timer là gì vậy anh. mà sao mỗi lần em thấy anh viêt delay một kiểu thế
                              Trước tiên bạn cần tìm hiểu về cấu trúc phần cứng con vi điều khiển đã, sau đó rồi mới đến phần mềm.
                              Đây là tài liệu về tập lệnh asm cho bạn này:
                              [English] - Tap lenh ho 8051.pdf
                              Tap lenh ASM.pdf
                              I'm A industrial chicken ~:>

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X