Thông báo

Collapse
No announcement yet.

các bác sửa giúp em chỗ này...không hiểu vì sao lại báo lỗi? Em xin cảm ơn!

Collapse
This topic is closed.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • các bác sửa giúp em chỗ này...không hiểu vì sao lại báo lỗi? Em xin cảm ơn!

    ORG 00H
    KIEMTRA:
    JB P0.1,CAODIEM
    JB P0.0,BANDEM
    JMP BANNGAY
    BANDEM:
    JB P0.1,KIEMTRA
    JNB P0.0,KIEMTRA
    MOV P2,#0FFH
    MOV P1,#11101101B
    CALL DELAY1S
    MOV P1,#0FFH
    CALL DELAY1S
    JMP BANDEM
    BANNGAY:
    CTA:
    MOV P1,#01011110B
    MOV R0,#10
    MOV R1,#15
    LAPA:
    JB P0.1,KIEMTRA
    JB P0.0,KIEMTRA
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPA
    CTB:
    MOV P1,#1101110B
    MOV R0,#5
    MOV R1,#5
    LAPB:
    JB P0.1,KIEMTRA
    JB P0.0,KIEMTRA
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPB
    CTC:
    MOV P1,#10110011B
    MOV R0,#15
    MOV R1,#10
    LAPC:
    JB P0.1,KIEMTRA
    JB P0.0,KIEMTRA
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#5,LAPC
    CTD:
    MOV P1,#10110101B
    MOV R0,#5
    MOV R1,#5
    LAPD:
    JB P0.1,KIEMTRA
    JB P0.0,KIEMTRA
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPD
    JMP BANNGAY
    CAODIEM:
    CTE:
    MOV P1,#01011110B
    MOV R0,#11
    MOV R1,#16
    LAPE:
    JNB P0.1,KIEMTRA
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPE
    CTF:
    MOV P1,#1101110B
    MOV R0,#5
    MOV R1,#5
    LAPF:
    JNB P0.1,KIEMTRA (1 lỗi)
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPF
    CTG:
    MOV P1,#10110011B
    MOV R0,#16
    MOV R1,#11
    LAPG:
    JNB P0.1,KIEMTRA (2 lỗi)
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#5,LAPG
    CTH:
    MOV P1,#10110101B
    MOV R0,#5
    MOV R1,#5
    LAPH:
    JNB P0.1,KIEMTRA (3 lỗi)
    CALL HIENTHI
    DEC R0
    DEC R1
    CJNE R0,#0,LAPH
    JMP CAODIEM
    HIENTHI:
    MOV R3,#100
    QUET_LED:
    MOV P3,#00H
    MOV A,R0
    MOV B,#10
    DIV AB
    MOV DPTR,#MA_LED
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.0
    CALL DELAY
    CLR P3.0
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.1
    CALL DELAY
    CLR P3.1

    MOV A,R1
    MOV B,#10
    DIV AB
    MOV DPTR,#MA_LED
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.2
    CALL DELAY
    CLR P3.2
    MOV A,B
    MOVC A,@A+DPTR
    MOV P2,A
    SETB P3.3
    CALL DELAY
    CLR P3.3
    DJNZ R3,QUET_LED
    RET
    MA_LED:
    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
    RET
    DELAY:
    MOV R4,#2
    LOOP5:
    CALL DELAYMS
    DJNZ R4, LOOP5
    RET
    DELAYMS:
    MOV R5,#0
    LOOP6:
    INC R5
    NOP
    CJNE R5,#250, LOOP6
    RET
    DELAY1S:
    MOV R6,#4
    LOOP7:
    MOV R7,#250
    LOOP8:
    CALL DELAYMS
    DJNZ R7,LOOP8
    DJNZ R6, LOOP7
    RET
    END

  • #2
    Mình đang dùng máy tính của bạn mình lên không cài keil c để test được. Nhưng nhìn chương trình thế kia thì 99,99% lỗi do lệnh nhảy không tới được nhãn đích, vì khoảng cách giữa nhãn và lệnh nhảy xa nhau quá, đây cũng là điểm mình chưa hài lòng khi làm việc với con 8051 bằng ASM. lẽ ra ngoài những lệnh nhảy như trên thì cần phải có 1 vài lệnh kiểm tra và nhảy tới mọi vj trí trong chương trình. Nhưng không sao nếu không có lệnh nhảy kiểu đó thì phải viết code dài hơn 1 chút thôi. Trong trường hợp này bạn phải dùng lệnh nhảy không điều kiện 'LJMP LABEL', nó có thể nhảy tới bất kỳ dâu trong chương trình và nó không phải là lệnh kiểm tra và nhảy lên bạn phải dùng mẹo để sử dụng được nó.
    VD: mình sẽ sửa dòng bị lỗi đầu tiên.
    ...
    JNB P0.1,KIEMTRA_1
    SJMP KHONG_CAN_KIEMTRA
    KIEMTRA_1:
    LJMP KIEMTRA
    KHONG_CAN_KIEMTRA:
    ...
    ;
    Còn 2 dòng bị lỗi tiếp theo nó khá gần với nhãn 'KIEMTRA_1:' lên bạn cũng sửa nó thành 'JNB P0.1,KIEMTRA_1'

    nguyễn sĩ tú CNT48DH đhhh
    phone: 0969132917

    Comment


    • #3
      cảm ơn bạn rất nhiều! ^^

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X