我这个程序是一个串口发送数据的程序,我进行浮点数运算,然后取整,把整数值发送至串口,但是调试的结果不正确,请大家帮忙看看。。。。。 /******************************************************************************* * 描述: * * 把从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); } }
|