LPD-форум: безлицензионные радиостанции + Си-Би + "китайцы"
  · Наш магазин - здесь · Продажа Си-Би · LPD Vector · LPD & PMR Midland · Рейтинги · Частоты · FAQ
  · Копилка · Модификации · Инструкции, схемы, софт · DX-Группа · Клубный форум · Основной форум
На сайте: гостей - 45,
участников - 1 [ логартоз]
 · Начало · Статистика · Поиск · Регистрация · Правила ·
 LPD-Форум —› LPD, FRS, PMR - радиосвязь без лицензий —› Учимся писать программы для микрокнтроллеров AVR
Автор Сообщение
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 14

Дата: 29 Янв 2017 18:01:06 #  

НАЗНАЧЕНИЕ

Данное устройство осуществляет контроль открытия дверей автомобиля.
В зависимости от комбинации открытия дверей издается в течении 1 минуты звуковой сигнал с интервалом в 20 секунд соответствующей своей комбинационной группе.



/*

Версия 1.

Звуковой индикатор открытия дверей.
Обрабатывает сигналы преступаемые от датчиков установленных в дверях автомобиля и выдает соответсвующий сигнал.
Если двери открыты, то сигнал выдается непрерывно в течение 1 минуты, далее пауза в 10 минут и повтор сигнала .
Комбинация звуковых сигналов:

Отрыта водительская дверь - один короткий звуковой сигнал пауза повтор
Открыта пассажирская дверь - два коротких звуковых сигнала пауза повтор
Открыта задняя дверь за пассажиром - три коротких звуковых сигнала пауза повтор
Открта задняя дверь за водителем - четыре коротких звуковых сигнала пауза повтор

Открыто две двери одновременно: Два длинных звуковых сигнала
Открыто три двери одновременно: Три длинных звуковых сигнала
Открыто четыре двери одновременно: Четыре длинных звуковых сигнала


PB2 - пассажирская дверь
PB1 -дверь водителя
PB0 -задняя дверь с стороны водителя
PB4 -задняя дверь с стороны водителя пассажира
PB3- выход звукового сигнала


PB1 PB2

CAR
PB3- output sound

*
***
*****
*
*
*
*



PB0 PB4


*/

.include "tn13adef.inc"
.list

.def tmp = r16; для разных переменных
.def tmp_a = r17; для счетчика 1 1 мин
.def tmp_c = r25; для счетчика 1 1 мин
.def tmp_b = r18; эталонная пауза
.def time_long = r19; для работы с длинными временами.
.def time_short =r20 ; для работы с длинными временами.

.def ch1 = R21; комбинация открытия дверей. Открыта одна дверь из четырех.
.def ch2 = R22; комбинация открытия дверей. Открыты две двери из четырех.
.def ch3 =R23; комбинация открытия дверей. Открыта три двери из четырех.
.def ch4 = R24; Открыты все двери


; КОНСТАНТЫ
.equ timer_1min = 0x02; время в течении которого подается звуковой сигнал о открытии двери

.
.cseg
.org 0
clr tmp
ldi tmp, low(RAMEND)
out SPL, tmp
ldi tmp, 0b00001000; PB3 -out
out DDRB, tmp
ldi tmp, 0b00010111
out PORTB, tmp
ldi tmp_a, timer_1min


start:
rcall sound_test; тестовый звуковой сигнал
start_1:
in tmp, PINB
; Открыта одна из дверь
cpi tmp, 1
breq sound1_1
cpi tmp, 2
breq sound1_2
cpi tmp, 4
breq sound1_3
cpi tmp, 6
breq sound1_4

; Открыто две двери
cpi tmp, 3
breq sound2_0
cpi tmp, 5
breq sound2_0
cpi tmp, 17
breq sound2_0
cpi tmp, 6
breq sound2_0
cpi tmp, 18
breq sound2_0
cpi tmp, 20
breq sound2_0
start_3:
; Открыто три двери
cpi tmp, 7
breq sound_3
cpi tmp, 22
breq sound_3
cpi tmp, 21
breq sound_3
start_2:
; Открыты 4 ре двери
cpi tmp, 23
breq sound4_0
rjmp start_1

sound4_0:
rjmp sound4

sound2_0:
rjmp sound2

