Миландр
http://forum.milandr.ru/

Компилятор CC7A
http://forum.milandr.ru/viewtopic.php?f=17&t=101
Страница 5 из 6

Автор:  stormbird4 [ 2011-ноя-17 16:37 ]
Заголовок сообщения:  Re: Компилятор CC7A

Я разобрался со своей проблемой, прошу прощения. Спасибо за ответы.

Автор:  Pastel [ 2012-фев-28 17:01 ]
Заголовок сообщения:  Re: Компилятор CC7A

Товарищи сотрудники фирмы Миландр, требуется ваша консультация.
Есть несколько строк- констант, описанных по образу:
Код:
static const char const_str[]="this is string";

Необходимо сравнивать содержимое строки в ОЗУ микроконтроллера с этими эталонами. Строка в ОЗУ:
Код:
char string[100];

сейчас для сравнения с каждым эталоном существует отдельная функция. Но это слишком массивно. Сравнение произвожу так: очередной символ из строки-константы сохраняю в ОЗУ, сравниваю с соответствующим символом из строки string в ОЗУ.
Хотелось бы сделать одну функцию для сравнения строки string и строки-константы, начинающейся по адресу char* pointer. Но где-то у меня не хватило соображения. Описал его как:
Код:
const char *pointer;

Не компилируется даже такой код (ясно, что он не рабочий- инициализацию и весь функционал выбросил чтобы сократить до минимума)
Код:
#include <1886VE3d.h>
static const char const_str[]="this is string";
const char *pointer;
void prntstr (void)
{
     pointer=const_str;
     while (*pointer!=0)
     {
           while(!TX1IF);
           TXREG=*pointer;
           pointer++;
     }
}
void main(void)
{
     while(1)
     {
     }
}

Выделяется красным цветом последняя строка текста и графа "Сообщение" во вкладке "Компилятор" пуста

Автор:  Lew [ 2012-фев-29 07:47 ]
Заголовок сообщения:  Re: Компилятор CC7A

Странно. Все транслируется.
Код:
                        ;void prntstr (void)
                        ;{
prntstr
                        ;     pointer=const_str;
        CLRF  pointer,1
                        ;     while (*pointer!=0)
m001    MOVFP pointer,WREG
        CALL  _const1
        XORLW 0
        MOVLB 2
        BTFSC 0x04,Zero_
        GOTO  m003
                        ;     {
                        ;           while(!TX1IF);
m002    BTFSS 0x214,TX1IF
        GOTO  m002
                        ;           TXREG=*pointer;
        MOVFP pointer,WREG
        CALL  _const1
        MOVLB 5
        MOVWF TXREG
                        ;           pointer++;
        INCF  pointer,1
                        ;     }
        GOTO  m001
                        ;}
