Jump to content

serg555

Members
  • Content Count

    4
  • Joined

  • Last visited

Community Reputation

0 Обычный

About serg555

  • Rank
    Новенький

Электроника

  • Стаж в электронике
    3-5 лет
  1. Вопрос по видимости меток в другом файле. Есть проект загрузчика. В файле "memory.s" описаны глобальные метки: (извиняюсь за форматирование, проблемы с кнопкой CODE) .global _F1, _F2, _F3 _F1: mov W0, NVMADRU mov W1, NVMADR Далее в файле "main.c" объявлено: extern UWORD16 F1 (UWORD16, UWORD16) и далее происходит вызов функции F1 (A, B); Я вот не пойму, объявление global с подчеркиванием, а функция без него. Как компилятор понимает, что вызывая F1 (A, B); нужно перейти на метку _F1 ? Никак не пойму. Больше в проекте никаких функций F1 (тоже самое и с F2, F3) нет !
  2. Пошел искать костыли. Не нашел я никаких костылей !!!
  3. Это понятно, я только не понимаю вот чего. Смотрим файл: ; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been ; superseded by the CONFIG directive. The following settings ; are available for this device. ; ; Oscillator Selection bits: ; OSC = LP LP oscillator ; OSC = XT XT oscillator ; OSC = HS HS oscillator ; OSC = RC External RC oscillator, CLKO function on RA6 ; OSC = EC EC oscillator, CLKO function on RA6 ; OSC = ECIO EC oscillator, port function on RA6 ; OSC = HSPLL HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1) ; OSC = RCIO External RC oscillator, port function on RA6 ; OSC = IRCIO67 Internal oscillator block, port function on RA6 and RA7 ; OSC = IRCIO7 Internal oscillator block, CLKO function on RA6, port function on RA7 тут написано что директива _Config заменена директивой Config. Т.е. нужно писать без подчеркивания. И приводятся варианты настроек фьюз битов. Но это все, как мы можем заметить, является комментариями (стоит точка с запятой) А дальше идет следующее: ;----- CONFIG1H Options -------------------------------------------------- _OSC_LP_1H EQU H'F0' ; LP oscillator _OSC_XT_1H EQU H'F1' ; XT oscillator _OSC_HS_1H EQU H'F2' ; HS oscillator _OSC_RC_1H EQU H'F3' ; External RC oscillator, CLKO function on RA6 _OSC_EC_1H EQU H'F4' ; EC oscillator, CLKO function on RA6 _OSC_ECIO_1H EQU H'F5' ; EC oscillator, port function on RA6 _OSC_HSPLL_1H EQU H'F6' ; HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1) _OSC_RCIO_1H EQU H'F7' ; External RC oscillator, port function on RA6 _OSC_IRCIO67_1H EQU H'F8' ; Internal oscillator block, port function on RA6 and RA7 _OSC_IRCIO7_1H EQU H'F9' ; Internal oscillator block, CLKO function on RA6, port function on RA7 Здесь уже с подчеркиванием (символ "_"). Но я то в своем коде пишу: config OSC=LP, WDT=OFF. Как же компилятор узнает что такое OSC, LP, WDT, OFF. Я же НЕ ПИШУ: __config _OSC_XT_1H. Обясните мне пожалуйста !
  4. Здравствуйте. Решил тут докопаться до компилятора MCC18 (Среда MPLAB). Посмотреть откуда он берет инфу для конфигурирования PIC18F2585. Все знают, что для конфигурации нужно написать,например, следующее: # pragma config OSC=LP, WDT=OFF и так далее. Компилятор должен увидеть в подключаемом файле (.h либо .INC) шестнадцатеричные значения констант OSC, LP, WDT, OFF и др. Так вот, я посмотрел файл .h, там такого нет. В файле .INC есть только старый вариант конфигурационных констант, а именно: _OSC_LP_1H EQU H'F0' _OSC_XT_1H EQU H'F1' и так далее. Конкретно констант OSC, LP, WDT, OFF в этих файлах нет. Откуда тогда компилятор берет информацию. Подскажите, а то я наверно скоро монитор разобью
×
×
  • Create New...