打印

关于C8051F410 的ADC问题

[复制链接]
2481|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
goodmoodnow|  楼主 | 2010-8-4 16:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请各位帮帮我吧,我刚刚开始用C8051F410 的ADC和DAC,但是AD转换老出问题,采集不了外部电压,帮我看看ADC的配置以及时钟设置,谢谢了
//

#include "C8051F410.h"

#define SYSCLK          24500000 // SYSCLK频率(Hz)

// Peripheral specific initialization functions,
// Called from the Init_Device() function
void ADC_Init()
{
    ADC0MX    = 0x06;
   
        ADC0CN    = 0x80;
   
        ADC0TK    = 0xFB;

        ADC0CF = ((SYSCLK/6000000)-1)<<3;
    ADC0CF |= 0x00;                     // right-justify results
}

void DAC_Init()
{
    IDA0CN    = 0xF7;
}

void Voltage_Reference_Init()
{
    REF0CN    = 0x90;
}

void Port_IO_Init()
{
    // P0.0  -  Skipped,     Push-Pull,  Analog
    // P0.1  -  Unassigned,  Push-Pull,  Digital
    // P0.2  -  Unassigned,  Push-Pull,  Digital
    // P0.3  -  Unassigned,  Push-Pull,  Digital
    // P0.4  -  Unassigned,  Push-Pull,  Digital
    // P0.5  -  Unassigned,  Push-Pull,  Digital
    // P0.6  -  Skipped,     Push-Pull,  Analog
    // P0.7  -  Unassigned,  Push-Pull,  Digital

    // P1.0  -  Unassigned,  Push-Pull,  Digital
    // P1.1  -  Unassigned,  Push-Pull,  Digital
    // P1.2  -  Skipped,     Push-Pull,  Analog
    // P1.3  -  Unassigned,  Push-Pull,  Digital
    // P1.4  -  Unassigned,  Push-Pull,  Digital
    // P1.5  -  Unassigned,  Push-Pull,  Digital
    // P1.6  -  Unassigned,  Push-Pull,  Digital
    // P1.7  -  Unassigned,  Push-Pull,  Digital

    // P2.0  -  Unassigned,  Push-Pull,  Digital
    // P2.1  -  Unassigned,  Push-Pull,  Digital
    // P2.2  -  Unassigned,  Push-Pull,  Digital
    // P2.3  -  Unassigned,  Push-Pull,  Digital
    // P2.4  -  Unassigned,  Push-Pull,  Digital
    // P2.5  -  Unassigned,  Push-Pull,  Digital
    // P2.6  -  Unassigned,  Push-Pull,  Digital
    // P2.7  -  Unassigned,  Push-Pull,  Digital

    P0MDIN    = 0xBE;
    P1MDIN    = 0xFB;
   
        P0MDOUT   = 0xFF;
    P1MDOUT   = 0xFF;
    P2MDOUT   = 0xFF;
   
        P0SKIP    = 0x41;
    P1SKIP    = 0x04;
   
        XBR1      = 0x40;
}

void Oscillator_Init()
{
   OSCICN = 0x87;                      // configure internal oscillator for
                                       // 24.5MHz
   RSTSRC = 0x04;                      // enable missing clock detector
}

void Interrupts_Init()
{
    EIE1      = 0x08;
    IE        = 0x80;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    ADC_Init();
    DAC_Init();
    Voltage_Reference_Init();
    Port_IO_Init();
    Oscillator_Init();
    Interrupts_Init();
}

// Close        WDT
// Call WDT_DISABLE() from the main program
void WDT_DISABLE(void)
{
        EA=0;
        PCA0MD = ~0x40 ;
        EA=1;
}



void main(void)
{
//        unsigned char i = 0;
        WDT_DISABLE();           //关闭WDT;
        Init_Device();           //主初始化;


        while(1)
        {
//                for(i = 0;i < 32000;i++);
                AD0BUSY = 1;            //开AD
                while(AD0BUSY);         //等待AD转换结束
                while(AD0INT)
                {
                        IDA0L = ADC0L;
                        IDA0H = ADC0H;
                        
                        AD0INT = 0;
                }
        }
}

急救呀!!!!

相关帖子

沙发
ayan200112| | 2010-8-7 13:28 | 只看该作者
我有相关产品的程序
email:ayn200112@163.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

1

粉丝