一个简单的串口计算器,运行没错误但是实现不了功能,大佬们帮忙看一下哪里出错了
#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
#include <stdio.h>
#include <string.h>
unsigned char data1 = 0;
unsigned int num1 = 0,num2 = 0,num3 = 0,fu = 0,i=0,len=0,n=0;
int printf_flag = 0;
char result;
char num;
char buffer[64];
void main()
{
UART_Init();
while(1)
{
if(RI == 1) // 是否有数据到来
{
RI = 0;
data1 = SBUF;
if(( data1>='0') && (data1<='9'))
{
num1 = num1 * 10 + (data1 - '0');
}
else if(data1 == '+')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '-')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '*')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '/')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '='&&fu == '+')//
{
num3 = num1+num2;
printf_flag = 1;
}
else if(data1 == '='&&fu == '-')// &&fu; == '-'
{
num3 = num2-num1;
printf_flag = 1;
}
else if(data1 == '='&&fu == '*')//&&fu; == '*'
{
num3 = num1*num2;
printf_flag = 1;
}
else if(data1 == '='&&fu == '/')// '&&fu; == '/'
{
num3 = num2/num1;
printf_flag = 1;
}
if(printf_flag == 1)
{
printf_flag = 0;
sprintf(buffer, "%u", num3);
for( i = 0; i < strlen(buffer); i++)
{
UART_SendByte(buffer[i]);
}
memset(buffer, 0, sizeof(buffer));
num1=num3;
num3=0;fu=0;
}
}
}
}
#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
#include <stdio.h>
#include <string.h>
unsigned char data1 = 0;
unsigned int num1 = 0,num2 = 0,num3 = 0,fu = 0,i=0,len=0,n=0;
int printf_flag = 0;
char result;
char num;
char buffer[64];
void main()
{
UART_Init();
while(1)
{
if(RI == 1) // 是否有数据到来
{
RI = 0;
data1 = SBUF;
if(( data1>='0') && (data1<='9'))
{
num1 = num1 * 10 + (data1 - '0');
}
else if(data1 == '+')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '-')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '*')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '/')
{
fu = data1;
num2 = num1;
num1 = 0;
}
else if(data1 == '='&&fu == '+')//
{
num3 = num1+num2;
printf_flag = 1;
}
else if(data1 == '='&&fu == '-')// &&fu; == '-'
{
num3 = num2-num1;
printf_flag = 1;
}
else if(data1 == '='&&fu == '*')//&&fu; == '*'
{
num3 = num1*num2;
printf_flag = 1;
}
else if(data1 == '='&&fu == '/')// '&&fu; == '/'
{
num3 = num2/num1;
printf_flag = 1;
}
if(printf_flag == 1)
{
printf_flag = 0;
sprintf(buffer, "%u", num3);
for( i = 0; i < strlen(buffer); i++)
{
UART_SendByte(buffer[i]);
}
memset(buffer, 0, sizeof(buffer));
num1=num3;
num3=0;fu=0;
}
}
}
}