m003    RETURN
                        ;void main(void)
                        ;{
main
                        ;     while(1)
                        ;     {
                        ;      prntstr(); // чтобы не было предупреждения о неиспользуемых функциях
        MOVLB 0
        MOVLR 0
m004    MOVLB 2
        CALL  prntstr
                        ;     }
        MOVLB 0
        GOTO  m004
_const1
        MOVWF ci
        MOVLW 0
        MOVWF TBLPTR+1
        RRCF  ci,W
        ANDLW 127
        ADDLW 39
        MOVWF TBLPTR
        BTFSS 0x04,Carry
        GOTO  m005
        INCF  TBLPTR+1,1
m005    TABLRD 0,0,WREG
        TLRD  0,WREG
        BTFSS ci,0
        GOTO  m006
        TLRD  1,WREG
m006    RETURN
        DW    0x6874
        DW    0x7369
        DW    0x6920
        DW    0x2073
        DW    0x7473
        DW    0x6972
        DW    0x676E
        DW    0x0

Автор:  Pastel [ 2012-фев-29 16:21 ]
Заголовок сообщения:  Re: Компилятор CC7A

Спасибо за отклик. Добавил использование функции в main() и заработало. Не очень удобная особенность, так как имею привычку сначала описывать все основные функции, а потом приниматься за main(). Нельзя ли попросить разработчика компилятора в следующем релизе ликвидировать эту особенность?

Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?

Автор:  Yura [ 2012-фев-29 16:48 ]
Заголовок сообщения:  Re: Компилятор CC7A

Pastel писал(а):
Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?

Пришлите запрос на admin@milandr.ru, т.е. мне, в ответ пришлю новую версию.

Автор:  Lew [ 2012-мар-01 15:09 ]
Заголовок сообщения:  Re: Компилятор CC7A

Pastel писал(а):
Спасибо за отклик. Добавил использование функции в main() и заработало. Не очень удобная особенность, так как имею привычку сначала описывать все основные функции, а потом приниматься за main(). Нельзя ли попросить разработчика компилятора в следующем релизе ликвидировать эту особенность?
Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?
Никакой особенности замечено не было. Все замечательно компилируется и без функции в main(), просто выдает предупреждение о неиспользуемой функции.
Прежде чем давать такие самоуверенные советы разработчикам компилятора, советую почитать документацию. Вы удивитесь, что, оказывается, существует множество ключей для компилятора, которые, в частности, позволяют задавать степень оптимизации.

Автор:  ДмитрийК [ 2012-мар-02 15:12 ]
Заголовок сообщения:  Где найти заголовочный файл VE2_CC.h?

Собственно начал работать с вашим микроконтроллером 1886ВЕ2У и компилятором CC7A и стандартный пример :"Электронные часы на плате для 1886ВЕ2У" и он не компилируется из-за отсутствия библиотеки VE2_CC.h
Пробовал подключить библиотеку 1886VE2d.h но в среде IDE1886 пишет Fatal internal compiler error no. 9124
Другие библиотеки для 17C756.H и 17C756A, поставляемые вместе с "С" компилятором выдают ошибки: Symbol 'RE2' is undefined
заголовочный файл можно и самому создать, но времени совсем нет. Проект горит что называется.
Сможете мне выслать библиотеку на e-mail?

Автор:  Lew [ 2012-мар-02 15:38 ]
Заголовок сообщения:  Re: Компилятор CC7A

Откуда Вы взяли эти :"Электронные часы"? Какая у Вас версия IDE1886?
В примерах в IDE1886 есть демонстрационная программа для 1886ВЕ2, которая может отображать время, но СС7А здесь не причем. Проект написан на ассемблере.

Автор:  ДмитрийК [ 2012-мар-02 16:57 ]
Заголовок сообщения:  Re: Компилятор CC7A

проект взят не с IDE1886 а из диска который мы приобрели у Миландра с компилятором CC7A и USB ключём. а IDE1886 версия 8.5(только что в справке к IDE посмотрел). и какая разница-в перечне библиотек к CC7A есть VE2_cc.h а в наличие нет. :) вот такой вот сервис :).
Я уже заголовочный 17C756.H я поправил и теперь прога скомпилировалась и прошилась успешно и работает. но вот хотелось бы получить заголовочный файл. Мало ещё что вылезет там.
И да на форуме нет ни одной похожей темы. видимо мне выдали какой то "особенный" диск с недостающими хэндлами =))) Ну да ладно. Просьба одна:вышлете пожалуйста VE2_CC.h
Благодарю.

Автор:  Lew [ 2012-мар-02 17:48 ]
Заголовок сообщения:  Re: Компилятор CC7A

1886VE2d.h и 1886VE2.h это правильные хендлы. просто Вы используете древний проект и устаревшую версию компилятора. Обновите компилятор, отослав запрос на admin@milandr.ru

Автор:  ДмитрийК [ 2012-мар-05 08:18 ]
Заголовок сообщения:  Re: Компилятор CC7A

Какая версия компилятора свежая?
я использую версию 1.0e.
отправил на admin@milandr.ru запрос на библиотеки и свежую версию компилятора.
И кстати вопрос: с LPT программатором внутрисхемную отладку произвести можно? Версия среды IDE1886 8.5

Автор:  Lew [ 2012-мар-05 08:44 ]
Заголовок сообщения:  Re: Компилятор CC7A

