我這個(gè)程序是一個(gè)串口發(fā)送數(shù)據(jù)的程序,我進(jìn)行浮點(diǎn)數(shù)運(yùn)算,然后取整,把整數(shù)值發(fā)送至串口,但是調(diào)試的結(jié)果不正確,請(qǐng)大家?guī)兔纯础。。。?br/>/******************************************************************************* * 描述: * * 把從UART串口接收到的一個(gè)字節(jié)數(shù)據(jù),發(fā)送給串口。UART接收采用中斷方式 * * UART以查詢方式發(fā)送。波特率設(shè)置為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; /*定時(shí)器2,波特率方式 */ TCLK = 1; /*定時(shí)器初值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++); } /*將二進(jìn)制整數(shù)轉(zhuǎn)換成十進(jìn)制整數(shù)并傳送 */ 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); } }
|