Thông báo

Collapse
No announcement yet.

Giúp mình đoạn code điều khiển 32 LED này với, please!

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

  • #16
    He he bài này về ý tưởng thì không sai, nhưng có 1 số lỗi về thuật toán và mắc một lỗi là có 1 lệnh không hợp lệ tuy biên dịch không lỗi nhưng khi thực thi sẽ không như ý muốn. Lẽ ra cũng không định "khảo cổ" đâu, nhưng vì thấy mọi người bảo không out port thì làm sao mà đưa được dữ liệu ra. Vậy thì giờ mọi người xem nhé.
    Code:
    org 0x0
    batdau: 
    mov A, #0x0
    mov B, #0xFF
    
    //mov R0,0x80 <-- bỏ cái này đi
    mov R0, #07 // thanh ghi này dùng trong vòng lặp trên này rồi thì xuống bên dưới hàm (tre_1s) phải dùng thanh ghi khác
                      // Hoặc ít nhất là cất nó đi, sau tre_1s thì khôi phục lại giá trị thì mới không bị sai vòng lặp này
    led0: 
    mov 0x80, A//mov @R0,A <-- Đây chính là lệnh không hợp lệ
    acall tre_1s
    mov 0x80, B
    //inc R0 <-- Không hiểu ý tưởng chỗ này là gì
    djnz R0, led0
    
    //mov R0, #90H
    mov R0, #07
    led1: 
    mov 0x90, A
    acall tre_1s
    mov 0x90, B
    //inc R0
    djnz R0, led1
    
    //mov R0, #0A0H
    mov R0, #07
    led2: 
    mov 0xA0, A
    acall tre_1s
    mov 0xA0, B
    //inc R0
    djnz R0, led2
    
    //mov R0, #0B0H
    mov R0, #07
    led3: 
    mov 0xB0, A
    acall tre_1s
    mov 0xB0, B
    //inc R0
    djnz R0, led3
    
    sjmp batdau
    tre_1s:
    mov r1, #10
    loop3:
    mov R2, #100
    loop2:
    mov r3, #100
    loop1:
    djnz r3,loop1
    djnz R2,loop2
    djnz r1,loop3
    ret
    end
    Chuơng trình này thì đảm bảo là chạy 100% còn cái lệnh: mov @R0, A không hợp lệ là vì cái NÀY ở phần "Indirect Addressing" có nói. Lẽ ra nếu không vì cái ngoại lệ này thì cũng không đến nỗi không thấy chưong trình chạy .

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X