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

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

Отправлено _Bill 18 июля 2006 г. 14:35
В ответ на: Написал заголовочные файлы для работы с периферией на С++. Как сделать так, чтобы эти дела были видны везде и всюду, в том числе и друг в друге? я что-то совсем запутался в этих инклудах. Кто как делает? отправлено =NIK= 18 июля 2006 г. 14:22


/*
Counter header file

File: counter.h

28-Oct-04 BK Initial edit
24-Aug-05 BK Last update
*/
#include
#include

/* MCU related constant definitions */

#define FOSC 16000000L // MCU clock frequency

/* I/O port definitions */

#define SGMNT_L_PORT PORTB // Low segment LED port (A-F segments)
#define SGMNT_H_PORT PORTC // High segment LED port (G-H)
#define G_BIT (1<<0) // G - segment
#define H_BIT (1<<1) // H - segment (dot)

/* LED symbol definitions */

#define MINUS_SYM 0x0A // '-'
#define PI_SYM 0x0B // 'П'
#define C_SYM 0x0C // 'C'
#define H_SYM 0x0D // 'H'
#define P_SYM 0x0E // 'P'

#define DIGIT_PORT PORTC // Digit selection port
#define DIGIT0_BIT (1<<2) // -- digit 0 (LS)
#define DIGIT1_BIT (1<<3) // -- digit 1
#define DIGIT2_BIT (1<<4) // -- digit 2
#define DIGIT3_BIT (1<<5) // -- digit 3 (MS)
#define DIGIT_MASK (DIGIT0_BIT | DIGIT1_BIT | DIGIT2_BIT | DIGIT3_BIT)

#define RELAY_PORT PORTD // Relay control port
#define RELAY_DDR DDRD //
#define RELAY_BIT (1<<5) // -- relay 1

#define INPUT_PORT PIND // Input control port
#define INPUT_PULLUP PORTD //
#define INPUT_DDR DDRD //
#define ENTER_BTN (1<<0) // -- "Enter" button
#define FAIL_BIT (1<<2) // -- "Power fail" signal
#define SETUP_BTN (1<<3) // -- "Setup" button
#define PROG_BTN (1<<4) // -- "Program" button
#define BUTN_MSK (ENTER_BTN | SETUP_BTN | PROG_BTN)
#define DEC_BIT (1<<6) // -- "-" button
#define INC_BIT (1<<7) // -- "+" button

/* Interrupt flag definitions */

#define TIMER0_BIT (1<<0) // Timer0 interrupt flag
#define TICK_BIT (1<<1) // 1 tick (50 mS) flag
#define QUART_SEC_BIT (1<<2) // 0.25 S time interval flag
#define HALF_SEC_BIT (1<<3) // 0.5 S time interval flag
#define DOT_BIT (1<<4) // Dot display flag
#define BUTTON_BIT (1<<6) // To check buttons flag
#define _0_1_S_BIT (1<<8) // 0.1 S time interval flag
#define TIMOUT_BIT (1<<9) // Time-out flag
#define _320MS_BIT (1<<10) // 320 mS interval flag

/* Mode bit definitions */

#define ENTER_RST (1<<0) // Restart on "Enter" button
#define NEXT_RST (1<<1) // Restart on "Next" incoming pulse
#define DELAY_RST (1<<2) // Restart after delay
#define RST_MASK (ENTER_RST | NEXT_RST | DELAY_RST)
#define RSTRT_BIT (1<<3) // Restart condition flag
#define REVRS_BIT (1<<4) // Reversive mode
#define CNTDN_BIT (1<<5) // Count down flag
#define SINGL_BIT (1<<6) // Single count flag
#define DELAY_BIT (1<<7) // Restart after delay flag
#define RESET_EN (1<<8) // Reset enable
#define PROG_EN (1<<9) // Program enable
#define COUNT_EN (1<<10) // Count limit setup enable
#define PASWRD_BIT (1<<11) // Password entering flag
#define LIMIT_BIT (1<<12) // Limit is reached flag
#define DOWN_BIT (1<<13) // Input '-' pulse flag

