Перейти к содержанию

Bivali

Members
  • Постов

    29
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Bivali

  1. Перелопатил кучу прог,но не могу вывести на нужный алгоритм кнопки.PB1 Output control led-это просто светодиод чтоб в железе было видно как прога тикает.

    ;**************************************************************************

    ;**************************************************************************

    .include "tn13def.inc"

    ;----------------- Назначаем имена выводам микроконтроллера и регистрам --

    ;-------- присвоение имён выводам порта В --------

    .equ Sound_out =1 ;PB1 Output control led

    .equ SW =3 ;PB3 Input Signal

    .equ Rele =4 ;PB4 Output Rele

    ;--------- константы времени ------------------

    .equ korrekt_3 =3929 ;скорректированная константа

    .equ sekunda =8000 ;константа

    .equ LED_ON =800 ;константа

    .equ TIME1 =5

    .equ TIME2 =50

    ;------------- назначение имён регистрам --------------

    .def temp =r16 ;r16 temprary register

    .def loop =r17 ;Регистр счётчика циклов

    .def counter =r18 ;Регистр хранения

    .def flag =r19

    .def cycl =r20

    .def temp1 =r21

    .def temp2 =r22

    .def t1 =r23

    ;****************************************************************************

    .cseg ;Выбираем сегмент памяти ;

    .org 0

    rjmp Reset

    .org 0x0002 ;прерывание по изменению логического уровня на PIN

    ;External Interrupt Request 0

    rjmp PCI0 ; переход к программе обработки прерывания

    ;============================================================================

    ; macros формирования временных интервалов

    ;============================================================================

    .macro delay ;начало макроопределения

    inc @1 ;увеличиваем на единицу содержимое @1

    mov counter,@1 ;приравниваем содержимое к r17

    ;коэффициент повторения @2 раз (1-255)

    K:

    mov loop,counter; r17 = r18

    soul:

    rcall Tik ;вызов подпрограммы звукового сигнала

    rcall Interval ;вызов подпрограммы временной паузы 0,2 сек

    dec loop ;обратный отсчёт

    brne soul

    di flag,@2 ;Загрузить множитель @2 на временную константу @0

    Cycle: ;Формирование длительности работы таймера

    ldi XL,Low (@0) ;Загрузить младший байт константы времени

    ldi XH,high(@0) ;Загрузить старший байт константы времени

    ;(максимальное значение @0 здесь не более 65535)

    delay_: sbiw XL,1 ;Вычитаем единицу из слова

    brne delay_ ;не равен нулю, возвращаемся снова к метке delay_

    dec flag ;умножаем @2 количество раз на константу @0

    brne Cycle

    dec counter ;повторяем эту процедуру @1 количества раз

    brne K ;переход к метке K по условию

    .endm ;окончание макроса

    ;=============================================================================

    ; * инициализация *

    ;=============================================================================

    Reset:

    clr cycl ;обнуляем содержимое счтчика отсчёта инервалов

    cli ;запрещаем прерывание

    ;-----------------------------------------------------------------------------

    ldi temp,RAMEND ;инициализация стека ;

    out SPL,temp

    ;------------------ inicializaciya PORTB --------------------------------

    ldi temp,0b11110111

    out DDRB,temp ;конфигурация вх,вых.

    ;Назначаеем PВ3 входом,остальные выходами.

    Com temp ;Инвертируем содержимое temp

    out PORTB,temp ;Включаем подтяжку на PВ3

    ;==============================================================================

    ; * Главный программный цикл * установка кнопкой количество интервалов таймера

    ;==============================================================================

    main:

    clr temp

    sbic PINB,SW ;Опрашиваем ,разомкнуты ли контакты.кнопки

    rjmp main ;если нет ,переходим к началу цикла

    ;-------------------------------------------------------------------------------------

    delay sekunda,temp,17; = 1.4 сек. один цикл при установке таймера

    ;-------------------------------------------------------------------------------------

    inc cycl ;начинаем прмой отсчёт вреенных интервалов

    cikl:

    sbis PINB,SW ;проеряем состояние кнопки,если нажата ,продолжаем прямой отчёт

    rjmp main

    dec cycl ;если отжата,прекращаем отсчёт и переходим к запуску таймера

    cbi PORTB,Rele ;Включаем реле начала включения таймера

    ;-------------------------------------------------------------------------------------

    time : delay korrekt_3, cycl,30 ;формирование суммарного заданного пользователем

    ;Времени таймера = 5 min * cycl(количество интервалов)

    ;-------------------------------------------------------------------------------------

    sbi PORTB,Rele ;Выключаем реле ,таймер работу завершил.

    Long:

    ldi temp2,20

    H:

    rcall Tik

    dec temp2

    brne H

    stop:

    sei ; разрешаем прерывание

    ldi temp,(1<<PCIE) ; устанавливаем разрешение прерывания на PIN

    out GIMSK,temp ; по изменению уровня сигнала на PIN

    ldi temp,(1<<PCIF) ; устанавливаем флаг прерывания

    out GIFR,temp ; по изменению сигнала на PB

    ldi temp,(1<<PCINT3) ; разрешаем прерывание

    out PCMSK,temp ; по изменению уровня на выводе PB3

    End: rjmp cikl ;по окончанию цикла таймера переход в исходное состояние ;

    ;-------------------------------------------------------------------------------

    ; * * подпрограмма формирования задержки**

    ;-------------------------------------------------------------------------------

    Tik:

    ldi temp1,TIME1

    ldi t1,TIME2

    ;-------------------------------------------------------------------------------

    Tik1:

    sbi PORTB,Sound_out

    Tik2: dec temp1

    brne Tik2

    dec t1

    brne Tik2

    cbi PORTB,Sound_out

    ret

    ;-------------------------------------------------------------------------------

    ; * подпрограмма временной задержки *

    ;-------------------------------------------------------------------------------

    Interval:

    ldi YL,Low (LED_ON) ;загрузить младший байт временной константы

    ldi YH,high (LED_ON) ;загрузить старший байт временной константы

    on_: sbiw YL,10

    brne on_

    ret

    ;----------- подпрограмма обработки прерывания -----------------------------

    PCI0:

    nop ;пустая команда

    reti

  2. Добрый день уважаемые !!!! Прошу помощи в написании проги,так как сам не силен и начинаю осваивать для начала теорию (студио,асм)!!!!!

    Собираю реле для управления дворником авто на контроллере ATtiny13 принцип работы такой, на вход РВ3 подается сигнал высокого уровня включается непрерывный ход дворника,выключаем дворник в этот момент запускается таймер который начинает считать тики до следующего включения если в течении 60 сек включение не произошло

    то таймер сбрасывается а если произошло включение дворника он запоминает эти тики

    и уже работает с паузами которые в таймере.Изменение паузы-выключаем выдерживаем

    требуемую паузу и включаем.Установка в режим "непрерывный"

    кратковременно выключить и включить.Буду благодарен любым комментариям.

    P.S.будет вашьпе прикольно если прога будет на АСМ с коментами.

    сейчас катрас время для то кого девайса.Заранее Всем СПАСИБО!!!!

    post-79681-0-86114700-1317214477_thumb.jpg

  3. Сделать все реально!!!!купи самую простую радио управляемую машинку,за место драйверов управления двигателями поставь релюшки или транзисторные ключи которые будут шунтировать кнопки магнитолы.

  4. Хочу поделиться как переделать старую магнитолу.У бати стояла древняя магнитола машина тоже такая же,ставить новую смысла нет так как батя тоже древний и не разбирёться с новыми девайсами.Вспомнил что как то покупал FM модулятор для экспериментов,вот и решил его воткнуть на место кассетника.Единственное что поменял это индикатор на более больший по размерам ну сами понимаете зачем

    Блин другие фотки загрузить не могу много весят!!!!!подскажите что делать????

    post-79681-0-46062000-1303547826_thumb.jpg

  5. Люди плиз нужна схема 100% работоспособности частотомера от 0-99 МГц на светодиодных индикаторах

    просто собираюсь собирать схему генератора на МАХ038

    в инете есть на пиках,опыта работы сними нет так как я АВРщик

    буду БЛАГОДАРЕН всем каментам!!!!!!!!

  6. Ну уж и звените!!!! фоткал на телефон,фотик сломался!!!!!!

    сильно горячо или сильно холодно такого нет дифференциал на контроллере 2 градуса,так что если не открывать окна температура салона более или менее стабильная.

    Сильно то не судите я же делал из того что было, хотелось зимой покайфовать!!! :P :P :P :P

  7. Всем привет! Климат контроль штука хорошая! Я сделал ее из подручных материалов, а именно валялся старый двух датчиковый контроллер от холодильной камеры кстати тоже на контроллере мега 16, разобрал убрал трансформатор, лишние реле оставил только одну, поставил помощнее стилизатор, внутри осталось куча места куда воткнул шим регулятор на 555.А теперь как работает!!!

    Шим работает отдельно тесть кручу ручку резистора он с внутренним переключателем включается реле и подается питание на шим, кручу дальше обороты карлосона печки плавно увеличиваются, теперь самое интересное.

    Включаю контроллер один датчик на входе печки что тем самым показывает темп за бортом второй в салоне, устанавливаем нужную темп и при увеличении температуры срабатывает реле контроллера и разрывает цепь питания вентилятора, и наоборот как только температура упала цепь снова замыкается причем у же по заданной резистором скорости. Ну вот вкратце всё !

    post-79681-1259678699_thumb.jpg

    post-79681-1259678744_thumb.jpg

  8. Добых суток! Чето на С не фига не получяется зато асемблере все путем!может ктонибудь поможет прогай с ипользованием таймера! плиз :( :( :( :(

    PS задача на порт PD0 подаем 0 на PB0 появляется 0. проподает 0 на PD0 и через 10 сек РВ0 устанавливается 1!!!!!!

    Совсем забыл кварц на 4МГц :lol:

  9. Здравствуйте! задача такая:подаем сигнал (0) на PORTD.0 сбрасываются в (1) порты PORTB.0,2,4. Когда пропадает сигнал на PORTD.0 тоесть(1) на портах PORTB.0,4 тоже (1) и через 10 сек появляется (1) на PORTB.2.Но нужно так чтобы при конце задержки программа проверила PORTD.0 не изменился ли сигнал если да то программа возвращается в начало!!

    Таймер не применять!!!!!!

    PS.не чего страшного зато я лишьний раз проштудировал даташит!!!!!! :lol: :lol: :lol: :lol: :lol:

  10. Мужики порты настроены как надо!!!!!Если бы я их неправильно настроил то после прошивки неработал не один порт!!!или матерился соде вижен!!!!

    PORTx-регистр данных

    DDRx-регистр упровления

    Белов А.В ,Самоучитель разработчика устройств на микроконтроллерах АВР, стр.385

×
×
  • Создать...