Thông báo

Collapse
No announcement yet.

Code ASM hiển thị số trên led matrix 8x8 bị lỗi

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

  • Code ASM hiển thị số trên led matrix 8x8 bị lỗi

    Cho em/ mình hỏi là có viết code ASM 8051 để đếm số từ 0 đến 9, hiện số 0 xong rồi hiện ra số 1,, cứ thế hiện số 9 rồi quay vòng. Nhưng code em/ mình viết nó lại là dịch lên trên, dịch hết số 9 thì nó sáng hết đèn luôn, cứ thế sáng mãi. Các cao thủ giúp với nhé, cảm ơn ạ!


    Quét led theo hàng từ trên xuống dưới, mã xuất theo cột.


    ORG 0000h


    MAIN:
    CALL HIENTHI
    JMP MAIN



    HIENTHI:

    ; lay ma hien thi xuat ra P0

    MOV DPTR, #MA_HIEN_THI ; tro den DB dau tien
    MOV 55h, DPL

    HANG:
    MOV 54h, #01111111b
    ; lap lai nhieu lan de hien thi
    MOV R2, #5
    lap_de_hien_thi:

    MOV R1, #0 ; lay o R1 lam bien dem tung byte cot cua DB
    ; lay byte dau tien : 0C7h
    laybytecot:
    MOV A, R1
    MOVC A, @A+DPTR
    MOV P0, A
    ; cat gia tri P0 vao ngan xep
    ;MOV 52h, P0
    ;PUSH 52h
    ;======


    ; bat hang dau tien P3 = 11111110b
    MOV A, 54h
    RL A
    MOV P3, A
    ; cat gia tri P3 vao ngan xep
    MOV 53h, P3
    PUSH 53h
    ;======

    CALL DELAY ; delay 1 time ngan de hien thi
    CALL XOALED ; xoa led di de bat hang va byte cot tiep theo

    ; lay lai gia tri da cat
    POP 53h
    MOV 54h, 53h
    ;======

    ; lay lai gia tri da cat
    ;POP 52h
    ;MOV P0, 52h
    ;======

    INC R1 ; tang gia tri R1 len 1 de lay byte tiep theo
    CJNE R1, #8, laybytecot ; ket thuc lenh nay da xuat duoc 8 byte cua DB dau tien ra P0
    DJNZ R2, lap_de_hien_thi


    INC DPTR ; tang gia tri DPTR tro den hang ke tiep
    MOV A, 55h
    CJNE A, 55h+10, HANG


    RET





    DELAY:
    MOV 51h, #50
    L:
    MOV 50h, #50
    DJNZ 50h, $
    DJNZ 51h, L
    RET

    XOALED:
    MOV P0, #0xFF
    MOV P3, #0xFF
    RET

    MA_HIEN_THI: ; 10X8

    DB 0C7h, 0B3h, 0B3h, 0A3h, 093h, 0B3h, 0C7h, 0FFh ; 0
    DB 0E7h, 0C7h, 0E7h, 0E7h, 0E7h, 0E7h, 0C3h, 0FFh ; 1
    DB 0C7h, 0B3h, 0F3h, 0E7h, 0CFh, 09Bh, 083h, 0FFh ; 2
    DB 0C7h, 0B3h, 0F3h, 0E7h, 0F3h, 0B3h, 0C7h, 0FFh ; 3
    DB 0F3h, 0E3h, 0D3h, 0B3h, 083h, 0F3h, 0F3h, 0FFh ; 4
    DB 083h, 0BFh, 087h, 0B3h, 0F3h, 0B3h, 0C7h, 0FFh ; 5
    DB 0C7h, 0BBh, 0BFh, 087h, 0B3h, 0B3h, 0C7h, 0FFh ; 6
    DB 083h, 0B3h, 0F3h, 0E7h, 0CFh, 0CFh, 0CFh, 0FFh ; 7
    DB 0C7h, 0B3h, 0B3h, 0C7h, 0B3h, 0B3h, 0C7h, 0FFh ; 8
    DB 0C7h, 0B3h, 0B3h, 0C3h, 0F3h, 0B3h, 0C7h, 0FFh ; 9


    END

  • #2
    Cuối mã hiển thị thêm dòng ret hay jmp hienthi để sáng lại số 0
    Last edited by vi van pham; 06-11-2017, 15:09.

    Comment


    • #3
      Nguyên văn bởi vi van pham Xem bài viết
      Cuối mã hiển thị thêm dòng ret hay jmp hienthi để sáng lại số 0
      Vẫn thế bác ạ.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X