Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

 Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


pgmspace.h Ссылка Файла


Детальное Описание

 

 

Макроопределения

#define 

__PGMSPACE_H_   1

#define 

__need_size_t

#define 

__ATTR_PROGMEM__   __attribute__((__progmem__))

#define 

__ATTR_PURE__   __attribute__((__pure__))

#define 

PROGMEM   __ATTR_PROGMEM__

#define 

PSTR(s)   ((const PROGMEM char *)(s))

#define 

__LPM_classic__(addr)

#define 

__LPM_enhanced__(addr)

#define 

__LPM_word_classic__(addr)

#define 

__LPM_word_enhanced__(addr)

#define 

__LPM_dword_classic__(addr)

#define 

__LPM_dword_enhanced__(addr)

#define 

__LPM(addr)   __LPM_classic__(addr)

#define 

__LPM_word(addr)   __LPM_word_classic__(addr)

#define 

__LPM_dword(addr)   __LPM_dword_classic__(addr)

#define 

pgm_read_byte_near(address_short)   __LPM((uint16_t)(address_short))

#define 

pgm_read_word_near(address_short)   __LPM_word((uint16_t)(address_short))

#define 

pgm_read_dword_near(address_short)   __LPM_dword((uint16_t)(address_short))

#define 

__ELPM_classic__(addr)

#define 

__ELPM_enhanced__(addr)

#define 

__ELPM_word_classic__(addr)

#define 

__ELPM_word_enhanced__(addr)

#define 

__ELPM_dword_classic__(addr)

#define 

__ELPM_dword_enhanced__(addr)

#define 

__ELPM(addr)   __ELPM_classic__(addr)

#define 

__ELPM_word(addr)   __ELPM_word_classic__(addr)

#define 

__ELPM_dword(addr)   __ELPM_dword_classic__(addr)

#define 

pgm_read_byte_far(address_long)   __ELPM((uint32_t)(address_long))

#define 

pgm_read_word_far(address_long)   __ELPM_word((uint32_t)(address_long))

#define 

pgm_read_dword_far(address_long)   __ELPM_dword((uint32_t)(address_long))

#define 

pgm_read_byte(address_short)   pgm_read_byte_near(address_short)

#define 

pgm_read_word(address_short)   pgm_read_word_near(address_short)

#define 

pgm_read_dword(address_short)   pgm_read_dword_near(address_short)

#define 

PGM_P   const prog_char *

#define 

PGM_VOID_P   const prog_void *

 

Типоопределения

typedef void PROGMEM 

prog_void

typedef char PROGMEM 

prog_char

typedef unsigned char PROGMEM 

prog_uchar

typedef int8_t PROGMEM 

prog_int8_t

typedef uint8_t PROGMEM 

prog_uint8_t

typedef int16_t PROGMEM 

prog_int16_t

typedef uint16_t PROGMEM 

prog_uint16_t

typedef int32_t PROGMEM 

prog_int32_t

typedef uint32_t PROGMEM 

prog_uint32_t

typedef int64_t PROGMEM 

prog_int64_t

typedef uint64_t PROGMEM 

prog_uint64_t

 

Функции

PGM_VOID_P 

memchr_P (PGM_VOID_P s, int val, size_t len)

int 

memcmp_P (const void *, PGM_VOID_P, size_t) __ATTR_PURE__

void

memcpy_P (void *, PGM_VOID_P, size_t)

void

memmem_P (const void *, size_t, PGM_VOID_P, size_t) __ATTR_PURE__

PGM_VOID_P 

memrchr_P (PGM_VOID_P s, int val, size_t len)

char

strcat_P (char *, PGM_P)

PGM_P 

strchr_P (PGM_P s, int val)

PGM_P 

strchrnul_P (PGM_P s, int val)

int 

strcmp_P (const char *, PGM_P) __ATTR_PURE__

char

strcpy_P (char *, PGM_P)

int 

strcasecmp_P (const char *, PGM_P) __ATTR_PURE__

char

strcasestr_P (const char *, PGM_P) __ATTR_PURE__

size_t 

strcspn_P (const char *s, PGM_P reject) __ATTR_PURE__

size_t 

strlcat_P (char *, PGM_P, size_t)

size_t 

strlcpy_P (char *, PGM_P, size_t)

size_t 

strlen_P (PGM_P)

size_t 

strnlen_P (PGM_P, size_t)

int 

strncmp_P (const char *, PGM_P, size_t) __ATTR_PURE__

int 

strncasecmp_P (const char *, PGM_P, size_t) __ATTR_PURE__

char

strncat_P (char *, PGM_P, size_t)

char

strncpy_P (char *, PGM_P, size_t)

char

strpbrk_P (const char *s, PGM_P accept) __ATTR_PURE__

PGM_P 

strrchr_P (PGM_P s, int val)

char

strsep_P (char **sp, PGM_P delim)

size_t 

strspn_P (const char *s, PGM_P accept) __ATTR_PURE__

char

strstr_P (const char *, PGM_P) __ATTR_PURE__


Документация макроопределений

#define __ELPM_classic__

(

addr 

 

 ) 

 

Value:

(__extension__({                    \
    uint32_t __addr32 = (uint32_t)(addr); \
    uint8_t __result;               \
    __asm__                         \
    (                               \
        "out %2, %C1" "\n\t"        \
        "mov r31, %B1" "\n\t"       \
        "mov r30, %A1" "\n\t"       \
        "elpm" "\n\t"               \
        "mov %0, r0" "\n\t"         \
        : "=r" (__result)           \
        : "r" (__addr32),           \
          "I" (_SFR_IO_ADDR(RAMPZ)) \
        : "r0", "r30", "r31"        \
    );                              \
    __result;                       \
}))

