MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

Си

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Си
Автор: Артём ()
Дата:   03/07/2004 11:45

Как объявить массив состоящий из нескольких строк?
Т.е. одна строка
const unsigned char Str[]="STRING",
Но если строк больше одной то компилятор выдаёт ошибки.
Хотелось бы получить примерно следующее:

const unsigned char Str[]={"STRING1","STRING2","STRING3",0xA,0xB0,'A'}- массив

состоящий
из произвольных элементов.
Как правильно это сделать на СИ не знаю.
Заранее спасибо.


 
 Re: Си
Автор: m_fox ()
Дата:   03/07/2004 15:06

char *Str[]={"STRING1","STRING2","STRING3"};

no 0xA,0xB0,'A' - ne stroki, poetomu ne poluchitsya
esli ty hoches sopostavit stroke kakoe-to znachenie, to nado tak:

	struct SHash
	{
		char m_pcStr[10];
		int m_nVal;
	}MyHash[]={"String1",10,"String2",20,"String3",30,"",0};

A obraschatsya
MyHash[1].m_nVal
MyHash[1].m_pcStr

m_fox2k hotmail com


 
 а потом как использовать-то будешь?
Автор: Vova ()
Дата:   03/07/2004 15:09

может лучше вот такое подойдет:
const char str1[] = { "qwe" };
const char str2[] = { "asd" };
const char str3[] = { "zxc" };

const char * const stroki[] = { str1, str2, str3 };

stroki[ 1 ] - вторая строка.




 
 а зачем const?
Автор: letopisec ()
Дата:   03/07/2004 15:37

непойму :)


 
 это для picc
Автор: Vova ()
Дата:   03/07/2004 15:40

чтобы и строки и массив указателей на строки хранился в ПЗУ, а не в ОЗУ


 
 ааа
Автор: letopisec ()
Дата:   03/07/2004 15:49

кстати, пытаюсь отладить исходник нап на picc, читал

http://www.microchip.ru/phorum/read.php?f=2&i=52453&t=52453

но так и не доходит, что делаю не так :(

View -> Disassembly Listing выводит пустое окно



Отправка отредактированного (03/07/2004 15:56)


 
 ууу ;)
Автор: Vova ()
Дата:   03/07/2004 16:02

а в настройках компилера указано generate assembly list file ?


и если все равно не получится, то
открой его прям так file - open ... файлы с расширением lst


 
 а что потом
Автор: letopisec ()
Дата:   03/07/2004 16:09

>а в настройках компилера указано generate assembly list file ?

да

открыл с помощью file->open, всё равно

нет зелёной стрелки, хотя pc в строке статуса изменяется
а стрелка эта в view->Program memory чего не так ?



Отправка отредактированного (03/07/2004 16:15)


 
 а ничего ;)
Автор: Vova ()
Дата:   03/07/2004 16:19

стрелка не должна бегать по листингу. она может бегать по си-исходнику.

у меня бегает замечательно
так ;)

http://www.microchip.ru/phorum/read.php?f=2&i=56012&t=56006
не помогло?
хм ...
и дебаг инфа генерится? и файлы создаются (coff, там, еще ченить)? и в симуляторе всеравно не шагается
по си-исходнику?

попробуй в начале программы поставить бряк и сделай run, на бряке остановится?


 
 во чё есть
Автор: letopisec ()
Дата:   03/07/2004 16:29

picc.as
picc.c
picc.cce
picc.cod
picc.cof
picc.dep
picc.hex
picc.lde
picc.lst
picc.map
picc.mcp
picc.mcw
picc.obj
picc.pre
picc.pro
picc.rlf
picc.sdb
picc.sym

а вот программа


#include "pic.h"

#define	A	17
#define	B	126

main()
{
//	char  a = 10;
//	char  b = a;

	for(;;)
	{
		PORTA++;
		PORTB++;
	}
}



а вот вызов компиллера и не только :)


Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\prgming\Projects\picc\picc.obj".
Clean: Deleted file "D:\prgming\Projects\picc\picc.cce".
Clean: Deleted file "D:\prgming\Projects\picc\picc.lde".
Clean: Deleted file "D:\prgming\Projects\picc\picc.hex".
Clean: Done.
Executing: "d:\prgming\HT-PIC\BIN\PICC.EXE" -C -E"D:\PRGMING\PROJECTS\PICC\picc.cce" "picc.c" -
O"D:\PRGMING\PROJECTS\PICC\picc.obj" -I"D:\prgming\Projects\picc" -Q -MPLAB -16F84A -ASMLIST
Executing: "d:\prgming\HT-PIC\BIN\PICC.EXE" -
E"D:\PRGMING\PROJECTS\PICC\picc.lde" "D:\prgming\Projects\picc\picc.obj" -Q -MPLAB -16F84A -
M"picc.map" -O"picc.hex"

Memory Usage Map:

Program ROM   $0000 - $0005  $0006 (     6) words
Program ROM   $03FB - $03FF  $0005 (     5) words
                             $000B (    11) words total Program ROM 


Program statistics:

Total ROM used       11 words (1.1%)
Total RAM used        0 bytes (0.0%)

