реклама на сайте
подробности

 
 
> Оптимизация программы - бортовой компьютер на PIC16F73
Hellka
сообщение Dec 21 2006, 13:37
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 2-10-06
Пользователь №: 20 895



делаю бортовой компьютер на пике
снимаю ацп значения с датчиков, соответственно в регистре 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 - не выходит
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AnyWay
сообщение Dec 26 2006, 11:58
Сообщение #2





Группа: Новичок
Сообщений: 10
Регистрация: 8-06-06
Пользователь №: 17 885



VIVOD_DAVLENIE

MOVLW D'152';----МЕНЬШЕ 152?
SUBWF DAVL,F;---ВЫЧЕСТЬ 152, СОХРАНИВ В РЕГИСТРЕ
BTFSS STATUS,C
RETLW D'0';---ДА, ЗАПИСАТЬ НА ВЫВОД 0

MOVLW D'210'-D'152';---БОЛЬШЕ 210?
SUBWF DAVL,W;---В РЕГИСТРЕ НЕ СОХРАНЯТЬ
BTFSC STATUS,C
RETLW D'7';---ДА, ЗАПИСАТЬ НА ВЫВОД 7

RRF DAVL,W;---РАЗДЕЛИТЬ НА 2(ЕСЛИ НЕНУЖНА БОЛЬШАЯ ТОЧНОСТЬ)
ADDWF PCL,F
RETLW H'1';---152
RETLW H'1';---154
RETLW H'2';---156
RETLW H'2';---158
RETLW H'2';---160
RETLW H'2';---162
RETLW H'3';---164
RETLW H'3';---166
RETLW H'3';---168
.........
RETLW H'6';---204
RETLW H'6';---206
RETLW H'6';---208

Итого: 38 строк. Можно конечно DAVL делить не на 2, а на 4. Тогда будет 25 строки, но это уже определяется необходимой точностью. В исходном тексте (который с ошибкой) этот кусок тоже 38 строк.

Сообщение отредактировал AnyWay - Dec 26 2006, 12:01
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01367 секунд с 7
ELECTRONIX ©2004-2016