реклама на сайте
подробности

 
 
> вопрос по программке, под WinAVR
skilful
сообщение Aug 5 2007, 19:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Доброго времени суток. Вот решил перейти с асма на Си. Взялся за статьи Рюмика. Программка для управления 2 строчным ЖК с hd44780 посредством 8-битной ШД. Хочу пустить "бегущую" букву во второй строчке. Для этого имеется такой коротенький исходник:

#include <avr/io.h>
#define RS PC2
#define E PC0

#define TIME 2

//_______________________________________________
void pause(unsigned int a)
{
unsigned int count;
for (count = a; count>0; count--);
}
//_______________________________________________
//запись команды
void lcd_com(unsigned char p)
{
PORTC &= ~_BV(RS);
PORTC |= _BV(E);

PORTD = p;
pause(TIME);

PORTC &= ~_BV(E);
pause(5*TIME);
}
//_______________________________________________
//запись данных
void lcd_data(unsigned char p)
{
PORTC |= _BV(RS) | _BV(E);
PORTD = p;
pause(TIME);
PORTC &= ~_BV(E);
pause(5*TIME);
}
//_______________________________________________
//инициализация
void lcd_init(void)
{
lcd_com(0x08);
lcd_com(0x38);
pause(1000*TIME); //4.1 ms
lcd_com(0x38);
pause(30*TIME); //100us
lcd_com(0x38);
lcd_com(0x38);


lcd_com(0x01);
pause(1000*TIME);

lcd_com(0x0C);
lcd_com(0x06);
}
//_______________________________________________
//основная часть программы
unsigned int i;

int main(void)
{


PORTB = DDRD = 0xFF; //
PORTC = 0xF8; DDRC = 0x07;
lcd_init();



while(1)
{
for(i=0xC0;i<=0xD4;i++)
{

lcd_com(i);
lcd_data('o');


lcd_com(i-1);
lcd_data(' ');

pause(31000*TIME);

}

}
return (0) ;

}
_______________________________________________
_______________________________________________
_______________________________________________
Вот вопросик состоит в том, что при этих положениях строк:
lcd_com(i);
lcd_data('o');


lcd_com(i-1);
lcd_data(' ');
символ бежит со второго разряда 2-ой строчки


Если их поменять местами:

lcd_com(i-1);
lcd_data(' ');

lcd_com(i);
lcd_data('o');

то тогда все нормально.
Не пойму, что не так? Сижу туплю - перегрелся что ли smile.gif . Заранее спасибо.

Сообщение отредактировал skilful - Aug 5 2007, 19:06
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016