sound_3:
rjmp sound3
;#################################################################################
; ЗВУКОВЫЕ СИГНАЛЫ ОТКРЫТИЯ ДВЕРЕЙ
;#################################################################################
; Открыта одна дверь
;#################################################################################
sound_test:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret

sound1_1:
rcall counter
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret


sound1_2:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret

sound1_3:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret

sound1_4:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret

;#################################################################################
;ОТКРЫТО ДВЕ ДВЕРИ
;#################################################################################
sound2:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_3
;#################################################################################
;ОТКРЫТО ТРИ ДВЕРИ
;#################################################################################
sound3:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_2

;#################################################################################
;ОТКРЫТЫ ВСЕ ДВЕРИ
;#################################################################################
sound4:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_1

;################################################################################
;# Задержка перед повтором звукового сигнала
;################################################################################

pause_long:
ldi tmp_a, 0x03 ; 0xC8 =20sec
dec tmp_a
cpi tmp_a,0
breq end_long
rcall pause
rjmp pause_long
end_long:

ret

pause:
;################################################################################
;# Задержка 100 ms
;################################################################################
ldi tmp_b, 0x5F ; 190 = 200 mks 95 =100 mkS

d100ms_1: ; 1,057 ms
dec tmp_b
cpi tmp_b,0
breq end_d100ms
ldi tmp, 0xFF

d100ms_2:; 4.16 mks
dec tmp
cpi tmp,0
breq d100ms_1
rjmp d100ms_2
end_d100ms:

ret

;################################################################################
;# Задержка 10 МИНУТ
;################################################################################
pause_10min:
ldi tmp_a, timer_1min

st_10min:
dec tmp_a
cpi tmp_a, 0
breq end_10m
ldi tmp_c, 0x02


st_10m:
dec tmp_c
cpi tmp_c,0
breq st_10min
rjmp st_10m
end_10m:
rjmp start_1

;#########################################################################
; СЧЕТЧИКИ
;########################################################################
counter:
dec tmp_a
cpi tmp_a, 0
breq pause_10min
ret
XOR
Участник
Offline4.0
с янв 2007
...
Сообщений: 190

Дата: 29 Янв 2017 19:03:14 #  

извините, вы хотите научить или научиться?
Реклама
Google
RK6AJE
Участник
Offline3.1
с мая 2007
Оттуда
Сообщений: 71

Дата: 30 Янв 2017 00:47:20 · Поправил: RK6AJE (30 Янв 2017 00:48:47) #  

По моему ни форум ни ветка не профильные. Да ещё на таком анахронизме как асм. Вы, коллега как лет на 15 с этой темой отстали. В начале 2000-ых было бы актуально.
Данилыч
Участник
Offline1.1
с дек 2006
Видное МО
Сообщений: 478

Дата: 30 Янв 2017 07:30:11 #  

ветку в топку, юзверя в банн
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 14

Дата: 02 Фев 2017 13:46:33 #  

Все разработчики, которые не хотят, чтобы их коды были сворованы пишут на этом языке, так как Си может прочитать любой, да еще он избыточность имеет и программист, который на нем пишет уже плохо понимает процессы происходящие в микроконтроллере.
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 14

Дата: 02 Фев 2017 13:54:59 #  

Этот "анахронизм" называется Ассемблер для микроконтроллеров АВР, его специально разрабатывали для этих целей. Он позволяет вмещать в небольшие микроконтроллеры большие программы.
Так на Тини13, я построил "эхо- репитер", который анализирует состояние эфира, а при отсутствии сигнала более 15 минут передает в радиоэфир сообщения, которые можно принять любой программой для работы телетайпом. Программа написанная на языке Си потребовала бы использование АТМЕГИ.

По этой причине я на форумах часто читаю: "Программа работает в Протеусе, а в микроконтроллере нет."
rk50
Участник
Offline1.1
с мар 2015
Москва
Сообщений: 14

Дата: 02 Фев 2017 13:58:45 #  

Вернее сказать Ассемблер хорош для того, чтобы клиент не мог доработать коды, а второе достоинство - это отсутствие избыточности кода и мо.зги лучше развивает, чем Си
 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
 
Начало
Время загрузки страницы (сек.): 0.015; miniBB®
Магазин раций, антенн и аксессуаров. Много Си-Би техники.