/* Common constant definitions */

#define ERROR 0xFF // Bad function return
#define FAIL 0x00 // Alternative bad function return
#define OK 0x01 // Good function return
#define DONE 0x02 // The work is done completely

/* Password relative definitions */

#define PASSWORD 7325 // Password value
#define PSWD_D3 7 // Digit 3
#define PSWD_D2 3 // -//- 2
#define PSWD_D1 2 // -//- 1
#define PSWD_D0 5 // -//- 0
#define PSWD_TIM 31 // Time-out value

/* EEPROM relative definitions */

#define SETUP_SAV (1<<6) // Setup is saved
#define LIMIT_SAV (1<<2) // Limit value is saved
#define STATE_SAV (1<<4) // Current state saved (if Power fail)

/* Data type definitions */

typedef enum {
stStop = 1, // Initial state
stProg, // Program mode
stCount, // Count mode
stDelay, // Delay before restart
stRestart, // Restart state
stPasswrd // Input password state
}
TState;

typedef struct {
TState state;
unsigned mode;
long value;
long limit;
}
TSavedInfo;

/* Global variable references */

//
// Global register variables
//
__no_init __regvar volatile unsigned IntFlags @ 14; // Various interrupt flags
__no_init __regvar volatile char TickCounter @ 13; // Tick counter (1 tick = 0.5mS)
__no_init __regvar TState State @ 12; // Digit mask
__no_init __regvar volatile char DigitCounter @ 11; // Digit counter
__no_init __regvar volatile char DigitMask @ 10; // Digit mask
__no_init __regvar unsigned Mode @ 8; // Counter mode flags
__no_init __regvar char Debounce @ 7; // Debounce value
__no_init __regvar char InMask @ 6; // Input signal mask
__no_init __regvar char BlinkedDigit @ 5; // Blinked digit number
__no_init __regvar char CountPulses @ 4; // Blinked digit number

//
// EEPROM data
//
__no_init __eeprom char eSave @ 9; // Data saved in EEPROM flag
__no_init __eeprom char eDebounce @ 10; // Debounce copy
__no_init __eeprom char eInMask @ 11; // InMask copy
__no_init __eeprom unsigned eMode @ 12; // Mode copy
__no_init __eeprom unsigned eLimit @ 18; // LimitValue copy
__no_init __eeprom unsigned eScale @ 20; // ScaleValue copy
__no_init __eeprom unsigned eRstDelay @ 22; // RstDelay copy
__no_init __eeprom TSavedInfo eInfo @ 100; // Saved info

//
// SRAM data
//
extern long CurntValue; // Current count value
extern int LimitValue; // Limit count value
extern long Limit; // Current limit value
extern char Digits[4]; // Timer counter BCD digits
extern char TimerFlags; // Various timer flags
extern unsigned RstDelay; // Restart delay counter
extern unsigned ScaleValue; // Scale factor
extern char TimoutCnt; // Time-out counter
extern char DotDigit; // Display dot digit
//
// Program memory data
//
extern __flash char DigitTable[]; // 7 segment digit table

/* Function prototypes */

//
// buttons module function definitions
//
void InitButtons(void);
char GetButtons(void);
char ReadBtns(void);

//
// timers module function definitions
//
void InitTimers(void);
void StartDebounce(void);
void StopDebounce(void);
void DoDelay(void);

//
// setup module function definitions
//
void Setup(void); // Setup the counter modes
void SetLimit(void); // Set counter limit value
char InPassword(void);

//
// counter module function definitions
//
unsigned BinToBCD(char _byte);
void BCDnumber(unsigned val);
void DoCount(void);

//
// LEDs module function definitions
//
void DisplayDigit(void);


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

Ответы


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

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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