Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
21.12.2006, 14:32
|
|
Частый гость
Регистрация: 02.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Оптимизация программы - бортовой компьютер на PIC16F73
делаю бортовой компьютер на пике
снимаю ацп значения с датчиков, соответственно в регистре adres остаются какие-то значения, мне нужно сопоставить эти значения с реальными показателями датчиков. делаю это следующим образом:
делаю АЦП преобразование, а дальше - сравнение:
Код:
|
;************************************************* **************************
;********************Вывод значений с датчиков******************************
;************************************************* **************************
vivod_znachenii:
vivod_davlenie:
movlw .210
subwf davl,0
btfss STATUS,0
movlw .7
movwf dav_vivod
movlw .192
subwf davl,0
btfss STATUS,0
movlw .6
movwf dav_vivod
movlw .189
subwf davl,0
btfss STATUS,0
movlw .5
movwf dav_vivod
movlw .183
subwf davl,0
btfss STATUS,0
movlw .4
movwf dav_vivod
movlw .174
subwf davl,0
btfss STATUS,0
movlw .3
movwf dav_vivod
movlw .163
subwf davl,0
btfss STATUS,0
movlw .2
movwf dav_vivod
movlw .156
subwf davl,0
btfss STATUS,0
movlw .1
movwf dav_vivod
movlw .152
subwf davl,0
btfss STATUS,0
movlw .0
movwf dav_vivod
movf dav_viviod,0
movwf data
movlw DATABLE
movwf rsselest
call lcd_write |
датчиков у меня 4 и код оч громоздкий, каким образом можно оптимизировать код? препод что-то говорил про таблицу, а не пойму, пробовал с помощью PCL - не выходит
|
|
|
|
22.12.2006, 00:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.10.2006
Сообщений: 1,755
Сказал спасибо: 0
Сказали Спасибо 80 раз(а) в 56 сообщении(ях)
|
Re: Оптимизация программы - бортовой компьютер на PIC16F73
Сообщение от Hellka
|
делаю бортовой компьютер на пике
снимаю ацп значения с датчиков, соответственно в регистре adres остаются какие-то значения, мне нужно сопоставить эти значения с реальными показателями датчиков. делаю это следующим образом:
делаю АЦП преобразование, а дальше - сравнение:
Код:
|
;************************************************* **************************
;********************Вывод значений с датчиков******************************
;************************************************* **************************
vivod_znachenii:
vivod_davlenie:
movlw .210
subwf davl,0
btfss STATUS,0
movlw .7
movwf dav_vivod
movlw .192
subwf davl,0
btfss STATUS,0
movlw .6
movwf dav_vivod
movlw .189
subwf davl,0
btfss STATUS,0
movlw .5
movwf dav_vivod
movlw .183
subwf davl,0
btfss STATUS,0
movlw .4
movwf dav_vivod
movlw .174
subwf davl,0
btfss STATUS,0
movlw .3
movwf dav_vivod
movlw .163
subwf davl,0
btfss STATUS,0
movlw .2
movwf dav_vivod
movlw .156
subwf davl,0
btfss STATUS,0
movlw .1
movwf dav_vivod
movlw .152
subwf davl,0
btfss STATUS,0
movlw .0
movwf dav_vivod
movf dav_viviod,0
movwf data
movlw DATABLE
movwf rsselest
call lcd_write |
датчиков у меня 4 и код оч громоздкий, каким образом можно оптимизировать код? препод что-то говорил про таблицу, а не пойму, пробовал с помощью PCL - не выходит
|
Несколько не ясен Ваш вопрос.
Итак, у Вас есть четыре датчика, с помощью АЦП Вы их опросили, в результате в памяти, например, в четырех ячейках, находится код пропорциональный уровню напряжения с датчиков. Расскажите, что требуется от Вас дальше?
С уважением, Алексей.
|
|
|
|
22.12.2006, 07:47
|
|
Частый гость
Регистрация: 02.10.2006
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
а делее я должен сопоставить значения в регистре с реальным значением датчиков, т.е. в регистре допустим число 153 это соответствует давлению масла 5, т.е. реальное давление 5 я уже вывожу на экран.именно вот эти значения нужно сопоставить. пробовал PCL никак не получается, поэтому и делаю так,получается очень громоздко
|
|
|
|
22.12.2006, 13:14
|
|
Частый гость
Регистрация: 22.12.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Можно попробовать так, только не забудте проверит на "ошибки невнимательности"
Код:
|
adc_table addwf PCL, f
retlw .152
retlw .156
retlw .163
retlw .174
retlw .183
maslo_conv ;сюда пришли со значением в переменной sens_maslo
movlw max_num ;макс. кол-во значений датчика (константа)
movwf cyc1 ;инициируем цикл от макс. до 0
tc_begin ;начало цикла преобразования
movf cyc1, w
call adc_table ;очередной проход табличного преобразования
subwf sens_maslo, w ;сравниваем значение из таблицы со значением из АЦП
btfsc STATUS, Z
goto end_conv ;значения совпали, в переменной cyc1 - искомое
decfsz cyc1 ;совпадения нет, продолжаем проверку
goto tc_begin
end_conv |
Для обработки ситуации, когда насчитанное АЦП и заданное в таблице вообще не совпали, можно ввести флажек в цикл преобразования, думаю, это несложно.
Удачи!
__________________
Ничто так не говорит об отсутствии доказательств, как слова: бесспорно, очевидно, общеизвестно...
|
|
|
|
06.09.2010, 10:23
|
|
Прохожий
Регистрация: 06.09.2010
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Оптимизация программы - бортовой компьютер на PIC16F73
Чтобы оптимизировать компьютер не требуется много времени и сил. Я пользовался этой бесплатной программой. Очень удобно и быстро.
|
|
|
|
06.09.2010, 12:59
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Оптимизация программы - бортовой компьютер на PIC16F73
Сообщение от manitor
|
Чтобыоптимизировать компьютер не требуется много времени и сил. Я пользовался этой бесплатной программой. Очень удобно и быстро.
|
|
|
|
|
06.09.2010, 17:04
|
|
Временная регистрация
Регистрация: 08.07.2010
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 19 раз(а) в 5 сообщении(ях)
|
Re: Оптимизация программы - бортовой компьютер на PIC16F73
Да, насчет "оптимизации компьютера" - спасибо автору, улыбнуло.
Подобные задачи, на мой взгляд, проще решать через аналитическую зависимость, проще говоря формулу. Загоните эту таблицу в тот же Ексел, постройте линию тренда и вычисляйте формулу. Для удобства подгоните арифметику под работу с "модулем 2" - и работайте с чистыми сдвигами.
Например, по простому, если брать таблицу из первого поста, то там нужно отнять 152 и разделить на 8 - и получите искомую цифру (грубо, но для этой задачи приемлемо).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Оптимизация в AVR GCC
|
alberio |
Микроконтроллеры, АЦП, память и т.д |
45 |
02.03.2018 12:38 |
Бортовой компьютер для Chery Amulet
|
alex28411 |
Микроконтроллеры, АЦП, память и т.д |
6 |
28.10.2008 10:34 |
Помогите с PIC16F73
|
Viktor2004 |
Микроконтроллеры, АЦП, память и т.д |
23 |
04.05.2007 09:51 |
А у нас тоже есть бортовой компьютер, и тоже "почти&quo
|
bitkor |
Микроконтроллеры, АЦП, память и т.д |
8 |
18.01.2007 16:44 |
Pic16f73 + Ibutton
|
Hellka |
Микроконтроллеры, АЦП, память и т.д |
0 |
12.12.2006 22:38 |
Часовой пояс GMT +4, время: 13:21.
|
|