Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Может проблема в перключении страниц?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
glebka
После Atmel SAM7 и AVR перешел на С8051F120, и всё :-) пропало, в проекте подключен LED диcплей на портах P5, P6.Все попытки просто шевелить ногами для контроля LED проходят на УРА , как только делаю это в программе инициализации дисплея с портами непонятно что творится, появляютя левые сигналы, самостоятельно процессор что-то сам делает по всем ногам порта ;-).
Вопрос может это проблема переключения страниц SFR? По идее, смена страницы должна осуществлятся автоматически, при обращение к регистрам портов.
Думаю что -то неправильно со мной поэтому сильно не пинайте. Даташит прочитан, но боюсь, я ещё не до конца понимаю как всё работает в комплексе.
Исходный код , если кому будет интересно.

//OLED PINS
sbit OLED_CS = P5^0;
sbit OLED_RESET = P5^1;
sbit OLED_DC = P5^2;
sbit OLED_WR = P5^3;
sbit OLED_RD = P5^4;
sbit OLED_DATA0 = P5^5;
sbit OLED_DATA1 = P5^6;
sbit OLED_DATA2 = P5^7;
sbit OLED_DATA3 = P6^0;
sbit OLED_DATA4 = P6^1;
sbit OLED_DATA5 = P6^2;
sbit OLED_DATA6 = P6^3;
sbit OLED_DATA7 = P6^4;

#define OLED_CS_HIGH OLED_CS = 1; //OLED_CS = 1;
#define OLED_CS_LOW OLED_CS = 0;
#define OLED_DC_HIGH OLED_DC = 1;
#define OLED_DC_LOW OLED_DC = 0;
#define OLED_WR_HIGH OLED_WR = 1;
#define OLED_WR_LOW OLED_WR = 0;

#define OLED_DATA7_ON OLED_DATA7 = 1;
#define OLED_DATA7_OFF OLED_DATA7 = 0;


//----------------------------------------------------------------------
//
// Name: OLED_Set_Value
// Description:
//
//----------------------------------------------------------------------
void OLED_Set_Value(unsigned char value)
{


// The OLED's data control lines are connected to:
// DataBus (LCD): 7 6 5 4 3 2 1 0
// PORTOUT (Micro): P6.4 P6.3 P6.2 P6.1 P6.0 P5.7 P5.6 P5.5

P6 = (P6&0xE0)|(value>>3);
P5 = (P5&0x1F)|(value<<4);

}

//----------------------------------------------------------------------
//
// Name: OLED_WriteCommand
// Description:
//
//----------------------------------------------------------------------
void OLED_WriteCommand(unsigned char command )
{

OLED_DC_LOW;
OLED_CS_LOW;
Delayms(5);

OLED_Set_Value(command);
Delayms(5);

OLED_WR_LOW;
Delay(1);
OLED_WR_HIGH;
Delay(1);
OLED_CS = 1;
Delay(5);
}
AndreyS
Добрый день.

Вы даташит ведь внимательно читали. wink.gif Или все еще верите в чудеса??? Странички сами не переключаются при выборе порта.

Удачи.
glebka
Спасибо, думал я чего -то не так понял, что не мог поверить, что для простого дерганья ногами надо так напрягатся smile.gif .Ничего , победим. smile.gifБлагодарю.Новый процессор, новые фишки smile.gif .
-JonnS-
Чтоб облекчить себе жизнь при конфигурации МК попробуте порога от Silabsa:
Silabs config2.
Могу скинуть и мой модуль LCD (работаю с C8051F410) если нужно.
Волощенко
Определите режимы выходных портов: либо как open-drain, либо как push -pull. Это важная фишка для SiLabs контроллеров. Используйте также Configuration Wizard 2 (см.предыдущий пост).
А С8051F120 очень послушный, удачи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.