Thông báo

Collapse
No announcement yet.

xung clock

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

  • xung clock

    Hiện tại mình đang đề tài dùng VDK giao tiếp với mạch cầu H. Bấm start thì mạch hoat động 12 hz sau 5s thì tăng lên 24h sau 5s tiếp theo thì tăng len 50hz, sau 5s nữa thì về 12 hz, rồi bâm nút cho động cơ quay thuận, quay nghịch. Mình đang bị kẹt ở cái chổ sau 5s. Và đây là bài mình làm VDK.rar

    Còn đây là chương trình mình lap trinh, chỉ mới viết tạo xung thôi còn sau 5s nó tự chuyển thì chưa biết lap trình như thế nào
    org 0000h

    mov tmod,#01h
    loop:
    mov th0,#high-40000 ;12,5hz
    mov tl0,#low-40000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.0
    sjmp loop

    mov tmod,#01h
    loop1:
    mov th0,#high-20000 ;25hz
    mov tl0,#low-20000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.1
    sjmp loop1

    mov tmod,#01h
    loop2:
    mov th0,#high-10000 ;50hz
    mov tl0,#low-10000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.2
    sjmp loop2
    end

  • #2
    Nguyên văn bởi bienhoacc Xem bài viết
    Hiện tại mình đang đề tài dùng VDK giao tiếp với mạch cầu H. Bấm start thì mạch hoat động 12 hz sau 5s thì tăng lên 24h sau 5s tiếp theo thì tăng len 50hz, sau 5s nữa thì về 12 hz, rồi bâm nút cho động cơ quay thuận, quay nghịch. Mình đang bị kẹt ở cái chổ sau 5s. Và đây là bài mình làm VDK.rar

    Còn đây là chương trình mình lap trinh, chỉ mới viết tạo xung thôi còn sau 5s nó tự chuyển thì chưa biết lap trình như thế nào
    org 0000h

    mov tmod,#01h
    loop:
    mov th0,#high-40000 ;12,5hz
    mov tl0,#low-40000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.0
    sjmp loop

    mov tmod,#01h
    loop1:
    mov th0,#high-20000 ;25hz
    mov tl0,#low-20000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.1
    sjmp loop1

    mov tmod,#01h
    loop2:
    mov th0,#high-10000 ;50hz
    mov tl0,#low-10000
    setb tr0
    jnb tf0,$
    clr tr0
    clr tf0
    cpl p1.2
    sjmp loop2
    end
    Theo bạn mô tả thì cái sau 5s lại chuyển xung này cũng không khó. Bạn thử tham khảo sơ đồ sau nhé:

    org 0h
    acall xung_12Hz
    acall delay_5s
    ;
    acall xung_24Hz
    acall delay_5s
    ;
    acall xung_50Hz
    acall delay_5s
    ...
    end
    Bạn viết 3 đoạn tạo xung 12Hz, 24Hz và 50Hz thành 3 chương trình con và viết thêm 1 đoạn chương trình tạo trễ 5s nữa rồi ghép chúng như sơ đồ trên là được.

    Comment


    • #3
      org 0000h
      hung:
      call xung12hz
      call delay2s
      call xung24hz
      call delay2s
      call xung50hz
      call delay2s
      sjmp hung
      xung12hz:
      mov tmod,#01h
      mov th0,#high(-40000)
      mov tl0,#low(-40000)
      setb tr0
      jnb tf0,$
      clr tr0
      clr tf0
      cpl p1.0
      ret
      xung24hz:
      mov tmod,#01h
      mov th0,#high(-20000)
      mov tl0,#low(-20000)
      setb tr0
      jnb tf0,$
      clr tr0
      clr tf0
      cpl p1.1
      ret

      xung50hz:
      mov tmod,#01h
      mov th0,#high(-10000)
      mov tl0,#low(-10000)
      setb tr0
      jnb tf0,$
      clr tr0
      clr tf0
      cpl p1.2
      ret
      delay2s:
      mov r1,#40
      x1:
      mov tmod,#01h
      mov th0,#high(-50000)
      mov tl0,#low(-50000)
      setb tr0
      jnb tf0,$
      clr tr0
      clr tf0
      cpl p1.2
      djnz r1,x1
      ret
      end

      Như vậy có đúng ko bạn, nhưng mà sao mới vào là nó nhảy xuống xung 50hz luôn vậy bạn, nó cứ chớp tắt quài ở chổ đó.
      Last edited by bienhoacc; 20-05-2012, 18:18.

      Comment


      • #4
        trời đất : nó chớp tắt hoài chỗ đó có nghĩa nó lặp lại và ko thoát ra đựoc
        vấn đề ở đâu ta phải xử lý tại đó
        tập cách troubleshooting nha
        Be quan. Plz contact through email:

        Comment


        • #5
          Nguyên văn bởi Lenh Ho Xem bài viết
          trời đất : nó chớp tắt hoài chỗ đó có nghĩa nó lặp lại và ko thoát ra đựoc
          vấn đề ở đâu ta phải xử lý tại đó
          tập cách troubleshooting nha
          Mình nhằm, mới vào nó nhảy xuống 50hz rồi chớp đúng như thời gian mình đặt, rồi nó đứng luôn. Minh ko hiểu tại sao mới vào thì nó phải nhảy xuống xung50hz mà ko phải là xung12hz. Thật ra về lap trinh VDK này mình yếu lắm bạn có thể giải thích dùm dc ko, tks.

          Comment


          • #6
            Nguyên văn bởi bienhoacc Xem bài viết
            org 0000h
            call xung12hz
            call delay2s
            call xung24hz
            call delay2s
            call xung50hz
            call delay2s

            xung12hz:
            mov tmod,#01h
            mov th0,#high(-40000)
            mov tl0,#low(-40000)
            setb tr0
            jnb tf0,$
            clr tr0
            clr tf0
            cpl p1.0
            ret
            xung24hz:
            mov tmod,#01h
            mov th0,#high(-20000)
            mov tl0,#low(-20000)
            setb tr0
            jnb tf0,$
            clr tr0
            clr tf0
            cpl p1.1
            ret

            xung50hz:
            mov tmod,#01h
            mov th0,#high(-10000)
            mov tl0,#low(-10000)
            setb tr0
            jnb tf0,$
            clr tr0
            clr tf0
            cpl p1.2
            ret
            delay2s:
            mov r1,#40
            x1:
            mov tmod,#01h
            mov th0,#high(-50000)
            mov tl0,#low(-50000)
            setb tr0
            jnb tf0,$
            clr tr0
            clr tf0
            cpl p1.2
            djnz r1,x1
            ret
            end

            Như vậy có đúng ko bạn, nhưng mà sao mới vào là nó nhảy xuống xung 50hz luôn vậy bạn, nó cứ chớp tắt quài ở chổ đó.
            Nếu không muốn cho nó chớp hoài ở chỗ đó thì dùng lệnh NHẢY, để cho nó nhảy về dòng đầu tiên thì chương trình sẽ lặp lại.

            Comment


            • #7
              Nguyên văn bởi Ck33spkt Xem bài viết
              Nếu không muốn cho nó chớp hoài ở chỗ đó thì dùng lệnh NHẢY, để cho nó nhảy về dòng đầu tiên thì chương trình sẽ lặp lại.
              Không được bạn ơi...............................

              org 0000h
              hung:
              call xung12hz
              call delay2s
              call xung24hz
              call delay2s
              call xung50hz
              call delay2s
              sjmp hung
              xung12hz:
              mov tmod,#01h
              mov th0,#high(-40000)
              mov tl0,#low(-40000)
              setb tr0
              jnb tf0,$
              clr tr0
              clr tf0
              cpl p1.0
              ret
              xung24hz:
              mov tmod,#01h
              mov th0,#high(-20000)
              mov tl0,#low(-20000)
              setb tr0
              jnb tf0,$
              clr tr0
              clr tf0
              cpl p1.1
              ret

              xung50hz:
              mov tmod,#01h
              mov th0,#high(-10000)
              mov tl0,#low(-10000)
              setb tr0
              jnb tf0,$
              clr tr0
              clr tf0
              cpl p1.2
              ret
              delay2s:
              mov r1,#40
              x1:
              mov tmod,#01h
              mov th0,#high(-50000)
              mov tl0,#low(-50000)
              setb tr0
              jnb tf0,$
              clr tr0
              clr tf0
              cpl p1.2
              djnz r1,x1
              ret
              end

              http://www.mediafire.com/?wtt9k5xvdzfpv2f

              Comment


              • #8
                Nguyên văn bởi bienhoacc Xem bài viết
                Mình nhằm, mới vào nó nhảy xuống 50hz rồi chớp đúng như thời gian mình đặt, rồi nó đứng luôn. Minh ko hiểu tại sao mới vào thì nó phải nhảy xuống xung50hz mà ko phải là xung12hz. Thật ra về lap trinh VDK này mình yếu lắm bạn có thể giải thích dùm dc ko, tks.
                Nếu viết như cấu trúc của bạn ở bên trên thì nó sẽ thực hiện xung 12Hz một lần rồi chờ 2s sau đó thực thiện xung 24hz 1 lần rồi chờ 2s rồi mới thực hiện xung 50Hz rồi chờ 2s. Cuối cùng là không làm gì cả và kết thúc chương trình.
                Last edited by Ck33spkt; 20-05-2012, 18:39.

                Comment


                • #9
                  Nguyên văn bởi Ck33spkt Xem bài viết
                  Nếu viết như cấu trúc của bạn ở bên trên thì nó sẽ thực hiện xung 12Hz trong 2s sau đó thực thiện xung 24hz trong 2s rồi mới thực hiện xung 50Hz trong 2s. Cuối cùng là không làm gì cả và kết thúc chương trình chứ làm gì có chuyện nó thực hiện ngay xung 50Hz được.
                  Mình cũng ko hiểu tại sao mới vào no lại thực hiện xung 50hz trước, bạn down bai của mình về thử xem, cấu trúc trên thì nó lập lại hoài luôn đến khi stop mô phỏng thì nó mới dừng

                  Comment


                  • #10
                    À hiểu tại sao rồi do cái delay viết sai.
                    Nhưng khi sữa lại thì 3 đèn chớp theo kiểu sáng dần tắt dần và rất chậm (chậm là do delay), ko hiểu tại sao

                    org 0000h
                    hung:
                    call xung12hz
                    call delay2s
                    call xung24hz
                    call delay2s
                    call xung50hz
                    call delay2s
                    sjmp hung
                    xung12hz:
                    mov tmod,#01h
                    mov th0,#high(-40000)
                    mov tl0,#low(-40000)
                    setb tr0
                    jnb tf0,$
                    clr tr0
                    clr tf0
                    cpl p1.0
                    ret
                    xung24hz:
                    mov tmod,#01h
                    mov th0,#high(-20000)
                    mov tl0,#low(-20000)
                    setb tr0
                    jnb tf0,$
                    clr tr0
                    clr tf0
                    cpl p1.1
                    ret

                    xung50hz:
                    mov tmod,#01h
                    mov th0,#high(-10000)
                    mov tl0,#low(-10000)
                    setb tr0
                    jnb tf0,$
                    clr tr0
                    clr tf0
                    cpl p1.2
                    ret
                    delay2s:
                    mov r1,#40
                    x1:
                    mov tmod,#01h
                    mov th0,#high(-50000)
                    mov tl0,#low(-50000)
                    setb tr0
                    jnb tf0,$
                    clr tr0
                    clr tf0
                    djnz r1,x1
                    ret
                    end

                    http://www.mediafire.com/?hquhjt29bd8vtjo
                    Last edited by bienhoacc; 20-05-2012, 19:04.

                    Comment


                    • #11
                      Nếu bạn muốn thực hiện mỗi xung kia trong thời gian 2s thì mình nghĩ bạn phải dùng ngắt. Bạn tạo 1 ngắt, cứ 2s ngắt 1 lần, rồi gọi các chương trình tạo xung. Đầu tiền là gọi xung 12Hz đồng thời kích hoạt ngắt, khi nó chạy hết 2s thì nó sẽ ngắt cái chương trình tạo xung 12Hz lại, lúc này bạn gọi tiếp chương trình tạo xung 24Hz đồng thời kích hoạt ngắt, tiếp tục như vậy cho chương trình tạo xugn 50Hz thì mình nghĩ sẽ ổn.

                      Comment


                      • #12
                        Nguyên văn bởi bienhoacc Xem bài viết
                        Mình cũng ko hiểu tại sao mới vào no lại thực hiện xung 50hz trước, bạn down bai của mình về thử xem, cấu trúc trên thì nó lập lại hoài luôn đến khi stop mô phỏng thì nó mới dừng
                        Bạn làm thế nào mà cái hình con VĐK và các linh kiện nó nhỏ tý thế?

                        Comment


                        • #13
                          Nguyên văn bởi Ck33spkt Xem bài viết
                          Bạn làm thế nào mà cái hình con VĐK và các linh kiện nó nhỏ tý thế?
                          Chỉnh lại khổ a1
                          P/s: Cái VDK này mình yếu lắm nói về ct ngắt thì mình học rồi nhưng mà cũng chưa hiểu lắm, dù sao cũng cám ơn bạn, để mình thử làm xem sao. Haizzzzzz

                          Comment


                          • #14
                            Nguyên văn bởi Ck33spkt Xem bài viết
                            Theo bạn mô tả thì cái sau 5s lại chuyển xung này cũng không khó. Bạn thử tham khảo sơ đồ sau nhé:


                            Bạn viết 3 đoạn tạo xung 12Hz, 24Hz và 50Hz thành 3 chương trình con và viết thêm 1 đoạn chương trình tạo trễ 5s nữa rồi ghép chúng như sơ đồ trên là được.
                            Bạn nên sử dụng ngắt timer để tạo xung, code như sau:

                            ;===========================================
                            X12hz EQU -40000
                            X24hz EQU -20000
                            X50hz EQU -10000
                            MODE DATA 22H
                            ;===========================================
                            CSEG AT 00H
                            JMP MAIN
                            ORG 0BH
                            ; JMP INTT0
                            ORG 1BH
                            JMP INTT1
                            ;===========================================
                            MAIN:
                            SETB EA
                            SETB ET0
                            SETB ET1
                            MOV TMOD,#11H
                            SETB TR1
                            Loop:
                            MOV MODE,#00 ; 12Hz
                            call delay2s
                            MOV MODE,#1 ; 24Hz
                            call delay2s
                            MOV MODE,#2 ; 50Hz
                            call delay2s
                            sjmp Loop

                            INTT1:
                            MOV A,MODE
                            CJNE A,#0,X24
                            MOV TH1,#HIGH X12hz
                            MOV TL1,#LOW X12hz
                            sjmp runT0
                            X24:
                            CJNE A,#1,X50
                            MOV TH1,#HIGH X24hz
                            MOV TL1,#LOW X24hz
                            sjmp runT0
                            X50:
                            MOV TH1,#HIGH X50hz
                            MOV TL1,#LOW X50hz
                            runT0:
                            CPL P1.1
                            RETI

                            delay2s:
                            mov r1,#40
                            x1:
                            mov tmod,#01h
                            mov th0,#high(-50000)
                            mov tl0,#low(-50000)
                            setb tr0
                            jnb tf0,$
                            clr tr0
                            clr tf0
                            cpl p1.2
                            djnz r1,x1
                            ret
                            PCT COMPUTER
                            (Để không làm ảnh hưởng đến thời gian và công việc cá nhân. Xin vui lòng không nhắn tin và điện thoại)

                            Comment


                            • #15
                              Nguyên văn bởi pctcom Xem bài viết
                              Bạn nên sử dụng ngắt timer để tạo xung, code như sau:
                              Cám ơn bạn nhiều, nhưng code của bạn ko đúng với bài của mình. Chương trinh của bạn mới vào thì p1.2 cứ chớp 50hz khoản 4s sau thì p1.1 chớp song song với p1.2.
                              - P1.1 chớp khoản 2s thì tắt nhưng p1.2 vẫn cứ chớp hoài, sau 4s thì p1.1 chớp lại, cứ như vậy lặp đi lặp lại. Còn p1.0 thì ko ko có tác động.
                              - Dù sao cũng cám ơn bạn đã nhiệt tình giúp đở
                              fire mô phong.rar

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X