Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
{ /* отреагировать*/
}
switch(a) { /*определение вида поворота */
case 0: /* движение вперед */
PWDTY0 = 200; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 250;
PWDTY2 = 250;
PWDTY3 = 200;
lcd_print("Forward\n");
break;
case 1: /*полуповорот налево */
PWDTY0 = 0; /*регистры
коэффициента заполнения ШИМ */
PWDTY1 = 250;
PWDTY2 = 250;
PWDTY3 = 125;
lcd_print("Half Left\n");
break;
case 2: /*полуповорот направо*/
PWDTY0 = 125; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 250;
PWDTY2 = 250;
PWDTY3 = 0;
lcd_print("Half Right\n");
break;
case 3: /*поворот налево*/
PWDTY0 = 125; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 250;
PWDTY2 = 0;
PWDTY3 = 125;
lcd_print("Left Turn\n");
break;
case 4: /*поворот направо*/
PWDTY0 = 125; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 0;
PWDTY2 = 250;
PWDTY3 = 125;
lcd_print("Right Turn\n");
break;
case 5: /*задний ход*/
PWDTY0 = 125; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 0;
PWDTY2 = 0;
PWDTY3 = 125;
for(i=0; i<0xFFFF; i++) { /* Задержка в 1,25 с перед движением назад*/
for(j=0; j<15; j++) {
;
}
}
lcd_print("Back Up\n");
break;
default: /*по умолчанию движение вперед, малая скорость */
PWDTY0 = 63; /*регистры коэффициента заполнения ШИМ */
PWDTY1 = 250;
PWDTY2 = 250;
PWDTY3 = 63;
lcd_print("Error\n");
break;
}
}
/********************************************************************/
/*lcd_init: инициализация режима работы ЖК дисплея */
/*Последовательность команд инициализации определяется изготовителем*/
/*PORTA: магистраль данных, PORTB[2:1]:
линия R/S, линия разрешения E*/
/********************************************************************/
void lcd_init {
DDRA=0xff; /*порт PORTA на вывод */
DDRB=0x06; /* порт PORTB [2:1] на вывод */
/*последовательности команд для инициализации ЖК дисплея */
putcommand(0x38);
putcommand(0x38);
putcommand(0x38);
putcommand(0x38);
putcommand(0x0f);
putcommand(0x01);
putcommand(0x06);
putcommand(0x00);
/*очистка дисплея, возврат курсора */
putcommand(0x00);
}
/********************************************************************/
/*putchar(char c): вывод символа на дисплей */
/********************************************************************/
int putchar(char c) {
PORTA=C;
PORTB= PORTB |0x04;
PORTB= PORTB |0x02;
PORTB= PORTB&0xfd;
for (i=0; i<100; i++); /*задержка на *150 мкс до того, как ЖКД */
/* сможет принять информацию */
return с;
}
/********************************************************************/
/********************************************************************/
/*putcommand(char c): выдача команды управления для ЖК дисплея */
/********************************************************************/
int putcommand(char с) {
PORTA= с;
PORTB= PORTB&0xfb;
PORTB= PORTB|0x02;
PORTB= PORTB&0xfd;
for (i=0; i<100; i++) /* задержка на *150 мкс до того, как ЖКД сможет*/
/*принять информацию */
{
;
}
return c;
}
/********************************************************************/
/*delay_25: задержка на 2.5 с */
/********************************************************************/
void delay_25 {
for (i=0; i<0xFFFF; i++) {
for (j=0; j<30; j++) {
Поделиться с друзьями: