Thông báo

Collapse
No announcement yet.

chương trình delay

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

  • #16
    Nguyên văn bởi trimen Xem bài viết
    push đi kèm với địa chỉ thanh ghi bạn, push 05 là đẩy thanh ghi có địa chỉ 05 vào stack và pop tuơng tự
    thế là sao hả bạn, với câu lệnh trên bạn có thể giải thích giùm mình công dụng của nó dc k?

    Comment


    • #17
      Nguyên văn bởi chick3nb0y9x Xem bài viết
      thế là sao hả bạn, với câu lệnh trên bạn có thể giải thích giùm mình công dụng của nó dc k?
      Đầu tiên lệnh Push 05 sẽ đẩy nội dung thanh ghi tại địa chỉ 05 vào stack,địa chỉ 05 này tuơng ứng với thanh ghi R5, sau đó bạn có thể sử dụng thanh ghi R5 này vào mục đích khác mà không lo giá trị R5 ở chuơng trình chính bị thay đổi, ở đây R5 được sử dụng vào chuơng trình con delay do người viết sợ bạn sẽ sử dụng R5 trong chuơng trình chính vào việc khác nên mới dùng lệnh push để lưu giữ giá trị R5 trong chuơng trình chính vào stack,khi thực hiện xong chuơng trình con delay thì gọi lệnh pop 05 lúc này dữ liệu trong stack sẽ được đưa vào ô nhớ có địa chỉ 05 chính là thanh ghi R5, dữ liệu này là dữ liệu của R5 trước khi vào chuơng trình con delay.

      Comment


      • #18
        ai biết chương trình delay mà khi ta delay nhưng vẫn thực hiện được các lệnh khác không? chỉ em với.
        cảm ơn nhiều.
        Never forget who you are!

        Comment


        • #19
          Nguyên văn bởi trimen Xem bài viết
          Đầu tiên lệnh Push 05 sẽ đẩy nội dung thanh ghi tại địa chỉ 05 vào stack,địa chỉ 05 này tuơng ứng với thanh ghi R5, sau đó bạn có thể sử dụng thanh ghi R5 này vào mục đích khác mà không lo giá trị R5 ở chuơng trình chính bị thay đổi, ở đây R5 được sử dụng vào chuơng trình con delay do người viết sợ bạn sẽ sử dụng R5 trong chuơng trình chính vào việc khác nên mới dùng lệnh push để lưu giữ giá trị R5 trong chuơng trình chính vào stack,khi thực hiện xong chuơng trình con delay thì gọi lệnh pop 05 lúc này dữ liệu trong stack sẽ được đưa vào ô nhớ có địa chỉ 05 chính là thanh ghi R5, dữ liệu này là dữ liệu của R5 trước khi vào chuơng trình con delay.
          à, thì ra là thế, cám ơn bạn nhiều nha
          thế bạn ơi, bạn có biết cách tính tần số quét ảnh của led7thanh và matrix k? hướng dẫn mình với

          Comment


          • #20
            mắt thường không thể sự thay đổi ảnh ở tần số 50hz trở lên, bạn có thể thấy tần số quét của màn hình monitor máy tính là 60hz.Với f=50hz thì mình có T=1/f=20ms vậy chu kì quét led của bạn từ 20ms trở xuống thì mắt bạn sẽ không phân biệt được các led có chớp tắt không.

            Comment


            • #21
              Nguyên văn bởi trimen Xem bài viết
              mắt thường không thể sự thay đổi ảnh ở tần số 50hz trở lên, bạn có thể thấy tần số quét của màn hình monitor máy tính là 60hz.Với f=50hz thì mình có T=1/f=20ms vậy chu kì quét led của bạn từ 20ms trở xuống thì mắt bạn sẽ không phân biệt được các led có chớp tắt không.
              vậy có phải là khj dùng vòng lặp thì mình cho 2 giá trị ô nhớ là 200 và 50 phải k bạn?

              Comment


              • #22
                bạn có thể dùng delay thường hoặc timer, nếu là timer thì giá trị ô nhớ là tl0 là low(-20000) và th0 là high(-20000) là xấp xỉ 20ms,còn dùng delay thường thì bạn tính toán chu kì các lệnh để delay đúng hoặc ít hơn 20ms.Bạn có thể tham khảo chuơng trình delay dưới đây của mình dùng để quét 14 kon led 7 đoạn:
                delay:
                push 30h
                push 31h
                mov 30h,#4
                mov 31h,#1
                lap:
                djnz 31h,$
                djnz 30h,lap
                pop 31h
                pop 30h
                ret

                Comment


                • #23
                  Nguyên văn bởi trimen Xem bài viết
                  bạn có thể dùng delay thường hoặc timer, nếu là timer thì giá trị ô nhớ là tl0 là low(-20000) và th0 là high(-20000) là xấp xỉ 20ms,còn dùng delay thường thì bạn tính toán chu kì các lệnh để delay đúng hoặc ít hơn 20ms.Bạn có thể tham khảo chuơng trình delay dưới đây của mình dùng để quét 14 kon led 7 đoạn:
                  delay:
                  push 30h
                  push 31h
                  mov 30h,#4
                  mov 31h,#1
                  lap:
                  djnz 31h,$
                  djnz 30h,lap
                  pop 31h
                  pop 30h
                  ret
                  bạn ơi, nếu với câu lệnh trên của bạn, nếu chương trình chính của mình mà k dùng ô nhớ 31h và 30h thì k cần lệnh push pop phải k bạn? còn cái giá trị gán vào 2 ô nhớ đó tại sao lại phải dùng 2 ô nhớ đó thế, tại vì 1 ô nhớ là 250bit mà,trong khj với câu lệnh trên của bạn, nó chỉ lặp có 4 lần mà?

                  Comment


                  • #24
                    đúng rồi nếu bạn không dùng 30h và 31h thì không cần dùng lệnh push,pop.1 thanh ghi 8 bit giá trị thập phân max của nó là 255 bạn,mình chạy từng bước 2 lần cho bạn thấy tại sao mình để 1 và 4:
                    Đầu tiên 31h giảm từ 1 xuống 0 ,30h giảm từ 4 xuống 3 , trở lại lặp lúc này 31h đang là 0 giảm 1 lần nữa là 255 lúc đó 31h sẽ giảm đúng 255 lần để về 0 ,30h giảm từ 3 xuống 2,trở lại lặp lúc này 31h đang là 0 giảm xuống 255 và quay lại chu trình trên cho đến khi 30h là 0.

                    Comment


                    • #25
                      Nguyên văn bởi trimen Xem bài viết
                      đúng rồi nếu bạn không dùng 30h và 31h thì không cần dùng lệnh push,pop.1 thanh ghi 8 bit giá trị thập phân max của nó là 255 bạn,mình chạy từng bước 2 lần cho bạn thấy tại sao mình để 1 và 4:
                      Đầu tiên 31h giảm từ 1 xuống 0 ,30h giảm từ 4 xuống 3 , trở lại lặp lúc này 31h đang là 0 giảm 1 lần nữa là 255 lúc đó 31h sẽ giảm đúng 255 lần để về 0 ,30h giảm từ 3 xuống 2,trở lại lặp lúc này 31h đang là 0 giảm xuống 255 và quay lại chu trình trên cho đến khi 30h là 0.
                      vậy nếu với code của bạn mình sẽ có thời gian delay là bao nhiêu vậy bạn?
                      à bạn có nic yh k? cho minh xin đc k?

                      Comment


                      • #26
                        code này mình viết lại từ code delay 50ms cuả mình nên cũng làm biếng tính bao nhiu giây , bạn có thể tham khảo code delay 50ms của mình rồi giảm 2 số trong 30h với 31h để hợp với bài tập của bạn:
                        t50ms:
                        push 30h
                        push 31h
                        mov 30h,#97
                        mov 31h,#255
                        lap:
                        djnz 31h,$
                        djnz 30h,lap
                        pop 31h
                        pop 30h
                        mov r0,#64
                        djnz r0,$
                        ret
                        Nick yh mình là Toilaai678_pt@yahoo.com

                        Comment


                        • #27
                          org....
                          mov 1,p0.0
                          delay
                          mov 0,p0.0
                          delay
                          ........
                          .......
                          end

                          0912.159.369

                          Comment


                          • #28
                            Nguyên văn bởi trimen Xem bài viết
                            code này mình viết lại từ code delay 50ms cuả mình nên cũng làm biếng tính bao nhiu giây , bạn có thể tham khảo code delay 50ms của mình rồi giảm 2 số trong 30h với 31h để hợp với bài tập của bạn:
                            t50ms:
                            push 30h
                            push 31h
                            mov 30h,#97
                            mov 31h,#255
                            lap:
                            djnz 31h,$
                            djnz 30h,lap
                            pop 31h
                            pop 30h
                            mov r0,#64
                            djnz r0,$
                            ret
                            Nick yh mình là Toilaai678_pt@yahoo.com
                            ủa sao code trên của bạn, đến lệnh pop 30h thì phải ret luôn chứ, sao còn thực hiện 2 lệnh dưới làm gì nữa
                            học kỳ trước, thầy mình có dạy mình cách tính thời gian delay dùng vòng lặp có công thức tạm gọi như thế này: 2*n*m=time delay
                            ví dụ: muốn delay 1s=1000000us=2*m*n
                            nên m*n=500000, sau đó mình chia ra, tại vì mỗi ô nhớ (r0,r1,...r7) có giá trị cực đại là 255, nên khi chia ra ta sẽ đc là 250,200,10, vậy mình cho nó vào 3 ô nhớ, thì sẽ có lệnh như thế này đúng k bạn:
                            mov r0,#10
                            lap:
                            mov r1,#200
                            lap1:
                            mov r2,#250
                            djnz r2,$
                            djnz r1,lap1
                            djnz r0,lap
                            ret
                            như thế đúng k bạn?

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X