Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2021-12-07 | 16 |
5.00
из
|
Заказать работу |
|
|
Работа с функцией sprintf, позволяющей в частности, отображать значения переменных вперемешку с выводом других символов. Все ниже написанное вытекло из изучения содержимого проектов в папке C:\cvavr\examples. Я объясню основу, то что удалось накопать так же в просторах сети.
Для начала немного описания функции sprintf:
Функция sprintf() (прототип содержится в файле stdio.h) обеспечивает форматированный вывод в строку. Ее можно записать в следующем формальном виде:
sрrintf ("управляющая строка", аргумент _1, аргумент _2,...);
Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы.
Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом:
% [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n
Все параметры в квадратных скобках не являются обязательными.
На месте параметра c_n (символ преобразования) могут быть записаны:
с - значением аргумента является символ;
d или i - значением аргумента является десятичное целое число;
е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23e+2;
Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23E+2;
f - значением аргумента является вещественное десятичное число с плавающей точкой;
g (или G) - используется, как е или f, и исключает вывод незначащих нулей;
|
о - значением аргумента является восьмеричное целое число;
s - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью);
u - значением аргумента является беззнаковое целое число;
х - значением аргумента является шестнадцатеричное целое число с цифрами 0,...,
9, а, b, с, d, е, f;
X - значением аргумента является шестнадцатеричное целое число с цифрами 0,...,
9, А, В, С, О, Е, F;
р - значением аргумента является указатель;
n - применяется в операциях форматирования.
Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.
Необязательные параметры в спецификации преобразования:
признак минус (-) указывает, что преобразованный параметр должен быть выровнен влево в своем поле;
признак плюс (+) требует вывода результата со знаком;
строка цифр, задающая минимальный размер поля (ширина поля). Здесь может так же использоваться символ *, который тоже позволяет задать минимальную ширину поля и точность представления выводимого числа;
точка (.), отделяющая размер поля от последующей строки цифр;
строка цифр, задающая максимальное число выводимых символов, или же количество цифр, выводимых справа от десятичной точки в значениях типов float или double (точность);
символ F, определяющий указатель типа far;
символ N, определяющий указатель типа near;
символ h, определяющий аргумент типа short int (используется вместе с символами преобразования d, i, о, u, х, Х);
символ l, указывающий, что соответствующий аргумент имеет тип long (в случае символов преобразования d, i, о, u, х, X) или double (в случае символов преобразования е, Е, f, g, G);
символ L, указывающий, что соответствующий аргумент имеет тип long double (используется вместе с символами преобразований е, Е, f, g, G);
|
символ #, который может встречаться перед символами преобразования g, f, е и перед символом х. В первом случае всегда будет выводиться десятичная точка, а во втором - префикс 0x перед соответствующим шестнадцатеричным числом.
Если после знака % записан не символ преобразования, то он выводится на экран. Таким образом, строка %% приводит к выводу на экран знака %.
Функция sprintf() использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Аргументами могут быть переменные, константы, выражения, вызовы функций; главное, чтобы их значения соответствовали заданной
спецификации.
При наличии ошибок, например, в числе аргументов или типе преобразования, результаты будут неверными.
Среди управляющих символьных констант наиболее часто используются следующие:
\а - для кратковременной подачи звукового сигнала;
\b - для перевода курсора влево на одну позицию;
\f - для подачи формата;
\n - для перехода на новую строку;
\r - для возврата каретки;
\t - горизонтальная табуляция;
\v - вертикальная табуляция;
\\ - вывод символа \;
\' - вывод символа ';
\" - вывод символа ";
\? - вывод символа?.
Например, в результате вызова функции:
sprintf("\tComputer\n%d\n", i);
сначала выполняется горизонтальная табуляция (\t), т.е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (\n), затем будет выведено целое число i по формату %d (десятичное целое), и,окончательно, курсор перейдет в начало новой строки (\n).
Напечатать строку символов можно и так: sprintf("Это строка символов");
Спецификатор формата Тип данных
%d, %i целое десятичное число
%s текстовая строка
%c один символ
%e, %E число с плавающей точкой в экспоненциальной форме
%f число с плавающей точкой в десятичной записи
%u целое десятичное число без знака
%o целое восьмеричное число без знака
%x, %X целое шестнадцатиричное число без знака
%g, %G либо %e, либо %f в зависимости от того, запись в каком формате короче
%p значение указателя
%n число символов
Главный цикл системы
Главный цикл служит точкой входа в программу для дальнейшего его выполнения, далее приводится код главной функции и главного цикла программы, в комментариях объяснено что за что отвечает.
Далее приведен код основного файла main__.c, который содержит главную функцию и основной цикл программы:
|
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Professional
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Author: test
Company: test
Chip type : ATmega8
Clock frequency: 4,000000 MHz
External SRAM size: 0
Data Stack size: 256
*****************************************************/
#include <mega8.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12;PORTD
#endasm
#include <lcd.h>
#include <delay.h>
unsigned char i;
int n_sim=1,m_end=500; //m_end - общее количество символов в исходной строке;
char ish_str[] = " Dannaya textovaya stroka operiruyet na microkontrollere AVR Atmega8. Cod scompilirovan na CodeVision AVR. ";
void beg_str(void)
{
for(i=0;i<15;i++)lcd_write_byte(0xC0+i,lcd_read_byte(0xC1+i));
lcd_gotoxy(15,1); // указали место курсору во второй строке
lcd_putchar(ish_str[n_sim]);
if(++n_sim>m_end)
{n_sim=1;};
delay_ms(100);
}
void main(void)
{
PORTB=0x04;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
beg_str();
lcd_gotoxy(0,0,);
lcd_putsf("Stroka Texta");
// Place your code here
};
}
|
|
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!