我这个程序是一个串口发送数据的程序,我进行浮点数运算,然后取整,把整数值发送至串口,但是调试的结果不正确,请大家帮忙看看。。。。。
/*******************************************************************************
* 描述: *
* 把从UART串口接收到的一个字节数据,发送给串口。UART接收采用中断方式 *
* UART以查询方式发送。波特率设置为9600bit/s *
******************************************************************************/
#include <aduc841.H>
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
float ec;
float i;
float out;
uint u;
void ini_uart(void)
{
IE=0X00;
TCON=0X05;
SCON = 0x50; /*串口方式1,允许接受,01010000*/
RCLK = 1; /*定时器2,波特率方式 */
TCLK = 1; /*定时器初值65525*/
RCAP2H = 0xff; /*20MHz,Baud Rate 9600 */
RCAP2L = 0xf5;
TI = 0;
RI = 0;
TR2 = 1;
}
void send_byte(char src_byte)
{
SBUF=src_byte;
while(TI==0);
TI=0;
}
void delay()
{
short int i=0;
short int j=0;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
/*将二进制整数转换成十进制整数并传送 */
void send_dec_int(unsigned int src_wrd)
{
unsigned char a,b,c,d;
a=src_wrd/1000;
if(a<0x0a)a=a+0x30;
else a=a+0x41-0x0a;
send_byte(a);
delay();
b=(src_wrd%1000)/100;
if(b<0x0a)b=b+0x30;
else b=b+0x41-0x0a;
send_byte(b);
delay();
c=(src_wrd%100)/10;
if(c<0x0a)c=c+0x30;
else c=c+0x41-0x0a;
send_byte(c);
delay();
d=src_wrd%10;
if(d<0x0a)d=d+0x30;
else d=d+0x41-0x0a;
send_byte(d);
delay();
send_byte(0x20);
}
void main(void)
{
ini_uart();
i=5.1f;ec=11.1f;
out=i*ec;
u=(int)out;
for(;;)
{
send_dec_int(u);
}
}
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |