Форум программистов, компьютерный форум, киберфорум
Измерительная техника
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/50: Рейтинг темы: голосов - 50, средняя оценка - 4.68
toriro
1

Измеритель велопробега

03.04.2010, 14:25. Показов 9538. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задумка такая: Геркон стоит, в регистре записано значение, соответствующее длине колеса, к примеру 2,2метра. Регистр прибавляет сам себя. Решил делать на 3хсекционном семисегментном индикаторе. Помогите разобраться, как же производить суммирование и как поставить запятую после 2го знака, чтоб считать не только целые числа? Код на асм:
Код
.ymstude "2313def.yms"

.def   Temp1=R16
.def   Temp2=R17
.def   Temp3=R18
.def   Temp4=R19
.def   Temp=R20

.dseg

Digit:     .byte 3
.cseg
.org 0

rjmp RESIT    ; Riset Homdler
rjmp EXT_INT0 ; IRQ0 Homdler
rjmp EXT_INT1 ; IRQ1 Homdler
rjmp TIM_CAPT1 ; Timer1 Capture Homdler
rjmp TIM_COMP1 ; Timer1 Compare Homdler
rjmp TIM_OVF1 ; Timer1 Overflow Homdler
rjmp TIM_OVF0 ; Timer0 Overflow Homdler
rjmp UART_RXC ; UART RX Complete Homdler
rjmp UART_DRE ; UDR Empty Homdler
rjmp UART_TXC ; UART TX Complete Homdler
rjmp ANA_COMP ; Analog Comparator Homdler

EXT_INT0  :   ret
EXT_INT1  :   ret
TIM_CAPT1 :   ret
TIM_OVF0  :   ret
TIM_OVF1  :   ret
UART_RXC  :   ret
UART_DRE  :   ret
UART_TXC  :   ret
ANA_COMP  :   ret
TIM_COMP1 :   ret

risit:        ldi Temp1,RamEnd   ;инициализация стека
out SPL,Temp1

cli

ldi Temp,0b11111111 ;настройка портов
out ddrb,Temp

ldi Temp,0b00001111
out ddrd,Temp

ldi Temp,0
sts Digit  ,Temp      ;загрузка начальных сначений
ldi Temp,2
sts Digit+1,Temp
ldi Temp,2
sts Digit+2,Temp

;*********************************************************
;MAIN
;*********************************************************

IndicCycle:   rcall Dysplay        ;цикл индикации
; add Digit,Digit  как сделать суммирование?
rjmp IndicCycle

;*********************************************************
Dysplay:
;последовательный вывод на индикацию содержимого
;переменной Digit

lds Temp1,Digit      ;загружаем 0-ю ячейку
ldi Temp,0b00000001  ;активируем 0-й разряд
;индикации
out PortD,Temp
rcall Decoder        ;вызываем 7-сегм. декодер
out PortB,Temp1      ;выводим значение в порт
rcall Delay1         ;ждем

lds Temp1,Digit+1    ;и .т.д
ldi Temp,0b00000010
out PortD,Temp
rcall Decoder

out PortB,Temp1
; CBI   PORTB7         ;как сделать запятую после
;после 2й цифры
rcall Delay1

lds Temp1,Digit+2
ldi Temp,0b00000100
out PortD,Temp
rcall Decoder
out PortB,Temp1
rcall Delay1

ret

;*********************************************************
Decoder:
;преобразование двоичного числа
;в код 7-сегментного индикатора

ldi ZL,Low(DcMatrix*2)   ;инициализация массива
ldi ZH,High(DcMatrix*2)

ldi Temp2,0             ;прибавление переменной
add ZL,Temp1            ;к 0-му адресу массива
adc ZH,Temp2

lpm                     ;загрузка значения
mov Temp1,r0
ret

DcMatrix:
;массив - таблица истинности декодера
;     hgfidcba   hgfidcba
.db 0b11000000,0b11111001   ;0,1
.db 0b10100100,0b10110000   ;2,3
.db 0b10011001,0b10010010   ;4,5
.db 0b10000010,0b11111000   ;6,7
.db 0b10000000,0b10010000   ;8,9

;*********************************************************
Delay1:
;цикл задержки

push Temp1
push Temp2

ldi Temp1,0
ldi Temp2,50

d11:          dec Temp1
brne d11
dec Temp2
brne d11

pop Temp2
pop Temp1

ret
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2010, 14:25
Ответы с готовыми решениями:

Измеритель L/C
Подкиньте ссылку, на какую не будь схему устройства для измерения ёмкости и индукции, на основе AVR.

