关于atan的问题
今天用877单片机编写计算方位角的 程序(C)时 atan计算的值 一直不对(程序的最后4行) 那位能指教一下 谢谢#include <stdio.h>
#include "pic.h"
#include "math.h"
int ADx,ADy,ADz,dataresult;
double ADresult;
union adres //共用体,用于存放AD转换结果
{int y1;
unsigned char adre[2];
}adresult;
void init_system(void) //系统IO初始化
{
TRISA=0Xff;
TRISC=0X00;
}
void init_ad(void) //AD初始化
{
ADCON1=0x84; //10000100 P227 选择AN0 AN1 AN3模拟输入其它数字 结果右对齐
PIE1=0x00;
PIE2=0x00;
ADIE=1; //AD中断允许
PEIE=1; //外围中断允许
}
void delay_10us(unsigned char x) {while(x--);}
void delay_ms(unsigned char cnt)
{
unsigned char i=4;
do
{
do
{
delay_10us(39);
} while(--i);
} while(--cnt);
}
void main(void)
{
init_system(); //系统初始化
init_ad(); //AD初始化
ei(); //总中断允许
ADCON0=0x81; //10000001 32T 选择AN0 ADON
ADGO=1; //启动AD转换
adresult.adre[0]=ADRESL;
adresult.adre[1]=ADRESH;
ADx=adresult.y1-0x200; //0x000-0x3ff 0x200为2.5伏
ADCON0=0x89; //10001001 32T 选择AN1 ADON
ADGO=1; //启动AD转换
adresult.adre[0]=ADRESL;
adresult.adre[1]=ADRESH;
ADy=adresult.y1-0x200;
ADz=ADy/ADx;
ADresult=atan(ADz);
dataresult=(int)ADresult;
delay_10us(2);
}