Помогите с программой на asm, Столкнулся с проблемой в pic16f628a » Форум сайта Pic.RKniga.ru


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

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

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

Сколько лет вы занимаетесь программированием PIC микроконтроллеров?


от 0-1 года
1-3 года
3-5 лет
5-10 лет
более 10


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


     Помогите с программой на asm, Столкнулся с проблемой в pic16f628a
    ilip
    13 января 2014 14:14
    Сообщение #1


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 11
    Регистрация: 13.08.2013
    ICQ:--
    Кароче не получается использовать 3 банк у pic 16f628a(точнее регистры общего назначения) вот нерабочий код-

    processor 16F628a
    #include <P16F628a.INC>
    __config 0x3F38
    ; _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF
    ; & _INTOSC_OSC_NOCLKOUT

    ; RAM-Variable
    VAR2 equ 0x21 ; Вот это первая переменная в банке 2
    VAR equ 0x121 ;Вторая переменная в банке 0
    STATUS equ 0x3 ;статус

    ; Program
    org 0000h
    BCF STATUS,6;В б р ю Банк
    BCF STATUS,5; ы и а 0
    MOVLW .5 ;Копирую в W число 5
    MOVWF VAR2 ; Копирую число 5 в регистр VAR2
    CLRW ;Oчистка W
    MOVLW .6 ;Копирую в W Число 6
    BSF STATUS,6 ;Выбираю банк 2
    MOVWF VAR ;Копирую в var число 6
    CLRW ; Очистка W
    MOVF VAR ;Запись в W Содержимое VAR
    BCF STATUS,6 ; Банк 0
    ADDWF VAR2,0 ;Суммировать W с VAR2 А результат в W


    End
    Ошибки-
    Message[302] C:\PRO\PROBAPIC\NEWPOG.ASM 22 : Register in operand not in bank 0. Ensure that bank bits are correct.
    Message[305] C:\PRO\PROBAPIC\NEWPOG.ASM 24 : Using default destination of 1 (file).
    Message[302] C:\PRO\PROBAPIC\NEWPOG.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.

    Что делать как работать с регистрами общего назначения в банке 2?
    Перейти в начало страницы
    alex
    13 января 2014 19:49
    Сообщение #2


    Активный участник
    • 51

    Репутация: 3
    Группа: Администраторы
    Сообщений: 107
    Регистрация: 13.06.2012
    ICQ:--
    А зачем использовать несколько банков, когда можно обойтись одним?

    неправильное распределение адреса. Надо:
    VAR2 equ 0x121 ; Вот это первая переменная в банке 2
    VAR equ 0x21 ;Вторая переменная в банке 0

    в строке "MOVF VAR ;Запись в W Содержимое VAR"
    надо заменить на "MOVF VAR,0" (либо на "movfw VAR")

    ;Выбор 0-го банка
    BCF STATUS,6
    BСF STATUS,5

    ;Выбор 1-го банка
    BCF STATUS,6
    BSF STATUS,5

    ;Выбор 2-го банка
    BSF STATUS,6
    BCF STATUS,5

    ;Выбор 3-го банка
    BSF STATUS,6
    BSF STATUS,5
    Перейти в начало страницы
    ilip
    15 января 2014 14:08
    Сообщение #3


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 11
    Регистрация: 13.08.2013
    ICQ:--
    alex,
    Спасибо,попробую так
    Перейти в начало страницы
    ilip
    18 января 2014 12:26
    Сообщение #4


    Новичок
    • 17

    Репутация: 0
    Группа: Посетители
    Сообщений: 11
    Регистрация: 13.08.2013
    ICQ:--
    Все разобрался надо было совсем по другому писать.
    Надо было писать как-будь то я работаю в банке 0 и адрес регистра писать по другому а в статусе писать банк 2 и вот код в общем.


        processor 16F628A
        #include <P16F628A.INC>
        __config 0x2138
    ;   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF
    ;   & _INTOSC_OSC_NOCLKOUT

    ; RAM-Variable
    BJ         EQU 0X20; Переменная в банке 0,1,2,3

    ; Program

        Org 0x0000

        CLRW;
        MOVLW 0x40          ;  
    ; b'01000000'  d'064'  "@"

        BCF STATUS,RP0      ; ба  2
        BSF STATUS,RP1      ;   нк
        MOVWF BJ          ; Копировать в регистр BJ число 64,и получиться так что это число запишется в банк 2
        
    LADR_0x0019
        GOTO LADR_0x0019

        End


    спасибо протеусу и его функцию смотреть оперативную память. :wink:
    Перейти в начало страницы
    Тема закрыта
    1чел. читают эту тему (гостей: 1)
    Пользователей: 0

      Сейчас: 19 апреля 2024 23:45