char temp = 0x00;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xEF; // сброс экрана (RESET = 0)
delay(2000); // задержка в 2 мс
PORTDLC = 0x7F; // выключение сброса
write(); //включение записи
command(0x80);
//установка текстового режима
data(0x0); //проверка установки слова
data(0x10);
command(0x40);
data(0x10); // устанавливается размер области текста (1E)
data(0x00); // - 0x1000
command(0x41);
//включается дисплей текста, курсор, выключается мигание
command(0x94);
command(0xA7); //курсор 8×8 точек
}
//********************************************************************
//Enable: Функция разрешает работу ИС
//********************************************************************
void enable(void) {
PORTDLC = PORTDLC | 0x04; // Установить 1 на линии enable
PORTDLC = PORTDLC & 0xFB; // Установить 0 на линии enable
}
//********************************************************************
//Disable: Функция запрещает работу ИС
//********************************************************************
void disable(void) {
PORTDLC = PORTDLC | 0x04;
}
//********************************************************************
//Command: Функция посылает команду отключения на ЖКД
//********************************************************************
void command(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xFE; // сброс записи
enable(); // сброс флага CE
delay(10); // задержка не менее 80 нс
disable(); // включение флага CE
}
//********************************************************************
//Data: Функция пересылает данные на ЖКД
//********************************************************************
void data(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xF7; // перевести C/D на низкий уровень
PORTDLC = PORTDLC & 0xFE; // перевести WR на низкий уровень
PORTDLC = PORTDLC & 0xFB;
delay(10);
disable();
}
//********************************************************************
//Write: Функция конфигурирует порт P как выходной
//********************************************************************
void write() {
DDRP = 0xFF;
}
//********************************************************************
//Read: Функция конфигурирует порт P как входной
//********************************************************************
void read() {
DDRP = 0x00;
}
//********************************************************************
//Status_wait: Создает соответствующие задержки между командами ЖКД
//********************************************************************
void status_wait() {
char temp = 0x00;
DDRP = 0x00;
PORTDLC = PORTDLC | 0x0F; // сбросить все
PORTDLC = PORTDLC & 0xFD; // сброс флага RD
enable();
delay(10);
while ((temp & 0x03) != 0x03) {
temp = PORTP;
}
disable();
DDRP = 0xFF;
}
//********************************************************************
//LCD_char: Функция выводит ASCII код на экран ЖКД
//********************************************************************
void LCD_char(unsigned char n) {
data(n-0x20);
command(0xC0);
}
//********************************************************************
//Clearscreen: Функция очищает экран ЖКД
//********************************************************************
void Clearscreen() {
int i,j;
Reset_cursor();
for (i=0; i < 16; i++) for (j=0; j<16; j++) LCD_char(' ');
Reset_cursor();
}
//********************************************************************
//Newline: Функция выводит пустую строку на экран ЖКД
//********************************************************************
void newline() {
int i;
for (i=0; i < 16; i++)
LCD_char(' ');
}
//********************************************************************
//Reset_cursor: Функция возвращает курсор ЖКД в начальную позицию
//********************************************************************
void Reset_cursor() {
data(0x00);
data(0x10);
command(0x24);
}
//********************************************************************
7.7.7. Некоторые комментарии
Система для игры в «15» использует пять кнопок вспомогательной клавиатуры, чтобы перемещать фишки: стрелку «Вверх», стрелку «Вниз», стрелку «Вправо», стрелку «Влево» и кнопку «Выбор». Кроме того, расположение фишки определяется номерами строки и столбца. Однажды сформированная, система может использоваться для игры взрослыми и детьми.
7.8. Программирование резидентного Flash ПЗУ микроконтроллера B32 в составе платы отладки MC68HC912B32EVB
В главе 4 мы обсуждали конфигурацию памяти МК B32 семейства 68HC12. Как было упомянуто, в состав МК B32 входит память программ типа Flash объемом 32Кб. В установленном на плате отладки MC68HC912B32EVB микроконтроллере в области Flash ПЗУ записана программа монитора D-Bug12. Если вы желаете использовать отведенный под нее объем для записи части рабочей программы, то необходимо стереть программу монитора D-Bug12. Но неплохо было бы сохранить ее, чтобы снова записать в память при необходимости.
Читать дальше