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

 
 
 
Reply to this topicStart new topic
Денис v
сообщение Oct 12 2006, 16:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 5-08-06
Пользователь №: 19 348



Делаю проект в MPLAB, так как это написано в встроенном туторе, а именно пытаюсь
построить вот эти два исходника на asm (лежат в примерах MPLAB)

Example2.asm
Код
;
;    File: Example2.asm
;    This is the second file in the MPASM assembler/MPLINK linker example
;       Use with Example.asm
;

    list     p=16f84a
    #include p16f84a.inc

    extern main, service; These routines are in Example.asm

STARTUP    CODE     ; This area is defined in 16f84a.lkr,
                              ;  the linker script

    goto main; Jump to main code defined in Example.asm
    nop    ; Pad out so interrupt
    nop    ;  service routine gets
    nop    ;    put at address 0x0004.
    goto service ; Points to interrupt service routine

    end


Example.asm
Код
    list     p=16f84a
    #include p16f84a.inc

PROG    CODE

main    ; Min code entry called from Example2.asm
    global    main; Define as global so can be used in Example2.asm
    nop; Main does nothing -- Put your code here
    goto    main; Our sample "main" is just an infinite loop

service ; Interrupt routine, called from Example2.asm
    global service; Define as global so can be used in Example2.asm
    nop; Interrupt code would go here
    nop
    retfie

IDLOCS CODE; ID location data, address is in 16f84a.lkr
    dw 0x0102
    dw 0x0304

CONFIG CODE; Set config bits from defines in p16f84a.inc
    ; Config address for device programmer is in 16f84a.lkr
    dw _LP_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF      

    end


и получаю ошибки:
Warning[205] C:\PICC950\MY_SRC\ZXC2\EXAMPLE.ASM 22 : Found directive in column 1. (CONFIG)
Error[176] C:\PICC950\MY_SRC\ZXC2\EXAMPLE.ASM 22 : CONFIG Directive Error: (processor "16F84A" is invalid for CONFIG directive)


вопрос - как мне сообщить транслятору mpasm, что CONFIG - это не директива, а метка (обьявлена в p16f84a.inc)?
Пробел перед конфигом, избавляет от Warning[205] но не от Error[176]

Сообщение отредактировал Денис v - Oct 12 2006, 16:26
Go to the top of the page
 
+Quote Post
dac
сообщение Oct 12 2006, 18:16
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



Цитата(Денис v @ Oct 12 2006, 19:23) *


я в асме давно не писал, но может так попробовать:
Код
__CONFIG _RC_OSC & _PWRTE_ON & _CP_OFF &_WDT_ON
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Oct 12 2006, 18:17
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



config - это зарезервированное слово, нельзя его использовать как имя метки
Вот так нужно делать
__config _LP_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF
Go to the top of the page
 
+Quote Post
miga
сообщение Oct 13 2006, 02:30
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-04-05
Пользователь №: 3 928



Денис v,

В Вашем случае, видимо, имелось ввиду следующее:

- В example.asm измените "CONFIG" на что-нибудь вида "CONFIGG"
- Тоже самое проделайте в линкер-файле (16f84a.lkr), если найдете "CONFIG", если нет - добавьте строку:
Код
SECTION    NAME=CONFIGG     ROM=.config


- После сборки загляните в .lst файл и убедитесь что все находится на своих местах:
Код
                                           IDLOCS CODE; ID location data, address is in 16f84a.lkr
002000   0102     CLRW                         dw 0x0102
002001   0304     DECF      0x4,0x0            dw 0x0304

                                           CONFIGG CODE; Set config bits from defines in p16f84a.inc
                                              ; Config address for device programmer is in 16f84a.lkr
002007   3ff8     ADDLW     0xf8               dw _LP_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF
Go to the top of the page
 
+Quote Post
Денис v
сообщение Oct 13 2006, 03:32
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 5-08-06
Пользователь №: 19 348



Цитата(miga @ Oct 13 2006, 08:30) *
Денис v,

В Вашем случае, видимо, имелось ввиду следующее:

- В example.asm измените "CONFIG" на что-нибудь вида "CONFIGG"
- Тоже самое проделайте в линкер-файле (16f84a.lkr), если найдете "CONFIG", если нет - добавьте
...


да точно, хорошая идея!

Цитата
config - это зарезервированное слово, нельзя его использовать как имя метки
Вот так нужно делать
__config _LP_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF


а такая запись не повлияет на перемещаемость кода?
Go to the top of the page
 
+Quote Post
Денис v
сообщение Oct 22 2006, 19:38
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 5-08-06
Пользователь №: 19 348



вопрос решен, тему можно считать закрытой
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:16
Рейтинг@Mail.ru


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