измеритель
возникла нужда замерить время прохождения объекта мимо двух фотодатчиков(ик...

измеритель ёмкости
Привет всем! Я,как начинающий,осмелюсь спросить уважаемое сообщество заключения об этом измерителе...

Измеритель индуктивности нужен
Нужен прибор измеряющий индуктивность. Мультиметр измеряющий до 20Гн есть. Хочется отдельный...

15
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 511
03.04.2010, 14:44 2
По коду не подскажу.
А вот по конструкции - если предполагается использование в реальных условиях, геркон лучше заменить на датчик холла (статья на сайте есть) - герконы с нигазина обычно имеют очень маленький ресурс и на такую активную работу не рассчитаны.
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
03.04.2010, 15:23 3
Решил делать на 3хсекционном семисегментном индикаторе.
Не лучшее решение, ибо жрет много. В качестве отладочной платформы- нормально.
как же производить суммирование
Можно просто с каждым срабатыванием датчика увеличивать переменную на единицу, а выводить на дисплей уже с учетом поправочного коэффициента 2,2. Но 3 секции (при одной из них, занятой под десятые метра) выведет максимум 99х2метра=200м. (Вопрос, для чего считать такой маленький путь? Нужно будет предусмотреть автоматическое изменение "диапазона" отображения при переполнении разрядов индикатора).
Или, чтоб не заморачиваться с умножением, организовать 2 счетчика (на одном регистре для десятых, на паре для целых), прибавлять в каждый по двойке, а в пару еще и прибавлять 1 с учетом переноса по достижении в 1-м счетчике числа 10, обнуляя при этом 1-й счетчик.
и как поставить запятую после 2го знака
Запятая фиксированная, поэтому в простейшем случае вешаешь ее на свободную ножку порта и зажигаешь во время вывода значения на 2-й индикатор (или постоянно). Я в делаю так: в подпрограмме вывода на индикатор отлавливаю предпоследний разряд и при загрузке кода числа из таблицы делаю логическое "и" с числом 7F (обнуляю старший разряд кода числа, который и подключен к знаку десятичной точки) и только после этого вывожу значение. В этом случае точка высвечивается только при выводе предпоследнего разряда, не потребляя ток при индикации остальных.
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 537
03.04.2010, 19:18 4
Если нужно просто подсчитать длину, то можно не парится с МК. Берешь значится обычный калькулятор на клавишу "=" вешаешь геркон. Набираем "2,2+" и поехали.
Байка:
Приезжал ко мне за консультацией один чел. По поводу аналогичного девайса, нужно было мерять длину шланга для капельного орошения. Так вот собрали они его на калькуляторе, поставили колесо и ...
Втюхали другому челу за 10000 грн.
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 4
03.04.2010, 20:13 5
небольшой оффтопикКитайцев не переплюнуть. За 3$ можно получить самый простой велокомпьютер: подсчет средней\максимальной скорости, пройденного расстояния , времени в пути. Длина колеса регулируемая. И все это в аккуратном корпусе. Автоматическая активация от датчика, отключение после 5 минут простоя.

Единственный минус - экран без подсветки. Но в ночное время как-то не до параметров езды, по сторонам внимательнее смотреть надо.

Конечно, все это можно сделать самому. На подобную тему есть неплохая заметка на сайте.
0
toriro
03.04.2010, 22:08 6
хех) ну конечно с калькулятора проще. Да и делал я так первый раз) Только интересно ведь самому сделать)) Для начала сделаю на герконе, ну а потом и на датчике Холла походу переделаю.. С сидирома скручу.. Насчет длины я подумываю делать вывод сразу тогда в километрах, после запятой сотни метров...
Купить китайский велокомп конечно можно, но ведь это не интересно. Да, выйдет дороже, да, потрачу много времени, да, функционала будет меньше, да, многие меня не поймут... Но ведь хочется сделать)) Доказать себе что-то.. Другие и не оценят.
Насчет сетчика буду думать.
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 55
03.04.2010, 22:29 7
герконы с нигазина обычно имеют очень маленький ресурс и на такую активную работу не рассчитаны.
У меня 3_й год стоит геркон. (А счётчиком 1,5 года был калькулятор))) )
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 4
03.04.2010, 22:38 8
toriro
Одно дело - сделать, другое - использовать.
Самостоятельно сделать - конечно интересно. Но лично для меня это была бы не более чем абстрактная задача, которую хочется выполнить, нежели цель сделать нечто полезное своими руками.
Успехов вам.
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
03.04.2010, 22:47 9
Цитата Сообщение от toriro
Купить китайский велокомп конечно можно, но ведь это не интересно.
Ну что ж, добро пожаловать :-)))
то касается проекта: сразу скажу, в коде разбираться лень. Скажу лишь - либо считайте в двоичном, каждый раз переводите в десятичный, либо считайте сразу в двочно-десятчном виде.
И у того, и у другого способа есть свои плюсы и минусы. чисто для измерения пробега я бы порекомендовал двоично-десятичный...
0
toriro
04.04.2010, 21:11 10
я правильно понимаю работу следующего куска кода:
Код
         IndicCycle:   rcall Dysplay        ;цикл индикации
