Есть кто разбиравший в ассемблере ? (Атмега16)

Тема в разделе "Микроконтроллеры AVR", создана пользователем Suro, 4 май 2018.

  1. Suro

    Suro Нерд

    Задача:
    когда не нажата ни один из кнопок в дисплее отображить 0000. При нажатии кнопки Nominal отображить в дисплее число который уже в памяти EEPROM, и с помощю кнопок + и - прибавить или вычислить это число.

    У меня все получается кроме этого:
    когда нажимаю на + или - число прибавляется или вычисливается десятками, а надо чтобы прибавился или вычисливался по одному.

    Если будут люди которые смогут помочь,оствьте mail я пришлю вам файлы AVR Studio и Proteus.
     

    Вложения:

  2. SergeiL

    SergeiL Гик

    А как с дребезгом боритесь?
     
  3. ostrov

    ostrov Гуру

    В Протеусе дребезг есть?
     
  4. Suro

    Suro Нерд

    Для дребезга в коде добавляю Delay , но тогда дисплай работает некорректно.

    .macro delay
    ldi temp,$03 ; (1-255)
    K:
    ldi XL,low (@0) ; low byte time delay
    ldi XH,high(@0) ; high byte time delay
    loopin:
    sbiw XH:XL,1
    brne loopin
    dec temp
    brne K
    .endm

    для примера delay $25
     
  5. Suro

    Suro Нерд

    Только подтягивающий
     
  6. ostrov

    ostrov Гуру

    Может сделать аналог millis()? Дисплей пусть молотит сам по себе, а кнопку опрашивать через 100 мс.
     
  7. Suro

    Suro Нерд

    Вот так и сделал ,, delay вставил перед опросом кнопки ,, но тогда дисплай работает некорректно ,, показывает неправильные цифры
     
  8. ostrov

    ostrov Гуру

    delay тормозит все подряд что на него наткнется, а не толтко кнопку. И почему именно на Ассемблере? Задание такое?
     
  9. Suro

    Suro Нерд

    ну этот delay просто macro который ниже ,, да задача на ассемблере ,, изучаю ассемблер AVR ))

    .macro delay
    ldi temp,$03 ;K ?ac (1-255)
    K:
    ldi XL,low (@0) ;low byte time delay
    ldi XH,high(@0) ;high byte time delay
    loopin:
    sbiw XH:XL,1 ;
    brne loopin
    dec temp ;
    brne K ;
    .endm
     
  10. Belkin

    Belkin Гик

    Посчитайте нам, сколько тактов выполняется данный код ?
    Желательно перевести в реальное время с учетом ТЧ контроллера..
    Нам лениво...