Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.
chinga » 27 сен 2011, 11:33
Здравствуйте!
помогите вот с такой проблемой)
я с терминала пишу и отправляю слово(из нескольких букв) и это должно выводиться на ЛСД дисплее, получается с char, но с string не выходит.
- Код: Выделить всё • Развернуть
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <string.h>
#include <alcd.h>
#asm
.equ __lcd_port=0x12; PORTB
#endasm
void main(void)
{
int k = 0;
int n = 0;
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0xFF;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
lcd_init( 16 );
lcd_clear( );
lcd_gotoxy( 4,0 );
lcd_putsf( "LCD 16x02" );
lcd_gotoxy( 0,1 );
lcd_putsf( "CodeVision1.25.4" );
delay_ms(1000);
lcd_clear();
while (1){
char asd;
while(UCSRA.7==1){
asd = UDR;
if(asd == 'q'){
PORTC = 0b00000001;
lcd_gotoxy( k, n );
lcd_putsf("q");
k++;
}
if(asd[0] == 'w'){
PORTC = 0b00000010;
lcd_gotoxy( k, n );
lcd_putsf("w");
k++;
}
if(asd[0] == 'e'){
PORTC = 0b00000100;
lcd_gotoxy( k,n );
lcd_putsf("e");
k++;
}
}
}
}
как выводить string?
-
chinga
-
- Сообщения: 203
- Зарегистрирован: 24 дек 2008, 17:55
- Откуда: Актюбинск
Роботов » 27 сен 2011, 12:28
Можно так:
1. Принимаете посылку из нескольких символов.
2. Записываете посылку в некий массив.
3. Выводите из массива посимвольно на дисплей.
-
Роботов
-
- Сообщения: 14
- Зарегистрирован: 06 сен 2011, 08:16
- Откуда: Московская обл.
- ФИО: Сергей
chinga » 27 сен 2011, 13:19
ну теория как бы понятно) вот как реализовать)
-
chinga
-
- Сообщения: 203
- Зарегистрирован: 24 дек 2008, 17:55
- Откуда: Актюбинск
HarryStar » 27 сен 2011, 13:26
А что не выходит-то? Все отлично работает и со строками.
Создаете массив типа char string_from_terminal[100]; делаете счетчик (например k)с 0 и поступающие символы пихаете в массив string_from_terminal[k++] = asd; lcd_putchar(asd); lcd_gotoxy можно не делать, он сам по умолчанию сдвигает текущее знакоместо. В string_from_terminal у вас получается введенная с терминала строка. Если вы ее где-то собрались использовать, то нужно закрыть ее нулем string_from_terminal[k]=0;
Добавлено спустя 1 минуту 9 секунд:
почти так же как у вас, изменения то минимальны
-
HarryStar
-
- Сообщения: 995
- Зарегистрирован: 15 ноя 2010, 13:56
- Откуда: Нижний Новгород
- прог. языки: С, С++, РНР
Вернуться в Новичкам или основы основ роботостроения.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8