Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ничего интересного:

Отправлено Леонид Иванович 17 апреля 2009, г. 17:49
В ответ на: Спасибо, большое, а что в файлах <Encoder.h> ,<Keyboard.h>, <Main.h> отправлено пользователем smartleds 17 апреля 2009, г. 17:42


//----------------------------------------------------------------------------

#ifndef EncoderH
#define EncoderH

//----------------------------- Константы: -----------------------------------

#include <Keyboard.h>

#define ENC_UP KEY_UP
#define ENC_DN KEY_DN

//-------------------------- Прототипы функций: ------------------------------

void Encoder_Init(void); //инициализация энкодера
void Encoder_Exe(void); //обработка энкодера

//----------------------------------------------------------------------------

#endif

//----------------------------------------------------------------------------

#ifndef KeyboardH
#define KeyboardH

//----------------------------- Константы: -----------------------------------

#define REP 0x80 //код повтора
#define REL 0x40 //код отпускания

#define KEY_NO 0x00 //нет нажатия
#define KEY_UP 0x01 //энкодер "больше"
#define KEY_DN 0x02 //энкодер "меньше"
#define KEY_CH_A 0x03 //кнопка "канал A"
#define KEY_CH_B 0x04 //кнопка "канал B"
#define KEY_STEP 0x05 //кнопка "шаг"
#define KEY_ENC 0x06 //кнопка энкодера

//-------------------------- Прототипы функций: ------------------------------

void Keyboard_Init(void); //инициализация модуля клавиатуры
void Keyboard_Exe(bool t); //опрос клавиатуры
void Keyboard_SetCode(char code); //установка текущего кода кнопки
char Keyboard_GetCode(void); //чтение текущего кода кнопки

//----------------------------------------------------------------------------

#endif

//----------------------------------------------------------------------------

#ifndef MainH
#define MainH

//----------------------------------------------------------------------------

#include <iom128.h>
#include <intrinsics.h>
#include <stdbool.h>
#include <stdlib.h>

//----------------------------------------------------------------------------

#define FCLK 16.0000 //clock frequency, MHz
#define TSYS 1000 //system timer, uS

//----------------------------------------------------------------------------

//Описание портов:

//I - вход
//O - выход
//B - двунаправленный вывод

//L - низкий активный уровень
//H - высокий активный уровень
//X - активный уровень не определен
//A - аналоговый сигнал

//------------------------------- Порт A: ------------------------------------

#define LCD_DATA PORTA //OH - шина данных LCD

//Направление:
#define I_DDRA 0xFF

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTA 0x00

//------------------------------- Порт B: ------------------------------------

#define NC_PB0 (1 << PB0) //IL - не используется
#define SCK (1 << PB1) //OH - линия SCK порта SPI
#define MOSI (1 << PB2) //OH - линия MOSI порта SPI
#define MISO (1 << PB3) //IH - линия MISO порта SPI
#define M_OC0 (1 << PB4) //OH - OC0
#define nCONFIG (1 << PB5) //OL - FPGA nCONFIG
#define M_OC1B (1 << PB6) //OH - OC1B
#define NC_PB7 (1 << PB7) //IL - не используется

//Направление:
#define I_DDRB (SCK | MOSI | M_OC0 | nCONFIG | M_OC1B)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTB (NC_PB0 | MISO | nCONFIG | NC_PB7)

//Макросы для управления и считывания состояния:
#define Port_nCONFIG_0 (PORTB &= ~nCONFIG)
#define Port_nCONFIG_1 (PORTB |= nCONFIG)

//------------------------------- Порт C: ------------------------------------

#define ENC_F2 (1 << PC0) //IL - фаза энкодера F2
#define ENC_F1 (1 << PC1) //IL - фаза энкодера F1
#define NC_PC2 (1 << PC2) //IL - не используется
#define SND (1 << PC3) //OH - выход звука
#define KEY_S (1 << PC4) //IL - кнопка "STEP"
#define NC_PC5 (1 << PC5) //IL - не используется
#define KEY_B (1 << PC6) //IL - кнопка "B"
#define KEY_A (1 << PC7) //IL - кнопка "A"

//Направление:
#define I_DDRC (SND)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTC (ENC_F2 | ENC_F1 | NC_PC2 | KEY_S | NC_PC5 | KEY_B | KEY_A)

//Макросы для управления и считывания состояния:
#define Pin_ENC_F2 (PINC & ENC_F2)
#define Pin_ENC_F1 (PINC & ENC_F1)
#define Port_SND (PORTC & SND)
#define Port_SND_0 (PORTC &= ~SND)
#define Port_SND_1 (PORTC |= SND)
#define Pin_KEY_S (PINC & KEY_S)
#define Pin_KEY_B (PINC & KEY_B)
#define Pin_KEY_A (PINC & KEY_A)

//------------------------------- Порт D: ------------------------------------

