Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: printf()
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
ShTat
Здравствуйте! Помогите новичку. Вопрос по Keil. Нужно вывести в окно последовательного порта содержимое массива байт, вот код программы:

#include <reg52.h>
#include <stdio.h>

void initialize_system (void);
void main()
{
char A[5];
int i;
initialize_system ();

A[0]=0xA1;
A[1]=0x78;
A[2]=0x41;
A[3]=0xCD;

for (i=0;i<4;i++)
{
printf("%#X, ", A[i]);
}
}
void initialize_system (void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 221;
TR1 = 1;
TI = 1;
}

В окно Serial1 выводится следующая последовательность: 0хA100, 0x7800, 0x4100, 0xCD00,
Как сделать так, чтобы выводилось только 2 первых цифры? Т.е.: 0xA1, 0x78, 0x41, 0xCD, ?
_Andu_
насколько я помню
printf("%02X, ", A[i]);
на всякий случай объявите unsigned char A[5];
ShTat
Цитата(_Andu_ @ Aug 31 2006, 14:10) *
насколько я помню
printf("%02X, ", A[i]);
на всякий случай объявите unsigned char A[5];


попробовала. Все равно выводит 4 цифры sad.gif
Палыч
Если в функции printf указан формат "%#X", то функция ожидает аргумент типа int. Для вывода char необходимо указать "%#bX". Если нужно, чтобы при значении, например, 1,выводилось бы не "0X1", а "0X01", то формат - "%#04bX".
ShTat
Спасибо большое!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.