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

 
 
> Оптимизация программы - бортовой компьютер на 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
Ответов
DL36
сообщение Dec 25 2006, 13:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Hellka @ Dec 21 2006, 14:37) *
делаю бортовой компьютер на пике
снимаю ацп значения с датчиков, соответственно в регистре adres остаются какие-то значения, мне нужно сопоставить эти значения с реальными показателями датчиков. делаю это следующим образом:
делаю АЦП преобразование, а дальше - сравнение:

датчиков у меня 4 и код оч громоздкий, каким образом можно оптимизировать код? препод что-то говорил про таблицу, а не пойму, пробовал с помощью PCL - не выходит


Приблизительно так для возврата значений
Код
;----------------------------------------------------------------
;    Подпрограмма восстановления начальных
;    значений регистров
;----------------------------------------------------------------
table_reg
        addwf    PCL
        retlw    k_reg_1;
        retlw    k_reg_2;
        retlw    k_reg_3;
        retlw    k_reg_4;
        retlw    k_reg_5;
        retlw    k_reg_6;
        retlw    k_reg_7;
        retlw    k_reg_8;
        retlw    k_reg_9;
        retlw    k_reg_10;

Для PIC16 есть ограничение на расположение таблицы и на размер

А так для выполнения выбора типа case:
Код
table_out_bit
        addwf    PCL
        goto    b_1
        goto    b_2
        goto    b_3
    
b_1
        bsf        INDF, 0    ;
        return            ;
b_2
        bsf        INDF, 1    ;
        return            ;
b_3
        bsf        INDF, 2    ;
        return            ;
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 6th September 2025 - 13:41
Рейтинг@Mail.ru


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