реклама на сайте
подробности

 
 
> Как приручить scanf ?, Пересброс мк
alux
сообщение Jul 26 2007, 07:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Необходимо инициализировать время в DS1388 (часы реального времени). В прилагаемом апноте это реализовано при помощи printf/scanf:
Код
printf("\nEnter the year (0-99): ");
scanf("%bx", &yr);
.......

Чтобы не забивать ОЗУ применил --string_literals_in_flash и добавил суффиксы _P в функции printf/scanf.
С printf_P все работает , а вот при попытке вставить scanf_P происходит переполнение стека. Увеличение CSTACK, RSTACK не спасает положения. Думаю что scanf("%bx", &yr); создает копию строки в ОЗУ. Или я ошибаюсь? Переменная yr - глобальная. Странное и то, что отдельно ds1388.c с функциями scanf_P при компиляции показывает:
Цитата
1 356 bytes of CODE memory (+ 6 bytes shared)
8 bytes of DATA memory

Т.е. ОЗУ не занято. Слышал, что вместо scanf можно использовать frmrd.c с необходимыми параметрами.
Если подключить к проекту frmrd.c , как компилятор разберется откуда использовать функцию scanf ?
И напоследок пару вопросов по сути не относящихся:
1) Что за модификатор формата "%bx" ?
2) Откуда берется переменная RI в функции disp_clk_regs ?
Апнот для ds1388 прилагаю.
Спасибо.
P.S. Может "%bx" - это банальная очепятка и должно быть "%dx" ?
Прикрепленные файлы
Прикрепленный файл  3482Fig01.zip ( 6.5 килобайт ) Кол-во скачиваний: 56
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Jul 26 2007, 17:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Вероятно, %bx означает аргумент типа char, шестнадцатеричное число (очевидно, год закодирован в байте с использованием формата BCD). Такие вещи пишут в руководствах на вашу среду программирования, так что и их будет почитать полезно.
Кстати, если всё, что нужно, - это преобразовать строку в число, то atoi() - более легковесная альтернатива sscanf().
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016