ЦАП на pic16f628, не могу остановить счет нажатий » Форум сайта Pic.RKniga.ru


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга


    Ответить
     ЦАП на pic16f628, не могу остановить счет нажатий
    TIMMY
    4 января 2014 22:21
    Сообщение #1


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 9
    Регистрация: 16.10.2013
    ICQ:--
    Доброго времени всем, решил "замутить" и в дальнейшем реализовать ПИ регулятор. Вот только не могу справиться с количеством "нажматий" хочу 0+16 и -16, итого 16, (короче от нуля, без отрицательных чисел). В симуляторе гоняет регистр по кругу от 0 до 239 и наоборот (больше регистр не позволяет). Помогите чтобы первые 4 бита регистра VRCON не переполнить, при EF остановить и дальше не плюсовать, а при E0 не минусовать дальше.
    Мой код:
    ;FOR PIC16F628A

    ;РАЗРАБОТАЛ ТЁМЫЧ
    ;RB0 КНОПА ПРИБАВИТЬ
    ;RB1 КНОПА УБАВИТЬ
    ;RA2 ВЫХОД (Vref)
    ;****************************************************************************

    D_0 EQU 0X25 ;регистр ДАННЫЕ НА ВЫХОД
    MAX EQU 0X27 ;регистр МАКСИМУМ 16
    MIN EQU 0X28 ;регистр МИНИМУМ 0
    T_0 EQU 0X29 ;ДЛЯ ЗАДЕРЖКИ
    ;============================================================================
    Org 0X00
    GOTO MAIN ;поехали
    ;Org 0X04
    ;GOTO TMR_0 ;ОБРАБОТКА ТАЙМЕРА

    ;***************************************************************************

    MAIN: ; установка портов
    CLRF PORTA
    CLRF PORTB
    CLRF STATUS
    MOVLW B'00000010'
    MOVWF CMCON
    BSF STATUS, RP0
    MOVLW B'11100000'
    MOVWF VRCON
    ;BCF PCON, 3
    MOVLW B'10000110' ;
    MOVWF OPTION ;
    MOVLW B'00011111'
    MOVWF TRISA
    MOVLW B'00000111'
    MOVWF TRISB
    MOVLW B'00000001'
    MOVWF PIE1
    BCF STATUS, RP0
    MOVLW B'00110101'
    MOVWF T1CON
    MOVLW B'00100000'
    MOVWF INTCON

    CLRF D_0
    BCF STATUS, Z
    ;===========================================================================

    S_1: ;SV1 +
    BTFSS PORTB, 0
    GOTO S_11
    CALL T0
    BTFSS PORTB, 0
    GOTO S_11
    BTFSS STATUS, Z
    CALL ID
    BTFSS MAX, 3
    CALL ID
    GOTO S_11

    S_11: ;SV2 -
    BTFSS PORTB, 1
    GOTO S_1
    CALL T0
    BTFSS PORTB, 1
    GOTO S_1
    BTFSS STATUS, Z
    CALL DD
    BTFSC MIN, 3
    CALL DD
    GOTO S_1
    ;===========================================================================
    ID: ;INC

    BCF STATUS, Z
    INCF D_0, 1
    MOVFW D_0
    ADDLW B'11100000'
    BCF STATUS, Z
    BSF STATUS, RP0
    MOVWF VRCON
    MOVWF MAX
    XORLW B'11101111'
    BCF STATUS, RP0
    RETURN

    ;--------------------------------------------------------------------------
    DD: ;DEC
    BCF STATUS, Z
    DECF D_0, 1
    MOVFW D_0
    ADDLW B'11100000'
    BSF STATUS, RP0
    MOVWF VRCON
    MOVWF MIN
    XORLW B'11100000'
    BCF STATUS, RP0
    RETURN
    ;==========================================================================

    ;==================ЗАДЕРЖКА=ДРЕБЕЗГА=======================================
    T0: ;МАЛАЯ ДЛЯ СИМУЛЯТОРА (ИНАЧЕ 255)
    MOVLW .5
    MOVWF T_0
    T_00:
    DECFSZ T_0, 1
    GOTO T_00
    RETURN
    ;==========================================================================


    END
    Перейти в начало страницы
    alex
    5 января 2014 21:16
    Сообщение #2


    Участник
    • 34

    Репутация: 3
    Группа: Администраторы
    Сообщений: 93
    Регистрация: 13.06.2012
    ICQ:--
    Перед инкрементом и декрементом необходимо сделать проверку на 0 и 16(если 16, то не плюсовать)
    Перейти в начало страницы
    TIMMY
    6 января 2014 18:02
    Сообщение #3


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 9
    Регистрация: 16.10.2013
    ICQ:--
    Решил вопрос, может и не очень красиво, и грамотно, но, авось, кому пригодится.
    DA_628.zip (564 | 1,15 Kb)
    Перейти в начало страницы
    TIMMY
    11 февраля 2014 16:59
    Сообщение #4


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 9
    Регистрация: 16.10.2013
    ICQ:--
    Привет всем, переделал программу на более надежную. И на железе опробовать не удалось (уехал в командировку), но что придумал - то придумал. Сильно не пинайте...628_SIM_PI_REG.7z (490 | 1,13 Kb)
    Перейти в начало страницы
    Быстрый ответ Ответить
    2чел. читают эту тему (гостей: 2)
    Пользователей: 0

      Сейчас: 20 июня 2018 18:30