打印

AD转换为0的问题

[复制链接]
2638|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiang2586|  楼主 | 2011-9-30 07:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是SH79F083,在没有进POWER——DWON前AD很好,WDT复位后,同样初始化FSR,结果AD转换出来全是0,和tian111的问题一样,怀疑中颖单片机AD功能。
沙发
bananarer| | 2011-9-30 08:30 | 只看该作者
进入pd之前,AD关掉了没有?
整个项目有没有,你这个情况,我这里可以试试的,拿你的程序试试

使用特权

评论回复
板凳
xiang2586|  楼主 | 2011-9-30 14:07 | 只看该作者
AD在转换完成后就关闭,WDT唤醒后FSR初试化和上电一样。因为我现在出厂标定时用延时函数延时等待测量,之后用WDT唤醒延时。结果还是不行....................

使用特权

评论回复
地板
bananarer| | 2011-10-4 13:28 | 只看该作者
你可否将你的程序弄个简单点的,放到项目中,然后传上来我看看

使用特权

评论回复
5
xiang2586|  楼主 | 2011-10-5 15:05 | 只看该作者
我的程序很简单,上电初试化,POWER-DWON延时, 复位初始化同上电初始化,测AD,再休眠。中间有按键INT0中断扫描。

使用特权

评论回复
6
bananarer| | 2011-10-8 12:19 | 只看该作者
我试过,好像OK,你的程序有没有,让我看看先。

使用特权

评论回复
7
xiang2586|  楼主 | 2011-10-10 14:33 | 只看该作者
本帖最后由 xiang2586 于 2011-10-10 14:34 编辑

/******************************************************/
uchar ad(uchar com)
{
  ADCON = 0x00;
  if(com == bat_com)
           {ADCON = 0x00;}           //选通道
  if(com == co_com)
           {ADCON = 0x02;}
  ADCON |= 0x80;           //使能AD
  delay_ms(1);
  ADCON |= 0x01;    //开始转换
  while(ADCON&0x01)        //等待
                  {;}
  return(ADDH);
}
void main(void)
{
           initail();
           ad_initail(); //初始化
           if(first_power_on == 0xaa)
                           goto wdt_reset;                                //WDT reset
                if(!key)
                        {
                        delay_ms(10);
                        if(!key)
                                {
                                clr_ee();
                                }                        
                        }
           correct();
           alarm = 1;
           g_led = 1;
           delay_ms(20);
           alarm = 0;
           g_led = 0;
           read_data();
           work_status = monitor_status;
wdt_reset:
           first_power_on = 0xaa;
                while(1)
                {
                  switch(work_status)
                  {
                          case  monitor_status:
                                                              monitor();
                                                                  power_dwon();
                                                                  break;
            case  alarm_status:
                                                              alarming();
                                                                  power_dwon();
                                                                  break;
                        default:                        work_status = monitor_status;
                                                              break;
                  }
                }
}
void initail(void)
{
//                 SP = 0x00;
//                 PSW = 0x00;           //程序状态寄存器
                // C AC F0 RS1 RS0 OV F1 P                  

                CLKCON = 0x60;           //内部RC震荡 16M           12分频
                //32k_spdup clks1 clks0 scmif rcon rs --
                TCON = 0x01;         //外部中断INT0允许
                //
                TMOD = 0x00;                  //关闭定时器
                //
                TCON1 = 0x00;                  //
                //
                IEN0 = 0x81;                //
                //
                IEN1 = 0x00;                //
                //
                EXF0 = 0x00;                //
                //
                RSTSTAT = 0x00;        //
                // WDOF - PORF LVRF CLRF WDT2 WDT1 WDT0        
                PWMCON = 0x00;                 //PWM禁止
                P1M0 = 0x03;                //0x03
                P1M1 = 0xfc;                //AN0 AN1模拟输入 P1.0 P1.1           0xfc
                P3M0 = 0x04;                //0x04
                P3M1 = 0xfb;        //P3.2输入 Z中断使能                 0xfb
                P4M0 = 0x00;                //0x00
                P4M1 = 0xff;                //0xff        
                P4M1 = 0x00;
                P1 = 0x00;
                P3 = 0x00;
                P4 = 0x00;
}
3个函数给你,够简单的

使用特权

评论回复
8
bananarer| | 2011-10-11 14:49 | 只看该作者
ADCH寄存器没有看到你设置,是不是这个不对啊

使用特权

评论回复
9
lwq030736| | 2011-10-12 20:57 | 只看该作者
超量程了吧

使用特权

评论回复
10
xiang2586|  楼主 | 2011-10-13 16:16 | 只看该作者
都不是,不过结帖吧。很郁闷。

使用特权

评论回复
11
gongche| | 2011-10-13 16:35 | 只看该作者
不用郁闷,不用郁闷

使用特权

评论回复
12
bananarer| | 2011-10-13 17:27 | 只看该作者
是不是软件哪里出问题了啊,低级错误?
不要郁闷,不要郁闷

使用特权

评论回复
13
宋倩2010| | 2011-10-13 17:40 | 只看该作者
呵呵,楼主有点想多了吧

使用特权

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

本版积分规则

4

主题

85

帖子

1

粉丝