搜索
bottom↓
回复: 7

C8051F020 用向AD0BUSY写1方式 AD0问题

[复制链接]

出0入0汤圆

发表于 2012-3-7 09:55:55 | 显示全部楼层 |阅读模式
请大侠看看我的程序问题在哪里 十分感谢  不用考虑7289先 就转换 在线仿真 ADC0H 和ADC0L 没结果
#include <C8051F020.h>
#include "ad_initial.h"
#include "ZLG7289.h"

#define  VREF0 2.43    //内部基准电压为2.43V


void DelayMs(unsigned int n)//延时(n)MS
{
        unsigned int i;
        for(;n>0;n--)
        {
                for(i=2211;i>0;i--);
        }
}

void SysClkInit(void)//配置系统时钟
{
   int i;                              

   OSCXCN = 0x67;                      // 使用外部24M晶振
                                      

   for (i=0; i < 256; i++) ;           // 延时大于1ms

   while (!(OSCXCN & 0x80)) ;          // 查询是否稳定起振

   OSCICN = 0x88;                      // 切换到外部晶振
                                       
}

void SystemInit(void)//系统配置
{
        PCA0MD&=~0x40;//禁止看门狗定时器
        //EA=1;
}

void PortInit(void)//端口配置
{
   P0MDOUT = 0XFF;
   P1MDOUT = 0XFF;
   P2MDOUT = 0XFF;
   P3MDOUT = 0XFF;
   P74OUT = 0XFF;
}

void main(void)
{
       
        //uint sum;
        //uchar table[3];
        float dat;
        float output;
        SystemInit();//系统配置
        SysClkInit();//配置系统时钟
        PortInit();//端口配置
/*        DelayMs(300); //延时300ms,等待ZLG7289 复位完毕
        //ZLG7289_Init(40); //调用ZLG7289 的初始化函数
        DelayMs(1000);
        ZLG7289_Test();
        DelayMs(2000);
        ZLG7289_Reset();
        DelayMs(1000);*/

        ADC0_Init();
        AD0EN=1;
        while(1)
        {
                                                       
                        AD0INT=0;              //清除转换结果
                        AD0BUSY=1;                           //启动转换
                        DelayMs(10);
                        while(!AD0INT);        //等待AD0INT=1;
                                                                       
                        dat=ADC0H*256+ADC0L;                       
                        output=2.43/4096*dat;                       
                        DelayMs(100);
       
               
        /*        sum = output*100;
                table[0]=sum/100;
                table[1]=sum%100/10;
                table[2]=sum%100%10;

                ZLG7289_Download(0,0,1,table[0]);
                   ZLG7289_Download(0,1,0,table[1]);
                ZLG7289_Download(0,2,0,table[2]);*/


        }
}
void ADC0_Init (void)
{
        REF0CN=0x03;        //使用VREF0电压基准
        AMX0CF=0x00;        //选择单端输入
        AMX0SL=0x00;        //选择AIN0输入
        ADC0CF=0x80;        //ADC转换时钟2.5M 增益为1
        ADC0CN = 0x41;   // 关闭ADC0; 低能追踪模式
                           // ADC0使用向AD0BUSY写1做转换源
                         //使用左对齐输出模式
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-3-7 10:15:24 | 显示全部楼层
程序木看,建议仿真设断点看ADC相关寄存器的值

出0入0汤圆

 楼主| 发表于 2012-3-7 12:27:54 | 显示全部楼层
回复【1楼】whhityang 小样一
-----------------------------------------------------------------------

设了ADC0H和ADC0L寄存器值木有

出0入30汤圆

发表于 2012-3-7 13:24:46 | 显示全部楼层
AD输入的引脚要配置为模拟输入。

出0入0汤圆

发表于 2012-3-7 13:32:48 | 显示全部楼层
PCA0MD&=~0x40;//禁止看门狗定时器 ------ 这句跟看门狗可没关系。

void Reset_Sources_Init()
{
    WDTCN     = 0xDE;
    WDTCN     = 0xAD;
}
这是禁止看门狗的。

ADC0CF=0x80;        //ADC转换时钟2.5M 增益为1 ------这样配置出来,ADC的转换时钟没有2.5M

c8051fxxx系列的有专用的初始化配置软件,建议使用。

出0入0汤圆

 楼主| 发表于 2012-3-8 11:53:15 | 显示全部楼层
回复【3楼】lovelywwei
-----------------------------------------------------------------------

020的模拟输入有固定的IO口的

出0入0汤圆

 楼主| 发表于 2012-3-8 11:55:10 | 显示全部楼层
回复【4楼】wanderhope
-----------------------------------------------------------------------

看门用不用对AD没关系的吧  问题不在这里吧   0x80    (24M/2.5M)-1  即使没有2.5M 也应该不会没转换值吧

出0入0汤圆

 楼主| 发表于 2012-3-9 15:54:18 | 显示全部楼层
已找到错误。。。。唉。。。这脑子
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表