【发布时间】:2015-05-05 12:57:26
【问题描述】:
我正在尝试制作一个嵌入式 c 项目,我将在其中输入 7 个字符并用它们进行一些计算 - 现在我在转换工作时遇到问题 - 我正在使用 ATMEGA 2560,我在其中输出字符在 uart 上。
代码如下:
volatile char daata[8] = "123:456\0";
volatile char recdata[8];
volatile char data = 0;
volatile char byte;
volatile int minimum;
volatile int maximum;
volatile char mx;
volatile char mi;
我的函数使用:
void putsUSART0(char *ptr)
{
while(*ptr)
{
putchUSART0(*ptr);
ptr++;
}
}
和
void putchUSART0(char tx)
{
while(!(UCSR0A & (1 << UDRE0))); // wait for empty transmit buffer
UDR0 = tx;
}
我正在处理的代码是:
minimum = (100 * (daata[0] - 0x30) + 10 * (daata[1] - 0x30) + daata[2] - 0x30);
maximum = daata[6] - 0x30 + 10 * (daata[5] - 0x30) + 100 * (daata[4]);
mi = minimum + 0x30;
putsUSART0("mimimum is:");
//putchUSART0(minimum );
putsUSART0(mi);
putsUSART0("maximum is:");
putchUSART0(maximum);
_delay_ms(5000);
status = requestsample;
问题是我的输出是
最小是:最大是:^
谁能解释一下这个奇怪的行为。
【问题讨论】:
-
你没有说你想要什么输出。我猜您想将数值格式化为十进制;你可以使用你用来读取十进制值的操作的逆操作来做到这一点。