#define SCL (1 << PD0) //OL - линия SCL шины I2C
#define SDA (1 << PD1) //BL - линия SDA шины I2C
#define M_RXD (1 << PD2) //IL - дополнительная линия RXD
#define M_TXD (1 << PD3) //OL - дополнительная линия TXD
#define NC_PD4 (1 << PD4) //IL - не используется
#define NC_PD5 (1 << PD5) //IL - не используется
#define NC_PD6 (1 << PD6) //IL - не используется
#define NC_PD7 (1 << PD7) //IL - не используется

//Направление:
#define I_DDRD (SCL | M_TXD)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTD (SCL | SDA | M_RXD | M_TXD | NC_PD4 | NC_PD5 | NC_PD6 | NC_PD7)

//------------------------------- Порт E: ------------------------------------

#define PC_RXD (1 << PE0) //IL - линия RXD
#define PC_TXD (1 << PE1) //OL - линия TXD
#define M_XCK0 (1 << PE2) //OH - XCK0
#define M_OC3A (1 << PE3) //OH - OC3A
#define nSTATUS (1 << PE4) //IL - FPGA nSTATUS
#define CONF_D (1 << PE5) //IL - FPGA CONF_DONE
#define nSPIFS (1 << PE6) //OL - FPGA nSPIFS
#define nCLR (1 << PE7) //0L - FPGA nCLR

//Направление:
#define I_DDRE (PC_TXD | M_XCK0 | M_OC3A | nSPIFS | nCLR)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTE (PC_RXD | PC_TXD | nSTATUS | CONF_D | nSPIFS)

//Макросы для управления и считывания состояния:
#define Pin_nSTATUS (PINE & nSTATUS)
#define Pin_CONF_DONE (PINE & CONF_D)
#define Port_nSPIFS_0 (PORTE &= ~nSPIFS)
#define Port_nSPIFS_1 (PORTE |= nSPIFS)
#define Port_nCLR_0 (PORTE &= ~nCLR)
#define Port_nCLR_1 (PORTE |= nCLR)

//------------------------------- Порт F: ------------------------------------

//порт F:

#define M_ADC0 (1 << PF0) //AX - ADC0
#define M_ADC1 (1 << PF1) //AX - ADC1
#define M_ADC2 (1 << PF2) //AX - ADC2
#define TEST (1 << PF3) //OH - тестовый вывод
#define NC_PF4 (1 << PF4) //IL - не используется
#define NC_PF5 (1 << PF5) //IL - не используется
#define LCD_RS (1 << PF6) //OL - линия RS LCD
#define LCD_E (1 << PF7) //OL - линия E LCD

//Направление:
#define I_DDRF (LCD_RS | LCD_E | TEST)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTF (M_ADC0 | M_ADC1 | M_ADC2 | NC_PF4 | NC_PF5 | LCD_RS | LCD_E)

//Макросы для управления и считывания состояния:
#define Port_TEST_0 (PORTF &= ~TEST)
#define Port_TEST_1 (PORTF |= TEST)
#define Port_LCD_RS_0 (PORTF &= ~LCD_RS)
#define Port_LCD_RS_1 (PORTF |= LCD_RS)
#define Port_LCD_E_0 (PORTF &= ~LCD_E)
#define Port_LCD_E_1 (PORTF |= LCD_E)

//------------------------------- Порт G: ------------------------------------

//порт G:

#define EBTN (1 << PG0) //IL - кнопка энкодера
#define NC_PG1 (1 << PG1) //IL - не используется
#define NC_PG2 (1 << PG2) //IL - не используется
#define NC_PG3 (1 << PG3) //IL - не используется
#define NC_PG4 (1 << PG4) //IL - не используется

//Направление:
#define I_DDRG (0)

//Подтягивающие резисторы (in) или начальное состояние (out):
#define I_PORTG (EBTN | NC_PG1 | NC_PG2 | NC_PG3 | NC_PG4)

//Макросы для управления и считывания состояния:
#define Pin_EBTN (PING & EBTN)

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

#define HI(x) ((x >> 8) & 0xFF)
#define LO(x) (x & 0xFF)

#define BYTE1(x) (x & 0xFF)
#define BYTE2(x) ((unsigned int)(x >> 8) & 0xFF)
#define BYTE3(x) ((unsigned long)(x >> 16) & 0xFF)
#define BYTE4(x) ((unsigned long)(x >> 24) & 0xFF)

#define WORD(b1,b0) ((unsigned int)(b1 << 8) | b0)
#define DWORD(b3,b2,b1,b0) (((unsigned long)WORD(b3,b2) << 16) | WORD(b1,b0))

#define Delay_us(x) __delay_cycles(x * FCLK + 0.5)
#define ms2sys(x) (1E3 * x / TSYS)

//-------------------------- Прототипы функций: ------------------------------

void Delay_ms(int d);

//----------------------------------------------------------------------------

#endif


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 97:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru