toriro
|
|
1 | |
Измеритель велопробега03.04.2010, 14:25. Показов 9538. Ответов 15
Метки нет (Все метки)
Задумка такая: Геркон стоит, в регистре записано значение, соответствующее длине колеса, к примеру 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 |
03.04.2010, 14:25 | |
Ответы с готовыми решениями:
15
Измеритель L/C измеритель измеритель ёмкости Измеритель индуктивности нужен |
0 / 0 / 0
Регистрация: 16.02.2010
Сообщений: 511
|
|
03.04.2010, 14:44 | 2 |
По коду не подскажу.
А вот по конструкции - если предполагается использование в реальных условиях, геркон лучше заменить на датчик холла (статья на сайте есть) - герконы с нигазина обычно имеют очень маленький ресурс и на такую активную работу не рассчитаны.
0
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
|
|
03.04.2010, 15:23 | 3 |
Или, чтоб не заморачиваться с умножением, организовать 2 счетчика (на одном регистре для десятых, на паре для целых), прибавлять в каждый по двойке, а в пару еще и прибавлять 1 с учетом переноса по достижении в 1-м счетчике числа 10, обнуляя при этом 1-й счетчик.
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 |
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 А то в протеусе почему-то одноразовое нажатие на кнопку запускает вызов подпрограммы Count при каждом прохождени бесконечного цикла. В авр студио все иначе.. не пойму.. Это баги протеуса? |
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
04.04.2010, 21:41 | 11 |
Сообщение от toriro
SBIC PIND,3 rcall Count rjmp IndicCycle пока не подам на пин 3 порта Д уровень логической единицы, подпрограмма Count не вызовется, а будет перепрыгивать на IndicCycle, делая бесконечный цикл? А то в протеусе почему-то одноразовое нажатие на кнопку запускает вызов подпрограммы Count при каждом прохождени бесконечного цикла. В авр студио все иначе.. не пойму.. Это баги протеуса? Вызов Count происходит постоянно пока PIND установлен, а надо что бы он вызывался перепадом из 0 в 1. Проще использовать внешнее прерывание по изменению уровня.
0
|
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 9
|
|
04.04.2010, 22:15 | 12 |
Команда 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
Поправьте меня, если я ошибся.
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
0
|
08.04.2010, 16:23 | |
08.04.2010, 16:23 | |
Помогаю со студенческими работами здесь
16
посоветуйте измеритель RLC измеритель угла поворота RLC измеритель индикатор Измеритель производительности насоса Выбор измеритель-калибратора Делаю измеритель мощности Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Обработка графической информации
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
Основные понятия информации
В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
|