Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Это мой глюк или MPASM?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Денис v
Делаю проект в 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]
dac
Цитата(Денис v @ Oct 12 2006, 19:23) *


я в асме давно не писал, но может так попробовать:
Код
__CONFIG _RC_OSC & _PWRTE_ON & _CP_OFF &_WDT_ON
Alex B._
config - это зарезервированное слово, нельзя его использовать как имя метки
Вот так нужно делать
__config _LP_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF
miga
Денис 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
Денис v
Цитата(miga @ Oct 13 2006, 08:30) *
Денис v,

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

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


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

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


а такая запись не повлияет на перемещаемость кода?
Денис v
вопрос решен, тему можно считать закрытой
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.