-
Постов
29 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Bivali
-
-
Перелопатил кучу прог,но не могу вывести на нужный алгоритм кнопки.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
0 -
-
Добрый день уважаемые !!!! Прошу помощи в написании проги,так как сам не силен и начинаю осваивать для начала теорию (студио,асм)!!!!!
Собираю реле для управления дворником авто на контроллере ATtiny13 принцип работы такой, на вход РВ3 подается сигнал высокого уровня включается непрерывный ход дворника,выключаем дворник в этот момент запускается таймер который начинает считать тики до следующего включения если в течении 60 сек включение не произошло
то таймер сбрасывается а если произошло включение дворника он запоминает эти тики
и уже работает с паузами которые в таймере.Изменение паузы-выключаем выдерживаем
требуемую паузу и включаем.Установка в режим "непрерывный"
кратковременно выключить и включить.Буду благодарен любым комментариям.
P.S.будет вашьпе прикольно если прога будет на АСМ с коментами.
сейчас катрас время для то кого девайса.Заранее Всем СПАСИБО!!!!
0 -
Сделать все реально!!!!купи самую простую радио управляемую машинку,за место драйверов управления двигателями поставь релюшки или транзисторные ключи которые будут шунтировать кнопки магнитолы.
0 -
Уменьшай размер фоток в любом редакторе картинок до вменяемого размера (600х800 оптимально).
http://s005.radikal.ru/i212/1104/60/67c9b4647184.jpg
http://s56.radikal.ru/i151/1104/db/a4771fbd6fca.jpg
http://i049.radikal.ru/1104/64/4cfb449fa32f.jpg
http://s55.radikal.ru/i149/1104/c6/f157614149c9.jpg
http://s015.radikal.ru/i333/1104/68/3b1cd6fbff6e.jpg
http://s006.radikal.ru/i213/1104/59/94e06ea04df3.jpg
http://s013.radikal.ru/i324/1104/e3/699228167474.jpg
http://s45.radikal.ru/i107/1104/c0/f108f9c2779e.jpg
http://s46.radikal.ru/i112/1104/b5/f7358a634177.jpg
http://s46.radikal.ru/i111/1104/10/1d24e5bd2748.jpg
http://s008.radikal.ru/i306/1104/df/7ed15f22316b.jpg
0 -
Хочу поделиться как переделать старую магнитолу.У бати стояла древняя магнитола машина тоже такая же,ставить новую смысла нет так как батя тоже древний и не разбирёться с новыми девайсами.Вспомнил что как то покупал FM модулятор для экспериментов,вот и решил его воткнуть на место кассетника.Единственное что поменял это индикатор на более больший по размерам ну сами понимаете зачем
Блин другие фотки загрузить не могу много весят!!!!!подскажите что делать????
0 -
Люди просто когда что то не пойдет трудно найти неполадку!!
Если мне кто то поможет с готовым пиком,готов купить!!!!!!
0 -
Люди плиз нужна схема 100% работоспособности частотомера от 0-99 МГц на светодиодных индикаторах
просто собираюсь собирать схему генератора на МАХ038
в инете есть на пиках,опыта работы сними нет так как я АВРщик
буду БЛАГОДАРЕН всем каментам!!!!!!!!
0 -
Ну уж и звените!!!! фоткал на телефон,фотик сломался!!!!!!
сильно горячо или сильно холодно такого нет дифференциал на контроллере 2 градуса,так что если не открывать окна температура салона более или менее стабильная.
Сильно то не судите я же делал из того что было, хотелось зимой покайфовать!!! :P :P
0 -
Всем привет!!!! Вот архив!!!
0 -
В смасле!!!!!!!!!!!!!!!не понял???????просто файл в sPlan!!!!!!!!!!!!!!
0 -
Всем привет! Климат контроль штука хорошая! Я сделал ее из подручных материалов, а именно валялся старый двух датчиковый контроллер от холодильной камеры кстати тоже на контроллере мега 16, разобрал убрал трансформатор, лишние реле оставил только одну, поставил помощнее стилизатор, внутри осталось куча места куда воткнул шим регулятор на 555.А теперь как работает!!!
Шим работает отдельно тесть кручу ручку резистора он с внутренним переключателем включается реле и подается питание на шим, кручу дальше обороты карлосона печки плавно увеличиваются, теперь самое интересное.
Включаю контроллер один датчик на входе печки что тем самым показывает темп за бортом второй в салоне, устанавливаем нужную темп и при увеличении температуры срабатывает реле контроллера и разрывает цепь питания вентилятора, и наоборот как только температура упала цепь снова замыкается причем у же по заданной резистором скорости. Ну вот вкратце всё !
0 -
Ребята извените что долго не писал с прогами разобрался!!!! :P
0 -
А так пойдёт!!!
while (1)
{
if (PIND.0==1)
{ PORTB.0=1; } // Тушим светодиод
else
{
PORTB.0=0;
delay_ms(10000);
PORTB.0=1;
0 -
У меня была такаяже фигня!!!!! коротил разьём!!!!! проверь усебя прозвонкой нетли КЗ!!!
0 -
Добых суток! Чето на С не фига не получяется зато асемблере все путем!может ктонибудь поможет прогай с ипользованием таймера! плиз :( :(
PS задача на порт PD0 подаем 0 на PB0 появляется 0. проподает 0 на PD0 и через 10 сек РВ0 устанавливается 1!!!!!!
Совсем забыл кварц на 4МГц
0 -
Блин в том-то и дело что Ваша работает нормально!!!!! а моя чтото артачится!!!!!! надо еще покумекать :angry: :angry:
0 -
Спасибо за прогу все работает!!!!! блин почему моя не фурычит!!!
0 -
Самое простое что можно придумать продаются специальные тестеры для пультов нажимаешь любую кнопку загорается светодиод! в цепь диода включаешь транзистор и реле!!
0 -
Здравствуйте! задача такая:подаем сигнал (0) на PORTD.0 сбрасываются в (1) порты PORTB.0,2,4. Когда пропадает сигнал на PORTD.0 тоесть(1) на портах PORTB.0,4 тоже (1) и через 10 сек появляется (1) на PORTB.2.Но нужно так чтобы при конце задержки программа проверила PORTD.0 не изменился ли сигнал если да то программа возвращается в начало!!
Таймер не применять!!!!!!
PS.не чего страшного зато я лишьний раз проштудировал даташит!!!!!! :lol: :lol:
0 -
Мужики!!!!!! все таки кто нибуть мне поможет!!!! :(
0 -
Мужики порты настроены как надо!!!!!Если бы я их неправильно настроил то после прошивки неработал не один порт!!!или матерился соде вижен!!!!
PORTx-регистр данных
DDRx-регистр упровления
Белов А.В ,Самоучитель разработчика устройств на микроконтроллерах АВР, стр.385
0 -
Все порты D входы!!!!!!
Все порты B выходы!!!!!!
PORTB=0xFF;
DDRB=0xFF;
PORTD=0xFF;
DDRD=0x00;
0 -
Не понял! поясни подробнее!!
0
Дворник Автомобиля
в Автомобильная электроника
Опубликовано
А еще можно машину поменять где все есть что душе угодно!!!!!!!!Откуда тогда инженеры берутся с магазина что ли???????