| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:关于atan的问题
取消只看楼主 加入收藏
lansha001
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-12
收藏
 问题点数:0 回复次数:0 
关于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);
}
搜索更多相关主题的帖子: atan 单片机 void include 
2008-05-16 20:48
快速回复:关于atan的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043713 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved