我這個程序是一個串口發送數據的程序,我進行浮點數運算,然后取整,把整數值發送至串口,但是調試的結果不正確,請大家幫忙看看。。。。。 /******************************************************************************* * 描述: * * 把從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); } }
|