[家电应用] 79F6488 20AD 检测怪问题请教,急!

[复制链接]
1246|4
 楼主| choice2005 发表于 2015-10-24 07:45 | 显示全部楼层 |阅读模式
AD, AN, ADC, dc, GB
基本程序如下:现在就是单步运行gBAdcSaveBuf 中可以存到AD的转换值,全速运行有时可以读到有时不行,这个问题真的好怪,请高手 指点为一下是什么问题,谢谢!


#define SYS_SAVEBANK()                static bit bSysBeforeBank_Flag;        \
                                      bSysBeforeBank_Flag=(bit) (INSCON&BIT6)
#define SYS_GETBACKBANK()        if(bSysBeforeBank_Flag)BANK1()
#define BANK0() INSCON&=~BIT6  //change to bank0

u32     data    u32AdVoltageSave1;
u32    data    gBAdcSaveBuf;
u8      idata    gBAdCountTimes;

void SetAdc_Initinal(void)
{
        ADCON   =  B0001_0111; //选择ANT3通道 设置内部基准电压,选择内部基准电压1
        ADCH    =  B1111_0000;
        ADT     =  B1011_0101;  //12000000/2/(256-196)
        ADCDS   =  B0000_0000;

}



void     ISR_ADC_Interrupt(void) interrupt 6
{     


         SYS_SAVEBANK();
            BANK0();
        ADCON    &=B1011_1111;

        gBAdcSaveBuf        =(u32)ADDH;
        gBAdcSaveBuf        <<=8;
        gBAdcSaveBuf        |=(u32)ADDM;
        gBAdcSaveBuf        =(gBAdcSaveBuf<<=4)|((u32)(ADDL));
        u32AdVoltageSave1   =u32AdVoltageSave1+gBAdcSaveBuf;
        gBAdcSaveBuf        = CLEAR;
          if(gBAdCountTimes++ >=8)
        {
            _nop_();
             AdcInterrupt_Disable();
             gBAdCountTimes     = CLEAR;  //3011361275  97390957  dfvip999
             u32AdVoltageSave1  = (u32AdVoltageSave1/8);  
             _nop_();
        }
        SYS_GETBACKBANK();
}
bbapple 发表于 2015-10-24 23:36 | 显示全部楼层
中断函数你在看看吧,我觉得好像是有些问题、
boy1990 发表于 2015-10-25 22:11 | 显示全部楼层
ADCON    &=B1011_1111;
 楼主| choice2005 发表于 2015-10-29 09:11 | 显示全部楼层
B1011_1111 是我定义的一个,就是清AD的中断标志位了
 楼主| choice2005 发表于 2015-10-29 09:12 | 显示全部楼层
B1011_1111 是我定义的一个,就是清AD的中断标志位了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

104

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部