Loaded D:\prgming\Projects\picc\picc.hex
BUILD SUCCEEDED: Sat Jul 03 19:25:17 2004



а что стрелка в си исходнике эт я понимаю :)
и вижу я что прога зацикливается по pc - а стрелки нет
а вот насчёт "и дебаг инфа генерится" не нашёл нигде



Отправка отредактированного (03/07/2004 16:30)


 
 а да ещё
Автор: letopisec ()
Дата:   03/07/2004 16:35

на бряке for(;;) не остановился


 
 хз
Автор: Vova ()
Дата:   03/07/2004 16:47

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

да ну этот
шестой мплаб ... я вот в пятом так и работаю преимущественно.

попробуй, кстати, в пятом.


а
"дебаг инфо" при запуске компилера из под мплаба по умолчанию что ль генерится ... короче, плагин
вставляет опцию -мплаб, которая генерит инфу в том виде, в котором он понимать должен и формат вывода
ошибок и варнингов тоже в понимаемом для мплаба виде (чтобы дабл клик и перешли на строку с
ошибкой).



хз. ;)


 
 а в чем разница-то?
Автор: Greg ()
Дата:   03/07/2004 16:49

сразу и надо писать
const char *const cmenumsg[] =
{

  "1.   2400",
  "2.   4800",    
  "3.   9600",
  "4.  19200",    
  "5.  38400",
  "6.  57600",
  "7. 115200",    
  
  "S. Save Value",
    
  "Q. Quit"
};



пользоваться

    for (cii=0; cii < cmnuMAX; cii++) {

      printf("\r\n%s", cmenumsg[cii]);

    } // for printf




 
 ясно (-)
Автор: letopisec ()
Дата:   03/07/2004 16:51

будем разбираться


 
 небольшая ;)
Автор: Vova ()
Дата:   03/07/2004 17:05

одни и теже строки (в данном случае пункты меню) могут входить в разные группы (массивы) и тогда
получаем экономию ПЗУ ;)


 
 Re
Автор: Артём ()
Дата:   04/07/2004 03:51

А как записать числа в этот массив?


 
 Re: Re
Автор: Greg ()
Дата:   04/07/2004 09:20

Артём писал(а):

> А как записать числа в этот массив?

да так же и записать

{...
"Hello",
"\0x0A",
"\033[1D \033[1D\0x0"
}

только надо понить - это строки ASCIZ (в конце каждой строки добавляется признак конца 0x00)



Отправка отредактированного (04/07/2004 09:37)


 
 Re: Re
Автор: Артём ()
Дата:   04/07/2004 12:40

Спасибо за ответ,


 
 Re: а да ещё
Автор: Qwerty ()
Дата:   04/07/2004 13:01

По своему опыту дебугер PICC не любит while(), иногда глючит в прерываниях. Что интересно, в
PICC18 таких глюков нет.
С у. Qwerty




 
 уточните
Автор: Vova ()
Дата:   05/07/2004 12:57

Qwerty писал(а):
> По своему опыту дебугер PICC не любит while()


какой такой еще "дебугер
PICC"??


 
 а объясни, пожалуйста, на примере
Автор: patton ()
Дата:   05/07/2004 13:06

чем так может быть больше памяти программ
const char * const stroki[] = { "qwe", "asd", "zxc" };

stroki[ 1 ] - вторая строка.

чёто я в своё время эту тему так и не дожевал


 
 типа если куда-то ещё строка входит чтоб указатель менять на 1
Автор: patton ()
Дата:   05/07/2004 13:36

вроде так
т.е. строка "qwe" используется ещё в каком-то цикле, но уже с другими строками
и чтобы ячейки с адресами строк были подряд для разных циклов нужно делать разные
массивы указателей, а строки записывать один раз


 
 я к тому, что если
Автор: Vova ()
Дата:   05/07/2004 14:22

у тебя несколько массивов (меню?), то может меньше быть занято:

const char * const stroki[] = {
srt1, srt2, srt3, str4 };
const char * const stroki2[] = { srt3, srt2, srt1, str4 };
const char * const
stroki3[] = { и т.д.


вот чего имел ввиду. но это совсем незначительно, короче, не грузись ;)


 
 да, спасибо я уже понял
Автор: patton ()
Дата:   05/07/2004 14:26

http://www.microchip.ru/phorum/read.php?f=2&i=56924&t=56794
чёто писал своими словами вместо того чтобы пример привести :)


 
 Re: Си
Автор: m_fox ()
Дата:   05/07/2004 14:41

Da chto vy vse mudrite s optimizatsiei?
kompilyator sam iz odinakovyh strok razmestit v pamyati tolko odnu.
Nashli, blin gde kopya lomat.

m_fox2k hotmail com


 
 может и так ... (-)
Автор: Vova ()
Дата:   05/07/2004 14:46

может и так ... (-)


 
 получается не доверяем мы компилятору
Автор: patton ()
Дата:   05/07/2004 14:50

и в этом наша проблема...


 
 :) Доверяй но проверяй.
Автор: Bill ()
Дата:   05/07/2004 14:58

-