我這個(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);
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |