Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение inkHunter »

IfoR писал(а):Дык, вы бы поконкретнее вопрос бы задали. Это же не форум телепатов-электронщиков. Всмысле строку в HEX? Т.е. надо Преобразовать строку так, что бы каждый символ старой строки отображался шестнадцатеричным значением кода символа в новой?


да


и еще вопрос как преобразовать масив типа іnt в строку ?

например есть {1,2,3} нада "1 2 3" ?
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение IfoR »

Ну тогда тут можно поступить разными способами. Например, допустим, пусть будет такая функция:

Код: Выделить всё


void str2HEX
(char inchar buffer)
{
 while (*
in) {sprintf(buffer"%02X", *in); buffer+=2in++;}
}
 

Её в качестве параметра in передаётся исходная строка, а buffer - место для результирующей строки.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Мастер Ломастер »

IfoR писал(а):Ну тогда тут можно поступить разными способами. Например, допустим, пусть будет такая функция:

Код: Выделить всё


void str2HEX
(char * in, char * buffer)
{
 while (*in) {sprintf(buffer, "%02X", *in); buffer+=2; in++;}
}
 

Её в качестве параметра in передаётся исходная строка, а buffer - место для результирующей строки.
страшная вещь!
битва с дураками проиграна, победители торжествуют. слава победителям!
inkHunter
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб авг 21, 2010 20:44:27
Откуда: Ростов
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение inkHunter »

Мастер Ломастер писал(а):
IfoR писал(а):Ну тогда тут можно поступить разными способами. Например, допустим, пусть будет такая функция:

Код: Выделить всё


void str2HEX
(char * in, char * buffer)
{
 while (*in) {sprintf(buffer, "%02X", *in); buffer+=2; in++;}
}
 

Её в качестве параметра in передаётся исходная строка, а buffer - место для результирующей строки.
страшная вещь!


а как правильно ?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Мастер Ломастер »

а разве я сказал - неправильно? все правильно, но страшно... функция пишет данные в буфер без всяких проверок на размер... во-всяком случае, об этом надо знать.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение IfoR »

Не страшней, чем sprintf. :)) Размер буфера легко вычисляется: количество_символов_с_строке * 2 +1
Хотя, вместо sprintf можно написать свою функцию:

Код: Выделить всё


char HEX
(char i)
{
 return i + ((i>9)?('A'-10):('0')); }

void str2HEX(char * in, char * buffer)
{
 
   while 
(*in) {*buffer++= HEX(*in / 10); *buffer++= HEX(*in % 10); in++;} 
   
*buffer 0;
}
 
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
Slavyan17
Опытный кот
Сообщения: 784
Зарегистрирован: Вс май 09, 2010 19:14:50
Откуда: Кемеровская обл. Новокузнецкий район

Re: Вопросы по С/С++ (СИ)

Сообщение Slavyan17 »

Посоветуйте хорошую книгу с нуля по программированию AVR язык С.
Ценности у всех в разлет, у нас все абсолютно ясно,
К родине любовь горит огнем, за годы не погасла.
Людское не отнять, а правильным живем роднее
Тело крепкое хранит нутро, а душу верой греем.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Вопросы по С/С++ (СИ)

Сообщение Gudd-Head »

Slavyan17 писал(а):Посоветуйте хорошую книгу с нуля по программированию AVR язык С.

Как вариант, Программирование на языке C для AVR и PIC микроконтроллеров (Шпак).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Slavyan17
Опытный кот
Сообщения: 784
Зарегистрирован: Вс май 09, 2010 19:14:50
Откуда: Кемеровская обл. Новокузнецкий район

Re: Вопросы по С/С++ (СИ)

Сообщение Slavyan17 »

Спасибо начнем изучать :)
Ценности у всех в разлет, у нас все абсолютно ясно,
К родине любовь горит огнем, за годы не погасла.
Людское не отнять, а правильным живем роднее
Тело крепкое хранит нутро, а душу верой греем.
Аватара пользователя
Кислый
Поставщик валерьянки для Кота
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Кислый »

так. понадобились макроопроделения, а я что-то нигде не найду толковой записи.

сейчас есть так:

#define xxx(i) (i<<XXX)

а надо получить:

#define xxx(N, i) и чтобы заменяло на (i<<XXXN)

кто подскажет ? не срочно, но и необходимо
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Аватара пользователя
Antifritz
Прорезались зубы
Сообщения: 222
Зарегистрирован: Чт июл 08, 2010 01:03:40
Откуда: Украина, Киев

Re: Вопросы по С/С++ (СИ)

Сообщение Antifritz »

А ХХХ-это число? И в его конец нужно "дописать" N?
Тогда так:
#define xxx(N, i) (i<<(XXX*1000+N))
А может лучше процедуру написать?
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение IfoR »

Кислый, ?

Код: Выделить всё

#define xxx(N, i) (i<<XXX##N) 
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

#define _clrL(port,bit) (port|=(1<<bit))
#define _clrH(port,bit) (port&=~(1<<bit))
#define _clr(port,bit,val) _clr##val(PORT##port,bit)
#define _low(port,bit,val) _clrH(PORT##port,bit)

http://electronix.ru/forum/index.php?ac ... t&id=30242
Аватара пользователя
Кислый
Поставщик валерьянки для Кота
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Кислый »

благодарю
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Аватара пользователя
dj-tok
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт мар 15, 2011 17:28:34

Re: Вопросы по С/С++ (СИ)

Сообщение dj-tok »

всем здрасте, помогите разобраться какой прогой можно скомпилировать исходный код в о вложении, winavr его не берёт валится на ошибки такого вот рода. Другие не пробовал, так как не занимался никогда этим а на эту софтину книгу нашёл вроде понятно написано что делать.

Код: Выделить всё

> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Compiling C: main.c
avr-gcc -c -mmcu=atmega8 -I. -gstabs -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o
main.c:1:19: warning: iom8v.h: No such file or directory
main.c:2:20: warning: macros.h: No such file or directory
main.c:4:20: warning: eeprom.h: No such file or directory
main.c:42:17: error: lcd.h: No such file or directory
main.c:43:19: error: delay.h: No such file or directory
main.c: In function 'DigitTerm':
main.c:58: warning: passing argument 1 of 'utoa' makes integer from pointer without a cast
main.c:58: warning: passing argument 2 of 'utoa' makes pointer from integer without a cast
main.c:59: warning: implicit declaration of function 'strcpy'
main.c:59: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:59: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:60: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:60: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:61: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:61: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:62: warning: implicit declaration of function 'strcat'
main.c:62: warning: incompatible implicit declaration of built-in function 'strcat'
main.c:62: warning: pointer targets in passing argument 1 of 'strcat' differ in signedness
main.c:62: warning: pointer targets in passing argument 2 of 'strcat' differ in signedness
main.c:63: warning: implicit declaration of function 'lcd_rus'
main.c: In function 'DigitTime':
main.c:68: warning: passing argument 1 of 'utoa' makes integer from pointer without a cast
main.c:68: warning: passing argument 2 of 'utoa' makes pointer from integer without a cast
main.c:69: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:69: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:70: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:70: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:71: warning: incompatible implicit declaration of built-in function 'strcat'
main.c:71: warning: pointer targets in passing argument 1 of 'strcat' differ in signedness
main.c:71: warning: pointer targets in passing argument 2 of 'strcat' differ in signedness
main.c:73: warning: implicit declaration of function 'WriteSym'
main.c:74: warning: passing argument 1 of 'utoa' makes integer from pointer without a cast
main.c:74: warning: passing argument 2 of 'utoa' makes pointer from integer without a cast
main.c:75: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:75: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:76: warning: incompatible implicit declaration of built-in function 'strcpy'
main.c:76: warning: pointer targets in passing argument 1 of 'strcpy' differ in signedness
main.c:77: warning: pointer targets in passing argument 1 of 'strcat' differ in signedness
main.c:77: warning: pointer targets in passing argument 2 of 'strcat' differ in signedness
main.c: In function 'menu':
main.c:83: warning: implicit declaration of function 'WriteDDR'
main.c:88: warning: array subscript has type 'char'
main.c:88: warning: array subscript has type 'char'
main.c:89: warning: array subscript has type 'char'
main.c:89: warning: array subscript has type 'char'
main.c:92: warning: array subscript has type 'char'
main.c:95: warning: array subscript has type 'char'
main.c:95: warning: array subscript has type 'char'
main.c:96: warning: array subscript has type 'char'
main.c:96: warning: array subscript has type 'char'
main.c:99: warning: array subscript has type 'char'
main.c: In function 'adc_init':
main.c:105: error: 'ADCSR' undeclared (first use in this function)
main.c:105: error: (Each undeclared identifier is reported only once
main.c:105: error: for each function it appears in.)
main.c:106: error: 'ADMUX' undeclared (first use in this function)
main.c:107: error: 'ACSR' undeclared (first use in this function)
main.c: In function 'timer1_init':
main.c:113: error: 'TCCR1B' undeclared (first use in this function)
main.c:114: error: 'TCNT1H' undeclared (first use in this function)
main.c:115: error: 'TCNT1L' undeclared (first use in this function)
main.c:116: error: 'OCR1AH' undeclared (first use in this function)
main.c:117: error: 'OCR1AL' undeclared (first use in this function)
main.c:118: error: 'OCR1BH' undeclared (first use in this function)
main.c:119: error: 'OCR1BL' undeclared (first use in this function)
main.c:120: error: 'ICR1H' undeclared (first use in this function)
main.c:121: error: 'ICR1L' undeclared (first use in this function)
main.c:122: error: 'TCCR1A' undeclared (first use in this function)
main.c: In function 'timer2_init':
main.c:128: error: 'TCCR2' undeclared (first use in this function)
main.c:129: error: 'ASSR' undeclared (first use in this function)
main.c:130: error: 'TCNT2' undeclared (first use in this function)
main.c:131: error: 'OCR2' undeclared (first use in this function)
main.c: At top level:
main.c:135: warning: ignoring #pragma interrupt_handler timer2_ovf_isr
main.c: In function 'timer2_ovf_isr':
main.c:139: error: 'TCNT2' undeclared (first use in this function)
main.c:146: warning: array subscript has type 'char'
main.c:152: warning: array subscript has type 'char'
main.c:162: error: 'PORTD' undeclared (first use in this function)
main.c:171: warning: array subscript has type 'char'
main.c:180: warning: array subscript has type 'char'
main.c: At top level:
main.c:190: warning: ignoring #pragma interrupt_handler adc_isr
main.c: In function 'adc_isr':
main.c:193: error: 'ADCL' undeclared (first use in this function)
main.c:194: error: 'ADCH' undeclared (first use in this function)
main.c:203: warning: array subscript has type 'char'
main.c:205: error: 'PORTD' undeclared (first use in this function)
main.c:221: error: 'PINB' undeclared (first use in this function)
main.c:221: error: 'PIND' undeclared (first use in this function)
main.c:226: warning: implicit declaration of function 'Delay_ms'
main.c: At top level:
main.c:253: warning: function declaration isn't a prototype
main.c:252: warning: return type of 'main' is not 'int'
main.c: In function 'main':
main.c:254: error: 'DDRC' undeclared (first use in this function)
main.c:255: error: 'DDRD' undeclared (first use in this function)
main.c:256: error: 'PORTD' undeclared (first use in this function)
main.c:258: warning: implicit declaration of function 'lcd_init'
main.c:259: warning: implicit declaration of function 'Write_CGRAM'
main.c:263: error: 'ClrCur' undeclared (first use in this function)
main.c:265: warning: implicit declaration of function 'SEI'
main.c:266: warning: implicit declaration of function 'Delay_mks'
main.c:270: error: 'ADCSR' undeclared (first use in this function)
main.c:281: error: 'PINB' undeclared (first use in this function)
main.c:281: error: 'PIND' undeclared (first use in this function)
main.c:379: error: 'BrigCur' undeclared (first use in this function)
main.c:527: warning: implicit declaration of function 'EEPROM_READ'
main.c:643: warning: array subscript has type 'char'
main.c:643: warning: array subscript has type 'char'
main.c:647: warning: array subscript has type 'char'
main.c:647: warning: array subscript has type 'char'
main.c:651: warning: array subscript has type 'char'
main.c:651: warning: array subscript has type 'char'
main.c:655: warning: array subscript has type 'char'
main.c:655: warning: array subscript has type 'char'
main.c:659: warning: array subscript has type 'char'
main.c:659: warning: array subscript has type 'char'
main.c:663: warning: array subscript has type 'char'
main.c:663: warning: array subscript has type 'char'
main.c:667: warning: array subscript has type 'char'
main.c:667: warning: array subscript has type 'char'
main.c:684: warning: array subscript has type 'char'
main.c:688: warning: array subscript has type 'char'
main.c:692: warning: array subscript has type 'char'
main.c:696: warning: array subscript has type 'char'
main.c:700: warning: array subscript has type 'char'
main.c:704: warning: array subscript has type 'char'
main.c:708: warning: array subscript has type 'char'
main.c:736: warning: implicit declaration of function 'EEPROM_WRITE'
main.c:757: error: 'TIMSK' undeclared (first use in this function)
main.c:770: warning: implicit declaration of function 'CLI'
make.exe: *** [main.o] Error 1

> Process Exit Code: 2

Заранее благодарен за помощь
Вложения
main.c
Вот исходник
(12.53 КБ) 467 скачиваний
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Мастер Ломастер »

начните с того, что вместо #include <iom8v.h> введите #include <avr/io.h>.
далее ваша программа хочет работать с файлами lcd.h и delay.h - они у вас имеются? все другие файлы, что упомянуты в include так же имеются?

после того, как разберетесь с этим, скорее всего появятся новые вопросы, тогда их и обсудим.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

исходник иар овский
а что надо ?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Мастер Ломастер »

urry писал(а):исходник иар овский
а что надо ?
мне показалось, там нет чисто иаровских фич, т.е. достаточно с большой вероятностью пойдет и под GCC... разве нет?
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
dj-tok
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт мар 15, 2011 17:28:34

Re: Вопросы по С/С++ (СИ)

Сообщение dj-tok »

Просто есть мёртвый проект http://www.radiokot.ru/lab/hardwork/11/, там нет информации чем компилировали, код поправили, а скомпилировать не можем под камень atmega8. Нужно просто исходный фаил скомпилировать и всё. Либо найти чем это сделать можно просто ещё ни один вариант, я так думаю, этой прошивки выйдет.
Аватара пользователя
dj-tok
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт мар 15, 2011 17:28:34

Re: Вопросы по С/С++ (СИ)

Сообщение dj-tok »

Файлов этих в наличии нет и не представляю от куда их брать, я с компиляцией столкнулся впервые и для меня это катастрофа. Вот файлики эти нашёл в папке с winavr а что с ними дальше делать не пойму.
Ответить

Вернуться в «Разные вопросы по МК»