[an error occurred while processing this directive]
Ну, не знаю. Я для 2313 так объявлял(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Михаил Е. 28 февраля 2006 г. 19:00
В ответ на: Ответ: OCR1B_Bit4 объявлена через стандартный макрос(+) и так как OCR1B в общем-то аппаратный регистр, то volatile не используется отправлено <font color=gray>0x16</font> 28 февраля 2006 г. 18:14


//***************************************************
//* Определение типов. *
//***************************************************
typedef union
{
volatile unsigned char byte;
struct
{
volatile unsigned char bit_0:1;
volatile unsigned char bit_1:1;
volatile unsigned char bit_2:1;
volatile unsigned char bit_3:1;
volatile unsigned char bit_4:1;
volatile unsigned char bit_5:1;
volatile unsigned char bit_6:1;
volatile unsigned char bit_7:1;
} bit;
struct
{
volatile unsigned char bit1_0:2;
volatile unsigned char bit3_2:2;
volatile unsigned char bit5_4:2;
volatile unsigned char bit7_6:2;
} bit2;
struct
{
volatile unsigned char bit2_0:3;
volatile unsigned char bit4_3:2;
} bit3;
} PORT;

//***************************************************
//* Определение адресов регистров. *
//***************************************************
static __io PORT ACSR_ @ 0x08; // Регистр статуса и управления аналогового компаратора
static __io PORT UBRR_ @ 0x09; // Регистр БОД-генератора UART
static __io PORT UCR_ @ 0x0a; // Регистр управления UART
static __io PORT USR_ @ 0x0b; // Регистр статуса UART
static __io PORT UDR_ @ 0x0c; // Регистр данных UART
static __io PORT PIND_ @ 0x10; // Порт D вход
static __io PORT DDRD_ @ 0x11; // Порт D направление
static __io PORT PORTD_ @ 0x12; // Порт D выход
static __io PORT PINB_ @ 0x16; // Порт B вход
static __io PORT DDRB_ @ 0x17; // Порт B направление
static __io PORT PORTB_ @ 0x18; // Порт B выход
static __io PORT EECR_ @ 0x1C; // Регистр управления EEPROM
static __io PORT EEDR_ @ 0x1D; // Регистр данных EEPROM
static __io PORT EEAR_ @ 0x1E; // Регистр адреса EEPROM
static __io PORT WDTCR_ @ 0x21; // Регистр управления сторожевым таймером
static __io PORT ICR1L_ @ 0x24; // Регистр захвата входа таймера1 младший байт
static __io PORT ICR1H_ @ 0x25; // Регистр захвата входа таймера1 старщий байт
static __io PORT OCR1AL_ @ 0x2A; // Регистр сравнения A выхода таймера1 младший байт
static __io PORT OCR1AH_ @ 0x2B; // Регистр сравнения A выхода таймера1 старщий байт
static __io PORT TCNT1L_ @ 0x2C; // Таймер/счетчик1 младший байт
static __io PORT TCNT1H_ @ 0x2D; // Таймер/счетчик1 старщий байт
static __io PORT TCCR1B_ @ 0x2E; // Регистр управления B таймера/счетчика1
static __io PORT TCCR1A_ @ 0x2F; // Регистр управления А таймера/счетчика1
static __io PORT TCNT0_ @ 0x32; // Таймер/счетчик 0
static __io PORT TCCR0_ @ 0x33; // Регистр управления таймером/счетчиком 0
static __io PORT MCUCR_ @ 0x35; // Регистр управления MCU
static __io PORT TIFR_ @ 0x38; // Регистр флагов прерываний по таймерам/счетчикам
static __io PORT TIMSK_ @ 0x39; // Регистр масок прерывания по таймерам/счетчикам
static __io PORT GIFR_ @ 0x3a; // Регистр флагов прерываний INT0 и INT1
static __io PORT GIMSK_ @ 0x3b; // Регистр масок прерываний INT0 и INT1
static __io PORT SPL_ @ 0x3D; // Указатель стека
static __io PORT SREG_ @ 0x3F; // Регистр статуса
..........
..........

Все работает, если прерывания вовремя запрещать.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru