Thông báo

Collapse
No announcement yet.

[gấp] giúp lập trình ngôn ngữ ASM làm đồng hồ đơn giản.

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

  • [gấp] giúp lập trình ngôn ngữ ASM làm đồng hồ đơn giản.

    mình có làm mạch đồng hồ dùng 6 led 7 đoạn, không cần nút ấn hay báo thức gì cả, nói chung là rất đơn giản, chỉ cần hiển thị đếm giờ thôi. mình lập trình rồi nhưng các số nó cứ nhảy liên tục, mình không biết làm sao để lưu lại được hết. ai giúp mình sửa code với, mình cảm ơn nhiều lắm:




    ORG
    MAIN:
    MOV DPTR,#BM
    MOV R1,#0
    GIO:
    MOV R2,#0
    PHUT:
    MOV R3,#0
    GIAY:
    CALL TRABANG
    CALL QUETLED
    INC R3
    CJNE R3,#60,GIAY
    INC R1
    INC R1,#60,PHUT
    INC R2
    CJNE R2,#24,GIO
    SJMP MAIN
    ;=========
    TRABANG:
    MOV A,R1
    MOV B,#10
    DIV AB
    ;====
    MOVC A,@A+DPTR
    MOV 40H,A
    MOV A,B
    MOVC A,@A+DPTR
    MOV 41H,A
    ;====
    MOV A,R2
    MOV B,#10
    DIV AB
    MOVC A,@A+DPTR
    MOV 42H,A
    MOV A,B
    MOVC A,@A+DPTR
    MOV 43H,A
    ;=====
    MOV A,R3
    MOV B,#10
    DIV AB
    MOVC A,@A+DPTR
    MOV 44H,A
    MOV A,B
    MOVC A,@A+DPTR
    MOV 45H,A
    ;======
    RET
    ;=====
    QUETLED:
    MOV P0,#11111110B
    MOV P2,40H
    CALL TRE
    ;==========
    MOV P0,#11111101B
    MOV P2,41H
    CALL TRE
    ;========
    MOV P0,#11111011B
    MOV P2,42H
    CALL TRE
    ;=======
    MOV P0,#11110111B
    MOV P2,43H
    CALL TRE
    ;=======
    MOV P0,#11101111B
    MOV P2,44H
    CALL TRE
    ;==========
    MOV P0,#11011111B
    MOV P2,45H
    CALL TRE
    RET
    ;=========
    BM:
    DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
    ;=====
    TRE:
    MOV R4,#1
    L4:
    MOV R5,#200
    L5:
    MOV R6,#250
    L6:
    DJNZ R6,L6
    DJNZ R5,L5
    DJNZ R4,L4

    RET
    END

  • #2
    y sì cái code của bạn ko thể nào dịch ra đc file hex thì sao bạn biết nó chạy sai

    Comment


    • #3
      hình như code này dùng machine cycle để tính thời gian thì phải. dùng machine cycle kiểu này thì thời gian không chính xác đâu bạn à.

      Comment


      • #4
        Nguyên văn bởi chung1608 Xem bài viết
        y sì cái code của bạn ko thể nào dịch ra đc file hex thì sao bạn biết nó chạy sai

        nó chạy được mà bạn, nhưng số của nó cứ nháy liên tục. mình muốn làm sao mà số nó lưu lại được.

        Comment


        • #5
          Nguyên văn bởi condonhan Xem bài viết
          hình như code này dùng machine cycle để tính thời gian thì phải. dùng machine cycle kiểu này thì thời gian không chính xác đâu bạn à.
          thầy giao bài tập về làm đó bạn, bạn biết thì chỉnh giúp mình với.

          Comment


          • #6
            Nguyên văn bởi okemenqv Xem bài viết
            nó chạy được mà bạn, nhưng số của nó cứ nháy liên tục. mình muốn làm sao mà số nó lưu lại được.
            1 lệnh trong đó sai bảo đảm ko dịch đc. Bạn tìm đọc phương pháp quét led 7 đoạn mà đọc

            Comment


            • #7
              Nguyên văn bởi okemenqv Xem bài viết
              thầy giao bài tập về làm đó bạn, bạn biết thì chỉnh giúp mình với.
              ORG 0030H
              MAIN:
              MOV DPTR,#BM
              MOV R1,#0
              GIO:
              MOV R2,#0
              PHUT:
              MOV R3,#0
              GIAY:
              CALL TRABANG
              CALL QUETLED
              INC R3
              CJNE R3,#60,GIAY
              INC R1
              CJNE R1,#60,PHUT
              INC R2
              CJNE R2,#24,GIO
              SJMP MAIN
              ;=========
              TRABANG:
              MOV A,R1
              MOV B,#10
              DIV AB
              ;====
              MOVC A,@A+DPTR
              MOV 40H,A
              MOV A,B
              MOVC A,@A+DPTR
              MOV 41H,A
              ;====
              MOV A,R2
              MOV B,#10
              DIV AB
              MOVC A,@A+DPTR
              MOV 42H,A
              MOV A,B
              MOVC A,@A+DPTR
              MOV 43H,A
              ;=====
              MOV A,R3
              MOV B,#10
              DIV AB
              MOVC A,@A+DPTR
              MOV 44H,A
              MOV A,B
              MOVC A,@A+DPTR
              MOV 45H,A
              ;======
              RET
              ;=====
              QUETLED:
              MOV P0,#11111110B
              MOV P2,40H
              CALL TRE
              ;==========
              MOV P0,#11111101B
              MOV P2,41H
              CALL TRE
              ;========
              MOV P0,#11111011B
              MOV P2,42H
              CALL TRE
              ;=======
              MOV P0,#11110111B
              MOV P2,43H
              CALL TRE
              ;=======
              MOV P0,#11101111B
              MOV P2,44H
              CALL TRE
              ;==========
              MOV P0,#11011111B
              MOV P2,45H
              CALL TRE
              RET
              ;=========
              BM:
              DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
              ;=====
              TRE:
              MOV R4,#1
              L4:
              MOV R5,#200
              L5:
              MOV R6,#250
              L6:
              DJNZ R6,L6
              DJNZ R5,L5
              DJNZ R4,L4

              RET
              END
              Khoan bàn tới giải thuật, bạn thử sửa 2 dòng lệnh chỗ mình tô đỏ xem có cải thiện được tình hình chút nào không?
              Công ty TNHH Tự Động Hóa Đạt Lân
              32/36, Ông Ích Khiêm, F14, Q11
              ĐT: 08.3974 7308 - 0937.197.001
              email:
              Webite:

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X