Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объявление переменной 
:(
    Опции темы
Fantaz1
Дата 26.10.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



Надо запрограммирывать микроконтроллер для выполнение определенной работы в MCStudio, так вот ассемблер я токо начал изучать, весь код написал и все работает почти как надо, но загнала вроде елементарнешая проблема...
вот так объявил в начале программы переменные
Timer_1 SET R0
...
Timer_8 SET R7
надо еще парочку переменных, а когда пишу R8 или R9 или чтот другое ошибки появляюца,
так вот как правильно обьявить переменные???
PM MAIL   Вверх
airyashov
Дата 27.10.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 1.7.2008

Репутация: 2
Всего: 6



если это 51, то почитайте методичку чтоли
SET Назначает символическое имя числовому значению или регист-
ру. Имя может быть впоследствии изменено с помощью дирек-
тивы SET.
а регистров всего 8, r0-r7



--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
piritus
Дата 27.10.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: 1
Всего: 3



Если нужно больше памяти, можно использовать eeprom.

Вот пример работы с ней:
Код

;******************************************************************************** 
;                        РАБОТА С EEPROM ПАМЯТЬЮ ДАННЫХ 
;******************************************************************************** 
;                                 "ШАПКА ПРОГРАММЫ" 
;================================================================================ 
;............................................................. 
;............................................................. 
;================================================================================ 
; Определение положения регистров специального назначения.  
;================================================================================ 
Intcon      equ        0Bh         ; Регистр Intcon. 
Status      equ        03h         ; Регистр Status. 
EEData      equ        08h         ; EEPROM - данные 
EECon1      equ        08h         ; EECON1 - банк1. 
EEAdr       equ        09h         ; EEPROM - адрес 
EECon2      equ        09h         ; EECON2 - банк1. 
;............................................................. 
;............................................................. 
;================================================================================ 
; Определение названия и положения регистров общего назначения. 
;================================================================================ 
Registr     equ        0Ch         ; Регистр оперативной памяти, используемый    171 
                                   ; при работе с EEPROM. 
;............................................................. 
;............................................................. 
;================================================================================ 
; Определение места размещения результатов операций. 
;================================================================================ 
W           equ        0           ; Результат направить в аккумулятор. 
F           equ        1           ; Результат направить в регистр. 
;================================================================================ 
; Присваивание битам названий. 
;================================================================================ 
RP0         equ        5           ; Бит выбора банка. 
GIE         equ        7           ; Бит глобального разрешения прерываний. 
;================================================================================ 
            org        2100h       ; Обращение к EEPROM памяти данных. 
            DE         0h,0h,64h   ; Записать в ячейки с адресами .0, .1, .2  
                                   ; числа 0h, 0h, 64h (.100) соответственно.   
            DE         0h,0h,0h    ; Записать в ячейки с адресами .3, .4, .5 
                                   ; числа 0h, 0h, 0h соответственно. 
            DE         "Korabelnikow E.A. Rus. Lipetsk. 03.2005"  ; Записать 
                                   ; символы в ячейки с адресами с .6 по .46 
;================================================================================ 
            org        0           ; Начать выполнение программы  
            goto       START       ; с подпрограммы START. 
;******************************************************************************** 
 
--------------------------------------------------------------------------------- 
                              ПОЯСНЕНИЯ ПО ДИРЕКТИВЕ DE 
--------------------------------------------------------------------------------- 
                                               Содержимое EEPROM 
1. Для  случая, указанного ---> 00 00 64 00 00 00 xx xx   xx xx xx xx xx xx xx xx 
   в "шапке" программы     ---> xx xx xx xx xx xx xx xx   xx xx xx xx xx xx xx xx 
                           ---> xx xx xx xx xx xx xx xx   xx xx xx xx xx xx xx FF 
                           ---> FF FF FF FF FF FF FF FF   FF FF FF FF FF FF FF FF 
   xx - 16-ричные числа символов, включая и пробелы. 
---------------------------------------------------------------------------------                                 
2. А можно и так: 
            org    2100h   ---> 00 00 64 FF FF FF FF FF   FF FF FF FF FF FF FF FF 
            DE     0h,0h,64h--> FF FF FF FF FF FF FF FF   FF FF FF FF FF FF FF FF 
                           ---> FF FF FF FF FF FF FF FF   FF FF FF FF FF FF FF FF 
                           ---> FF FF FF FF FF FF FF FF   FF FF FF FF FF FF FF FF 
--------------------------------------------------------------------------------- 
 
;******************************************************************************** 
;                               РАБОЧАЯ ЧАСТЬ ПРОГРАММЫ 
;******************************************************************************** 
;............................................................. 
;............................................................. 
;================================================================================ 
;                               Чтение данных из EEPROM 
;================================================================================ 
; Считывание содержимого байта с адресом 02h и запись его в регистр общего 
; назначения Registr. 
;-------------------------------------------------------------------------------- 
            bcf        Status,RP0  ; Переход в нулевой банк. 
 
            movlw      2           ; Записать в регистр W константу 02h. 
            movwf      EEAdr       ; Скопировать 02h, из регистра W,  
                                   ; в регистр EEAdr. 
 
            bsf        Status,RP0  ; Переход в первый банк. 
            bsf        EECon1,0    ; Инициализировать чтение. 
            bcf        Status,RP0  ; Переход в нулевой банк. 
 
            movf       EEData,W    ; Скопировать число из ячейки EEPROM,  
                                   ; с адресом 02h, в регистр W.   172 
            movwf      Registr     ; Скопировать число из регистра W  
                                   ;в регистр Registr. 
;-------------------------------------------------------------------------------- 
; Изменение содержимого регистра Registr. 
;-------------------------------------------------------------------------------- 
            incf       Registr,F   ; Увеличить на 1 содержимое регистра Registr с  
                                   ; сохранением результата в нем же. 
;================================================================================ 
;                                Запись данных в EEPROM.              
;================================================================================ 
; Запись содержимого регистра Registr в ячейку EEPROM с адресом 02h. 
;-------------------------------------------------------------------------------- 
            bcf        Intcon,GIE  ; Глобальный запрет прерываний. 
  
            movlw      2           ; Записать, в регистр W, константу 02h. 
            movwf      EEAdr       ; Скопировать константу 02h, из регистра W,  
                                   ; в регистр EEAdr. 
            movf       Registr,W   ; Скопировать число, из регистра Registr,  
                                   ; в регистр W. 
            movwf      EEData      ; Скопировать число, из регистра W,  
                                   ; в ячейку EEPROM с адресом 02h. 
            bsf        Status,RP0  ; Переход в первый банк. 
            bsf        EECon1,2    ; Разрешить запись.  
                                     
            movlw      055h        ; Обязательная 
            movwf      EECon2      ; процедура 
            movlw      0AAh        ; при записи. 
            movwf      EECon2      ; ----"---- 
            bsf        EECon1,1    ; ----"---- 
 
            bcf        EECon1,4    ; Сбросить флаг прерывания по окончании  
                                   ; записи в EEPROM. 
            bcf        Status,RP0  ; Переход в нулевой банк. 
;-------------------------------------------------------------------------------- 
;................................................................... 
;................................................................... 
;******************************************************************************** 
            end                    ; Конец программы. 
 
Примечание: регистр EECon2 не реализован физически. Он используется в операциях 
            записи в EEPROM память данных, для реализации обязательной 
            последовательности команд.

--------------------
PM MAIL ICQ   Вверх
Fantaz1
Дата 29.10.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 16.1.2009

Репутация: нет
Всего: нет



piritus спасибо большое, вот эта строчка "Intcon    equ        0Bh" с всего кода мне помогла разобраца)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.