Thông báo

Collapse
No announcement yet.

giúp đỡ sử dụng nút nhấn điều khiển chtrình vdk

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

  • #16
    Nguyên văn bởi lethu3006 Xem bài viết
    bạn xem giúp minh chương trình này,mình muốn nhấn p2.0 để thực hiện nhay1,nhưng trong lúc thực hiện nháy 1 mà mình muốn chuyển sang nhay2 bằng cách nhấn tiếp tục p2.1,nhưng sao không được vậy bạn,bạn giúp mình với,cảm ơn bạn nhiều
    Bạn thử đoạn code này xem, chưa có chống nảy phím nhé. và nhớ là các sub nhay1 và nhay2 bị giới hạn trong vài trăm ms, nếu thời gian delay quá dài thì sẽ ảnh hưởng tới độ nhạy của việc quét phím.
    Code:
    org 0000h
    mov   r0,#0
    main:
    
    setb   p2.0
    jb       p2.0,m11
    mov  r0,#1
    jmp m21
    
    m11:
    setb p2.1
    jb p2.1,m12
    mov  r0,#2
    jmp m21
    
    m12:
    setb p2.2
    jb p2.2,m21
    mov r0,#0    ;phim cancel...
    
    m21:
    cjne  r0,  #1,m22
    call nhay1
    jmp m31
    
    m22:
    cjne r0,#2,m23
    call nhay2
    jmp m31
    
    m23:
    jine r0,#0, m31
    ; cancel cac port.... hoac chtr nao do
    
    m31:
    jmp main
    
    nhay1:
    mov p3, # 11110000b
    call delay
    mov p3, # 00001111b
    call delay
    ret
    
    nhay2:
    mov p3, # 00000000b
    call delay
    mov p3, # 11111111b
    call delay
    ret
    
    delay:
    	mov r3, #10
    vong1:	mov r4, #50
    vong2:	mov r5, #250
    	djnz r5,  $
    	djnz r4, vong2
    	djnz r3, vong1
    	ret
    end

    Comment


    • #17
      Chao các bạn minh là thành viên mới, bài này là đầu tiên mong anh em có gì thì góp ý nhé.
      Về đoạn chương trình trên minh có vài góp ý như sau:
      - Về nút nhấn bạn chưa có chống nảy như các bạn trước đã nói.
      - Về chương trình con nhay1 và nhay2:
      nhay1:
      mov p3, # 11110000b
      call delay
      mov p3, # 00001111b
      call delay
      jmp nhay1
      ret
      Lệnh Jmp nhay1 ở cuối chương trình con sẽ không cho VĐK làm lệnh ret hay nói cách khác VĐK một khi thực hiện chương trình con nhay1 hoặc nhay2 sẽ mãi mãi không thoát ra khỏi chương trình con đó được, (trừ khi reset).
      - Còn theo yêu cầu của bạn là khi đang thực hiện nhay1 mà VĐK có khả năng kiểm tra nút nhấn và nhảy sang chương trình con nhay2 thì có 2 cách, thứ nhất là viết lệnh kiểm tra nút nhấn trong cả hai đoạn chương trình con (nhay1 viết lệnh ktra nút nhấn để thực hiện cht nhay2 và ngược lại). Thứ hai bạn có thể viết chương trình ngắt sử dụng ngắt ngoài INT0 hoặc INT1 (tham khảo trong sách về cách sử dụng các ngắt này cũng như các thông số có liên quan như địa chỉ vector ngắt, tác động của ngắt đến các bộ nhớ status của VĐK).
      - Xin góp ý thêm.

      Comment


      • #18
        hướng dẫn nút nhấn dk vdk

        weo chương trình các pác đưa ra sẽ ko giải quyết dc vấn đề cống nảy và tạm ngưng
        mình viết code này các bạn xem rồi góp ý nhá
        Code:
        ORG 00H
        SJMP MAIN
        ORG 030H
        
        MAIN: 
        LCALL KEY ;GOI CT PHIM NHAN
        SJMP MAIN
        
        KEY:
        JNB P1.0,NHAY1
        JNB P1.1,NHAY2
        JNB P1.2,DUNG
        RET
        
        DUNG:
        SJMP MAIN
        RET
        
        NHAY1:
        LCALL KEY ;KIEM TRA XEM PHIM DUNG CO NHAN KO
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        LCALL KEY
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        LCALL KEY
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        RET
        
        NHAY2:
        LCALL KEY ;KIEM TRA XEM PHIM DUNG CO NHAN KO
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        LCALL KEY
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        LCALL KEY
        MOV P3,#;NHAY KIEU J THI GHI VAO DAY
        LCALL DELAY
        RET
        
        DELAY:
        ...............
        ................
        RET
        
        END:; cafe:
        cái này đã chống nhảy phím
        các bạn xem thêm vào mấy chỗ mình (......) rồi dịch ra chạy là dc
        GOOD LUCK !!!!!!!!!!!!!!
        8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
        liên lạc với em qua địa chi email: Mob: 01882.076.989

        Comment


        • #19
          các pác xem thêm cái này để có thêm ý tưởng cho ứng dụng này
          blog : http://my.opera.com/Phankeyelectronic/blog/
          8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
          liên lạc với em qua địa chi email: Mob: 01882.076.989

          Comment


          • #20
            Nguyên văn bởi hoangphat Xem bài viết
            weo chương trình các pác đưa ra sẽ ko giải quyết dc vấn đề cống nảy và tạm ngưng
            mình viết code này các bạn xem rồi góp ý nhá
            Code:
            ORG 00H
            SJMP MAIN
            ORG 030H
            
            MAIN: 
            LCALL KEY ;GOI CT PHIM NHAN
            SJMP MAIN
            
            KEY:
            JNB P1.0,NHAY1
            JNB P1.1,NHAY2
            JNB P1.2,DUNG
            RET
            
            DUNG:
            SJMP MAIN
            RET
            
            NHAY1:
            LCALL KEY ;KIEM TRA XEM PHIM DUNG CO NHAN KO
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            LCALL KEY
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            LCALL KEY
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            RET
            
            NHAY2:
            LCALL KEY ;KIEM TRA XEM PHIM DUNG CO NHAN KO
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            LCALL KEY
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            LCALL KEY
            MOV P3,#;NHAY KIEU J THI GHI VAO DAY
            LCALL DELAY
            RET
            
            DELAY:
            ...............
            ................
            RET
            
            END:; cafe:
            cái này đã chống nhảy phím
            các bạn xem thêm vào mấy chỗ mình (......) rồi dịch ra chạy là dc
            GOOD LUCK !!!!!!!!!!!!!!

            ...Chống nảy phím ở chỗ nào vậy nhỉ? Bạn chỉ giúp mình với.

            Comment


            • #21
              trời ơi !
              sao mọi người lại đâm đầu vào asem nhỉ
              bài như vậy dùng C là có thể giải quyết gọn gang`

              Comment


              • #22
                thì khi bạn nhả nút nhấn ra thì no nhảy thẳng đến đích vì vậy ko ảnh hưởng ,va giải quyết dc việc nảy phím(ko bị dội nữa)
                em dùng nó dc 1 năm rồi ko có vấn đề
                nếu các pác ko mun dùng cách này thì đúp lên sẽ chống dội dc
                ví dụ :
                KEY:
                JNB P1.0,ĐÍCH
                JNB P1.0,ĐÍCH
                RET
                ĐÍCH:
                ........
                RET

                GOOD LUCK
                8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                liên lạc với em qua địa chi email: Mob: 01882.076.989

                Comment


                • #23
                  tại sao bạn không thử viết bằng keil c nhi?
                  mình cũng là người mới học như cậu và thấy viết bằng keil c rất gọn. mình
                  đang viết chương trình tạo các mạch and,not,or (mô phỏng bằng protes,sử dụng công tắc làm đầu vào).nhưng mà cũng đang vấp
                  ai giúp mình với nhé !!!
                  mình cảm ơn trước mọi người !!!

                  Comment


                  • #24
                    ASM gần với cấu trúc 1 chut nhưng rất tiện cho việc sữa chữa và dễ hiểu
                    cái này là tùy vào người học thôi thấy học cái nào dc thì học thôi
                    8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
                    liên lạc với em qua địa chi email: Mob: 01882.076.989

                    Comment


                    • #25
                      mình không rành về asm cho lắm , mình có đoạn code viết bằng C như sau :
                      #include <REGX51.H>
                      void main ()
                      {
                      while(1)
                      {
                      unsigned char m;
                      m=P2;
                      P3=m;
                      }
                      }
                      còn đây là phần cứng


                      bạn mắc 8 cái công tắc vào 8 port của P2

                      mính mới học vdk nên kiến thức còn nông cạn

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X