Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллеры SiLabs C8051Fxxx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Волощенко
Добрый день!
Работаю с uVision2 от Keil. Хотелось бы, чтоб в памяти программ cdata, автоматически (не в ручную) формировались константы <день>.<месяц>.<год>, которые затем можно считывать по командам в UART, для последующей передачи в компьютер как текущую версию программы.
Кто-то уже сделал так? Подскажите, спасибо за ответ.
Shandy
Можно так:
code char* code Prog_ID = {__FILE__, __DATE__, __TIME__};
Это записать в начале программы, перед main()

Сама передача в посл. порт:
printf("%s, %s, %s", Prog_ID[0], Prog_ID[1], Prog_ID[2]);
Волощенко
К Shandy, спасибо все получилось! smile.gif
Я перед main() записал:
code char* code Prog_ID = {__DATE__};
это вставляет в hex-файл текущую дату в ASCII.

Затем считывал из Flash 10 байт в массив Ro для последующей выдачи через UART (здесь Prog_ID[3] и Prog_ID[6] - всегда содержат коды пробелов):
Ro[0]=Prog_ID[4]; Ro[1]=Prog_ID[5]; //Data
Ro[2]=Prog_ID[3];
Ro[3]=Prog_ID[0]; Ro[4]=Prog_ID[1];Ro[5]=Prog_ID[2]; //Month
Ro[6]=Prog_ID[6];
Ro[7]=Prog_ID[7]; Ro[8]=Prog_ID[8]; Ro[9]=Prog_ID[9]; Ro[10]=Prog_ID[10]; //Year

Затем принял по RS-232 и вывел на экран текущую дату как строку AnsiString:
06 Oct 2006

------------------------------------------------------
Только вот запись перед main() такой строки как:
code char* code Prog_ID = {__FILE__, __DATE__, __TIME__};
вызывает при компиляции сообщение:
MAIN.C(18): error C242: 'scalar': too many initializers
что остается немного непонятно.
freux
Может Prog_ID объявить как массив:
code char* code Prog_ID[] = {__FILE__, __DATE__, __TIME__};
?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.