Автор Тема: HI-TECH C Compiler for PIC18 MCUs V9.80  (Прочитано 3295 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Catcatcat

  • Администратор
  • Пользователь
  • *****
  • Сообщений: 66
  • Карма: 0
  • Пол: Мужской
  • -------------
    • Просмотр профиля
    • Мои альбомы
    • Светомузыка
HI-TECH C Compiler for PIC18 MCUs V9.80
« : 18 Май 2012, 17:12:42 »
Вопросы и ответы по компилятору.
« Последнее редактирование: 18 Май 2012, 17:22:50 от Catcatcat »

Оффлайн Catcatcat

  • Администратор
  • Пользователь
  • *****
  • Сообщений: 66
  • Карма: 0
  • Пол: Мужской
  • -------------
    • Просмотр профиля
    • Мои альбомы
    • Светомузыка
Re: HI-TECH C Compiler for PIC18 MCUs V9.80
« Ответ #1 : 18 Май 2012, 17:22:17 »
Как научить компилятор понимать "старые обозначения портов", чтобы не писать PORTAbits.RA0=1; а что бы компилятор понимал RA0=1;

Для этого необходимо в файл pic18xxxxxx.h добавить описание для каждого порта (пример для PORTC)

// bit and bitfield definitions
volatile bit RC0                 @ ((unsigned)&PORTC*+0;
volatile bit RC1                 @ ((unsigned)&PORTC*+1;
volatile bit RC2                 @ ((unsigned)&PORTC*+2;
volatile bit RC3                 @ ((unsigned)&PORTC*+3;
volatile bit RC4                 @ ((unsigned)&PORTC*+4;
volatile bit RC5                 @ ((unsigned)&PORTC*+5;
volatile bit RC6                 @ ((unsigned)&PORTC*+6;
volatile bit RC7                 @ ((unsigned)&PORTC*+7;

вставить эти коды в начале описания битов портов
......
    };
} PORTBbits @ 0xF81;

// Register: PORTC
extern volatile unsigned char           PORTC               @ 0xF82;
// bit and bitfield definitions
volatile bit RC0                 @ ((unsigned)&PORTC*8)+0;
volatile bit RC1                 @ ((unsigned)&PORTC*8)+1;
volatile bit RC2                 @ ((unsigned)&PORTC*8)+2;
volatile bit RC3                 @ ((unsigned)&PORTC*8)+3;
volatile bit RC4                 @ ((unsigned)&PORTC*8)+4;
volatile bit RC5                 @ ((unsigned)&PORTC*8)+5;
volatile bit RC6                 @ ((unsigned)&PORTC*8)+6;
volatile bit RC7                 @ ((unsigned)&PORTC*8)+7;
#ifndef _LIB_BUILD
asm("PORTC equ 0F82h");
#endif
// bitfield definitions
extern volatile union {
    struct {
        unsigned RC0                    :1;
        unsigned RC1                    :1;
        unsigned RC2                    :1;
        unsigned RC3                    :1;
.....

исправленный файл во вложении
« Последнее редактирование: 18 Май 2012, 18:08:46 от Catcatcat »