Thông báo

Collapse
No announcement yet.

Sửa code mạch đèn giao thông

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

  • Sửa code mạch đèn giao thông

    Em đang tìm hiểu làm mạch đèn giao thông dùng nút bấm để thay đổi thời gian. Khi chạy mô phỏng thì 7 led thanh của em nó đếm ngược về 00 sau đó nó lại chạy số 85 kiểu như không thoát khỏi vòng lặp ấy. Em không biết nó bị sai ở đâu. Các bác xem lại giúp em nhé! THANK
    Code chương trình
    ORG 00H
    JMP MAIN
    ;--------------------------------------------------
    ORG 0BH
    INC R0
    CJNE R0, #40, END_
    MOV R0, #0
    INC R1
    CJNE R1,#100, END_
    MOV R1, #0
    DEC R2
    DEC R3
    CJNE R2, #0, END_
    MOV R2, #0
    CJNE R3, #0, END_
    MOV R3, #0
    END_:
    RETI
    ;------------Chuong trinh dieu khien led------------
    CT1: ; DO 1 - XANH 2
    SETB P1.4
    SETB P1.7
    CALL DELAY
    MOV R2, #5
    MOV R3, #10
    CALL MAINLOOP
    RET
    CT2: ; DO 1 - VANG 2
    CLR P1.7
    CALL DELAY
    SETB P1.5
    SETB P3.7
    MOV R2,#5
    MOV R3,#5
    CALL MAINLOOP
    RET
    CT3: ; XANH 1 - DO 2
    CLR P1.4
    CLR P3.7
    CALL DELAY
    SETB P1.6
    SETB P3.6
    MOV R2, #99
    MOV R3, #94
    CALL MAINLOOP
    RET
    CT4: ; VANG 1 - DO 2
    CLR P1.6
    CALL DELAY
    SETB P3.6
    SETB P1.5
    MOV R2,#5
    MOV R3,#5
    CALL MAINLOOP
    RET
    ;--------------------------------------
    MAIN:
    MOVP1, #00H
    MOV P3, #3FH
    MOV P2, #00H
    MOV P0, #00H
    MOV TMOD, #02H
    MOV TH0,#6
    MOV IE, #87H
    SETB TR0
    CALL CT1
    CALL CT2
    CALL CT3
    CALL CT4
    JMP MAIN
    ;---------------------------
    MAINLOOP:
    MOV A, R2
    MOV B, #10
    DIV AB
    MOV DPTR, #LEDCODE
    MOVC A, @A+DPTR
    MOV P2, A
    SETB P1.2
    CALL DELAY
    CLR P1.2
    MOV A, B
    MOVC A, @A+DPTR
    MOV P2, A
    SETB P1.3
    CALL DELAY
    CLR P1.3
    MOV A, R3
    MOV B, #10
    DIV AB
    MOV DPTR, #LEDCODE
    MOVC A, @A+DPTR
    MOV P0, A
    SETB P1.0
    CALL DELAY
    CLR P1.0
    MOV A, B
    MOVC A, @A+DPTR
    MOV P0, A
    SETB P1.1
    CALL DELAY
    CLR P1.1
    JMP MAINLOOP
    ;------------------------------
    LEDCODE: DB 40H, 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 10H
    ;------------------------------
    DELAY:
    MOV R4, #2
    DELAY1:
    DJNZ R4, DELAY1
    RET
    END
    Hình ảnh mô phỏng

  • #2
    Nguyên văn bởi langtu113 Xem bài viết
    Em đang tìm hiểu làm mạch đèn giao thông dùng nút bấm để thay đổi thời gian. Khi chạy mô phỏng thì 7 led thanh của em nó đếm ngược về 00 sau đó nó lại chạy số 85 kiểu như không thoát khỏi vòng lặp ấy. Em không biết nó bị sai ở đâu. Các bác xem lại giúp em nhé! THANK
    Code chương trình


    Hình ảnh mô phỏng
    thử lại xem sao:
    Code:
    		ORG 00H
    JMP MAIN
    ;--------------------------------------------------
    ORG 0BH
    INC R0
    CJNE R0, #40, END_
    MOV R0, #0
    INC R1
    CJNE R1,#100, END_
    MOV R1, #0
    
    CJNE R2, #0, END_1
    CJNE R3, #0, END_2
    JMP END_
    END_1:
    DEC R2
    CJNE R3, #0, END_2
    JMP END_
    END_2:
    DEC R3
    END_:
    RETI
    ;------------Chuong trinh dieu khien led------------
    CT1: ; DO 1 - XANH 2
    SETB P1.4
    SETB P1.7
    CALL DELAY
    MOV R2, #5
    MOV R3, #10
    CALL MAINLOOP
    RET
    CT2: ; DO 1 - VANG 2
    CLR P1.7
    CALL DELAY
    SETB P1.5
    SETB P3.7
    MOV R2,#5
    MOV R3,#5
    CALL MAINLOOP
    RET
    CT3: ; XANH 1 - DO 2
    CLR P1.4
    CLR P3.7
    CALL DELAY
    SETB P1.6
    SETB P3.6
    MOV R2, #99
    MOV R3, #94
    CALL MAINLOOP
    RET
    CT4: ; VANG 1 - DO 2
    CLR P1.6
    CALL DELAY
    SETB P3.6
    SETB P1.5
    MOV R2,#5
    MOV R3,#5
    CALL MAINLOOP
    RET
    ;--------------------------------------
    MAIN:
    MOV P1, #00H
    MOV P3, #3FH
    MOV P2, #00H
    MOV P0, #00H
    MOV TMOD, #02H
    MOV TH0,#6
    MOV IE, #87H
    SETB TR0
    CALL CT1
    CALL CT2
    CALL CT3
    CALL CT4
    JMP MAIN
    ;---------------------------
    MAINLOOP:
    MOV A, R2
    MOV B, #10
    DIV AB
    MOV DPTR, #LEDCODE
    MOVC A, @A+DPTR
    MOV P2, A
    SETB P1.2
    CALL DELAY
    CLR P1.2
    MOV A, B
    MOVC A, @A+DPTR
    MOV P2, A
    SETB P1.3
    CALL DELAY
    CLR P1.3
    MOV A, R3
    MOV B, #10
    DIV AB
    MOV DPTR, #LEDCODE
    MOVC A, @A+DPTR
    MOV P0, A
    SETB P1.0
    CALL DELAY
    CLR P1.0
    MOV A, B
    MOVC A, @A+DPTR
    MOV P0, A
    SETB P1.1
    CALL DELAY
    CLR P1.1
    CJNE R2,#0,THOAT
    CJNE R3,#0,THOAT
    JMP HET
    THOAT:
    JMP MAINLOOP
    HET:RET
    ;------------------------------
    LEDCODE: DB 40H, 79H, 24H, 30H, 19H, 12H, 02H, 78H, 00H, 10H
    ;------------------------------
    DELAY:
    MOV R4, #2
    DELAY1:
    DJNZ R4, DELAY1
    RET
    END
    |

    Comment


    • #3
      Mình ko rành về asm có ai có code C không? cho mình tham khảo với!

      Comment


      • #4
        Mình mới làm xong. chạy ổn. Nhưng là C, ASM thì không biết mấy.

        Comment


        • #5
          Nguyên văn bởi caonhan_2004 Xem bài viết
          Mình mới làm xong. chạy ổn. Nhưng là C, ASM thì không biết mấy.
          bạn có thể chia sẻ cho mình tham khảo với đc ko?

          Comment


          • #6
            Nguyên văn bởi lee_nguyen Xem bài viết
            bạn có thể chia sẻ cho mình tham khảo với đc ko?
            ok.

            BaiTapLonVXl-Nhom4.zip

            Comment


            • #7
              Nguyên văn bởi caonhan_2004 Xem bài viết
              Mạch của bạn không chỉnh thời gian bằng phần cứng được đúng không? mình đang tìm hiểu cách cài đặt số giây bằng phím bấm ngoài. Dù sao cũng cám ơn bạn!

              Comment


              • #8
                Nguyên văn bởi lee_nguyen Xem bài viết
                Mạch của bạn không chỉnh thời gian bằng phần cứng được đúng không? mình đang tìm hiểu cách cài đặt số giây bằng phím bấm ngoài. Dù sao cũng cám ơn bạn!
                Đèn giao thông thì thường có vài chế độ. muốn thêm chế độ thì viết thêm chương trình thui mà bạn. Mình làm thế vì bài chỉ yêu cầu thế.

                Comment


                • #9
                  Nguyên văn bởi chjpchjp1991
                  Ý bạn muốn thay đổi thời gian bằng nút bấm trên mạch cứng...mà không cần nạp lại chương trình đúng không?
                  yêu cầu thay đổi là của bạn lee_nguyen mà. còn nội dung bài tập của mình chỉ yêu cầu làm một chế độ nên , chương trình và phần cứng chỉ có vậy.

                  Comment


                  • #10
                    bác có chương trình giao tiếp phím hex của con 16f877a không cho em xin. em đang làm bài tập về con này....cảm ơn bác nhiều ạ. em đang rất cần

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X