ДмитрийК писал(а):
Какая версия компилятора свежая?
я использую версию 1.0e.
отправил на admin@milandr.ru запрос на библиотеки и свежую версию компилятора.
И кстати вопрос: с LPT программатором внутрисхемную отладку произвести можно? Версия среды IDE1886 8.5
У Вас компилятор последней версии. Для всех проектов следует использовать 1886VE2d.h. LPT программатор по функциональности ничем не отличается он USB программатора.

Автор:  Pastel [ 2012-мар-06 15:13 ]
Заголовок сообщения:  Re: Компилятор CC7A

Lew писал(а):
Никакой особенности замечено не было. Все замечательно компилируется и без функции в main(), просто выдает предупреждение о неиспользуемой функции.

Никакого сообщения замечено не было. Компилирую через IDE 1886, без функции в main() окно с прогрессбаром процесса компиляции появляется на мгновение и исчезает, во вкладке "Компилятор" только номер последней строки, она же выделена красным цветом. Отсутствие окна "Compile progress" в совокупности с таким "информативным" выводом было однозначно воспринято как ошибка компиляции. Пикрелейтед.
Lew писал(а):
Прежде чем давать такие самоуверенные советы разработчикам компилятора, советую почитать документацию. Вы удивитесь, что, оказывается, существует множество ключей для компилятора, которые, в частности, позволяют задавать степень оптимизации.

Прежде чем давать такие самоуверенные советы пользователям компилятора, советую предположить, что читать они все же умеют. Вы удивитесь, что, оказывается,они иногда испытывают надежды на комфортное использование компилятора из IDE, а Ваш GUI тоже может иметь пороки.
Успехов!

Вложения:
123.JPG
123.JPG [ 48.32 КБ | Просмотров: 7868 ]

Автор:  Lew [ 2012-мар-06 16:22 ]
Заголовок сообщения:  Re: Компилятор CC7A

Цитата:
Отсутствие окна "Compile progress" в совокупности с таким "информативным" выводом было однозначно воспринято как ошибка компиляции.
Прежде чем однозначно воспринимать и грубить, советую убедится, что код все-таки компилируется. На вкладке Programming появляется код. main.lst, main.asm, main.hex обновляются. На вкладке "Журнал компиляции" и в файле main.err есть предупреждение:
Код:
Warning D:\Soft\IDE_Proj\CC_syntez\main.c 20: Local variables and parameters in uncalled functions are not allocated (1) (The application contains non-library functions that are not called. Local variables in these functions (option -wU) are not allocated to save space)
Всвязи с этим и появляется эта строка без сообщения, информирующая о том, что программа содержит всякий мусор. Подробности можно посмотреть, открыв вкладку "Журнал компиляции" или файл main.err.

Автор:  Pastel [ 2012-мар-06 16:43 ]
Заголовок сообщения:  Re: Компилятор CC7A

1) Если Вы не заметили, я ответил с сохранением стилистики вашего сообщения. Если Вы увидели грубость- вряд ли претензия ко мне.
2) В случае, если компиляция выполняется не впервые за сеанс, на взгляд изменение карты памяти неразличимо.
3) Вы же сами понимаете, что такое сообщение без текста, да еще и на строке, которая не имеет отношения к вызвавшему ситуацию фрагменту кода, и еще без вывода окошка, которое появлялось до этого всегда кроме случаев ошибки это не нормально- интерфейс должен быть информативным и интуитивно понятным.
4) Да, не догадался сразу очистить карту памяти, прочитать еррлист в файле. Готов согласиться со своей некомпетентностью в вопросах программирования. Однако не забывайте, что ПО для микроконтроллеров в подавляющем числе случаев пишут те же люди, которые разрабатывают схему, а не профессиональные программисты, поэтому еще раз- интерфейс должен быть интуитивно понятным таким трудным пользователям как я. Иначе смысл самой IDE пропадает- ведь и так можно работать в шелле и лазать по файлам.

Повторюсь, что проблема решена, предыдущие 2 сообщения и данное писал из лучших побуждений. Жаль, что восприняли это в штыки.
Представления и ожидания связаны не с моими завышенными требованиями, а опытом работы с IDE вроде QtCreator, Borland C++ Builder, AVR Studio.
С уважением.

Страница 5 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/