打印
[其它应用]

AD转换出来全是0

[复制链接]
986|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tian111|  楼主 | 2018-10-10 18:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
WDT复位后,同样初始化FSR,结果AD转换出来全是0
用的是SH79F083,在没有进POWER——DWON前AD很好
沙发
songqian17| | 2018-10-10 18:50 | 只看该作者
进入pd之前,AD关掉了没有?

使用特权

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

使用特权

评论回复
地板
songqian17| | 2018-10-10 19:02 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

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

使用特权

评论回复
6
tian111|  楼主 | 2018-10-10 19:13 | 只看该作者
/******************************************************/
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;
}

使用特权

评论回复
7
chenho| | 2018-10-10 19:20 | 只看该作者
ADCH寄存器没有看到你设置,是不是这个不对啊

使用特权

评论回复
8
gongche| | 2018-10-10 19:24 | 只看该作者
超量程了吧

使用特权

评论回复
9
bqyj| | 2018-10-10 19:28 | 只看该作者
我也遇到类似的问题,只要关AD再打开就会有AD值为0,而且AD中断速率不对的问题。我看你的代码也是先关了AD,然后使能,返回第一次的转换结果,会不会跟这个有关?

使用特权

评论回复
10
tian111|  楼主 | 2018-10-10 19:32 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

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

本版积分规则

797

主题

8878

帖子

7

粉丝