SBIC    PIND,3
rcall Count
rjmp IndicCycle
пока не подам на пин 3 порта Д уровень логической единицы, подпрограмма Count не вызовется, а будет перепрыгивать на IndicCycle, делая бесконечный цикл?
А то в протеусе почему-то одноразовое нажатие на кнопку запускает вызов подпрограммы Count при каждом прохождени бесконечного цикла. В авр студио все иначе.. не пойму.. Это баги протеуса?
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
04.04.2010, 21:41 11
Цитата Сообщение от toriro
я правильно понимаю работу следующего куска кода:
Код:
IndicCycle: rcall Dysplay ;цикл индикации
SBIC PIND,3
rcall Count
rjmp IndicCycle

пока не подам на пин 3 порта Д уровень логической единицы, подпрограмма Count не вызовется, а будет перепрыгивать на IndicCycle, делая бесконечный цикл?
А то в протеусе почему-то одноразовое нажатие на кнопку запускает вызов подпрограммы Count при каждом прохождени бесконечного цикла. В авр студио все иначе.. не пойму.. Это баги протеуса?
Вызов Count происходит постоянно пока PIND установлен, а надо что бы он вызывался перепадом из 0 в 1. Проще использовать внешнее прерывание по изменению уровня.
0
 Аватар для stt
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
04.04.2010, 22:15 12
пока не подам на пин 3 порта Д уровень логической единицы, подпрограмма Count не вызовется
Правильно.

Команда SBIC - пропустить если бит в регистре I/O очищен
Описание:

Команда проверяет состояние бита в регистре I/O и, если этот бит очищен, пропускает следующую команду. Динная команда работает с младшими 32 регистрами I/O (адреса с 0 по 31).
Видимо, кнопка неверно подключена. В таком варианте подтяжка порта должна быть отключена, пин 3 резистором ~510Ом должен тянуться к земле, а кнопка должна притягивать этот пин к плюсу.
Если твоя кнопка замыкает на землю, просто поменяй SBIC на SBIS.
З.Ы. Не забудь победить дребезг.
0
toriro
05.04.2010, 16:54 13
хм.. с дребезгом что-то не то получается.. у меня уже и задержка вроде большая поставлена а все равно счетчик вместо 50ти от 9ти нажатий срабатывает... Вот в мануале написано что ножки
(CKOUT/XCK/INT0) PD2
PB0 (AIN0/PCINT0)
в чем разница между PCINT0 и INT0 и можно ли прерывание повесить на любую другую ножку?
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
07.04.2010, 17:59 14
Цитата Сообщение от toriro
в чем разница между PCINT0 и INT0 и можно ли прерывание повесить на любую другую ножку?
INT0 можно задать прерывание на низкий уровень, любое состояние, на rising edge, т.е. на переброс с 0 на 1 или falling edge, с 1 на 0. Вообще зависит от контроллера. Для PCINT0 приходится проверять состояние порта, если это важно, т.к. прерывание происходит по любому событию.
Поправьте меня, если я ошибся.
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 178
07.04.2010, 18:19 15
Вот-вот... Сам задался этим вопросом. Сейчас пока вышел из положения простым постоянным опросом (там некритично у меня), а на будущее хотелось расставить точки над "и".
Вот взять напрмер тини13. Там в таблице векторов прерываний есть только одно прерывание ИНТ0. Обычное классическое прерывание.
А PCINT0 - что же это за прерывание? И можно ли его так назвать, если нужно постоянно смотреть за его состоянием? Конкретней задам вопрос: при "срабатывании прерывания PCINT0" куда прыгнет исполняемая программа?
Спасибо
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
08.04.2010, 16:23 16
Цитата Сообщение от tromzystor
А PCINT0 - что же это за прерывание?
Ну вот в tiny25/45/85 прерывание может приходить по любой из ножек, это и есть PCINT.
0
08.04.2010, 16:23
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2010, 16:23
Помогаю со студенческими работами здесь

посоветуйте измеритель RLC
хочу прикупить измеритель RTS типа е7-22 или br2821 th2821 должен мерить RTS и имитанс или что...

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

RLC измеритель индикатор
Всем доброго времени суток! Собрал RTS по мотивам: http://pro-rodyo.ru/measure/4319-59/ и попал...

Измеритель производительности насоса
Прошу сильно не пинать так как взялся делать то чего не умею. Пообещал преподавателю что сделаю...

Выбор измеритель-калибратора
Господа, встал вопрос прикупить себе калибратор. Бюджет хотелось бы уложить до 60 т.р. (ну если...

Делаю измеритель мощности
Здравствуйте! Помогите новичку с первым проектом: Задался целью создать устройство подсчитывающее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru