Thông báo

Collapse
No announcement yet.

Đếm xung encoder dùng AVR ATmega16

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

  • Đếm xung encoder dùng AVR ATmega16

    E đang làm bài dùng encoder để đo chiều dài đoạn dây mà e ko biết mình viết có đúng ko. Mọi người xem và cho e ý kiến nha!!!
    Đây là đoạn code e viết:

    .include"m16def.inc"
    .org 0x0000
    rjmp __reset
    .org 0x0002
    rjmp __encoder


    ;======================================
    ;============== Khai bao ==============
    ;======================================
    .equ encoder_countl = 0x0060
    .equ encoder_counth = 0x0061
    .equ encoder_a = 3
    .equ encoder_b = 4
    ;======================================
    ;============== Reset =================
    ;======================================
    __reset:
    ldi r16,low(ramend)
    out spl,r16
    ldi r17,high(ramend)
    out sph,r17

    __reset_encoder:
    cbi ddrd,encoder_a
    cbi ddrd,encoder_b

    sbi portd,encoder_a
    sbi portd,encoder_b

    ldi r16,0x00
    out mcucr,r16
    ldi r16,0x80
    out gicr,r16
    sei
    ;======================================
    ;============= voidmain ================
    ;======================================
    __voidmain:



    rjmp __voidmain
    ;======================================
    ;============= Encoder ================
    ;======================================
    __Encoder:
    sbic pind,encoder_b
    rjmp __encoder1
    rjmp __count_up
    __encoder1:
    sbis pind,encoder_b
    rjmp __encoder_exit
    rjmp __count_down
    __Encoder_exit:
    reti
    ;======================================
    ;============= Count up ===============
    ;======================================
    __count_up:

    lds r20,encoder_countl
    inc r20
    sts encoder_countl,r20
    brne __count_up_exit

    lds r21,encoder_counth
    inc r21
    sts encoder_counth,r21
    brne __count_up_exit
    __count_up_exit:
    ret
    ;======================================
    ;============ Count down ==============
    ;======================================
    __count_down:
    lds r20,encoder_countl
    dec r20
    sts encoder_countl,r20
    brne __count_down_exit

    lds r21,encoder_counth
    dec r21
    sts encoder_counth,r21
    brne __count_down_exit
    __count_down_exit:
    ret

  • #2
    Làm C đi em

    Comment


    • #3
      E mới dc hoc asm thui ak. C thì phải tự học mà bgio ko còn nhiều thời gian nữa. Có ai biết thi giúp e vs

      Comment


      • #4
        dùng c đi dùng asm làm gì cho khó ra

        Comment


        • #5
          bạn tvh147 ơi, mình cũng đang học asm đây nè, ngày trước mình học C thấy dễ lắm, nhưng học asm mình hiểu rõ về cấu trúc của chip, bạn học asm theo giáo trình nào vậy ^^

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          • nguyendinhvan
            Trả lời cho Vấn đề về tốc độ quay
            bởi nguyendinhvan
            Sử dụng động cơ servor, hoặc lắp thêm một cái encoder vào động cơ bước. Encoder sẽ kiểm soát động cơ có quay hoặc đứng im.
            14-12-2025, 19:50
          • Andrea14
            Vấn đề về tốc độ quay
            bởi Andrea14
            Chào mọi người,

            Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
            12-12-2025, 12:42
          • bqviet
            Trả lời cho Đấu tắt điện cho máy tính bảng
            bởi bqviet
            Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
            06-12-2025, 17:17
          Đang tải...
          X