#define __ELPM_dword_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                          \
    uint32_t __addr32 = (uint32_t)(addr); \
    uint32_t __result;                    \
    __asm__                               \
    (                                     \
        "out %2, %C1"   "\n\t"            \
        "movw r30, %1"  "\n\t"            \
        "elpm %A0, Z+"  "\n\t"            \
        "elpm %B0, Z+"  "\n\t"            \
        "elpm %C0, Z+"  "\n\t"            \
        "elpm %D0, Z"   "\n\t"            \
        : "=r" (__result)                 \
        : "r" (__addr32),                 \
          "I" (_SFR_IO_ADDR(RAMPZ))       \
        : "r30", "r31"                    \
    );                                    \
    __result;                             \
}))

#define __ELPM_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                    \
    uint32_t __addr32 = (uint32_t)(addr); \
    uint8_t __result;               \
    __asm__                         \
    (                               \
        "out %2, %C1" "\n\t"        \
        "movw r30, %1" "\n\t"       \
        "elpm %0, Z+" "\n\t"        \
        : "=r" (__result)           \
        : "r" (__addr32),           \
          "I" (_SFR_IO_ADDR(RAMPZ)) \
        : "r30", "r31"              \
    );                              \
    __result;                       \
}))

#define __ELPM_word_classic__

(

addr 

 

 ) 

 

Value:

(__extension__({                        \
    uint32_t __addr32 = (uint32_t)(addr); \
    uint16_t __result;                  \
    __asm__                             \
    (                                   \
        "out %2, %C1"   "\n\t"          \
        "mov r31, %B1"  "\n\t"          \
        "mov r30, %A1"  "\n\t"          \
        "elpm"          "\n\t"          \
        "mov %A0, r0"   "\n\t"          \
        "in r0, %2"     "\n\t"          \
        "adiw r30, 1"   "\n\t"          \
        "adc r0, __zero_reg__" "\n\t"   \
        "out %2, r0"    "\n\t"          \
        "elpm"          "\n\t"          \
        "mov %B0, r0"   "\n\t"          \
        : "=r" (__result)               \
        : "r" (__addr32),               \
          "I" (_SFR_IO_ADDR(RAMPZ))     \
        : "r0", "r30", "r31"            \
    );                                  \
    __result;                           \
}))

#define __ELPM_word_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                        \
    uint32_t __addr32 = (uint32_t)(addr); \
    uint16_t __result;                  \
    __asm__                             \
    (                                   \
        "out %2, %C1"   "\n\t"          \
        "movw r30, %1"  "\n\t"          \
        "elpm %A0, Z+"  "\n\t"          \
        "elpm %B0, Z"   "\n\t"          \
        : "=r" (__result)               \
        : "r" (__addr32),               \
          "I" (_SFR_IO_ADDR(RAMPZ))     \
        : "r30", "r31"                  \
    );                                  \
    __result;                           \
}))

#define __LPM_classic__

(

addr 

 

 ) 

 

Value:

(__extension__({                \
    uint16_t __addr16 = (uint16_t)(addr); \
    uint8_t __result;           \
    __asm__                     \
    (                           \
        "lpm" "\n\t"            \
        "mov %0, r0" "\n\t"     \
        : "=r" (__result)       \
        : "z" (__addr16)        \
        : "r0"                  \
    );                          \
    __result;                   \
}))

#define __LPM_dword_classic__

(

addr 

 

 ) 

 

Value:

(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint32_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm"           "\n\t"              \
        "mov %A0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %B0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %C0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %D0, r0"   "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
        : "r0"                              \
    );                                      \
    __result;                               \
}))

#define __LPM_dword_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint32_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm %A0, Z+"   "\n\t"              \
        "lpm %B0, Z+"   "\n\t"              \
        "lpm %C0, Z+"   "\n\t"              \
        "lpm %D0, Z"    "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
    );                                      \
    __result;                               \
}))

#define __LPM_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                \
    uint16_t __addr16 = (uint16_t)(addr); \
    uint8_t __result;           \
    __asm__                     \
    (                           \
        "lpm %0, Z" "\n\t"      \
        : "=r" (__result)       \
        : "z" (__addr16)        \
    );                          \
    __result;                   \
}))

#define __LPM_word_classic__

(

addr 

 

 ) 

 

Value:

(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint16_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm"           "\n\t"              \
        "mov %A0, r0"   "\n\t"              \
        "adiw r30, 1"   "\n\t"              \
        "lpm"           "\n\t"              \
        "mov %B0, r0"   "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
        : "r0"                              \
    );                                      \
    __result;                               \
}))

#define __LPM_word_enhanced__

(

addr 

 

 ) 

 

Value:

(__extension__({                            \
    uint16_t __addr16 = (uint16_t)(addr);   \
    uint16_t __result;                      \
    __asm__                                 \
    (                                       \
        "lpm %A0, Z+"   "\n\t"              \
        "lpm %B0, Z"    "\n\t"              \
        : "=r" (__result), "=z" (__addr16)  \
        : "1" (__addr16)                    \
    );                                      \
    __result;                               \
}))

Automatically generated by Doxygen 1.5.2 on 21 Dec 2007.

Hosted by uCoz