打印
[家电应用]

79F6488 20AD 检测怪问题请教,急!

[复制链接]
1073|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的中断标志位了

使用特权

评论回复
5
choice2005|  楼主 | 2015-10-29 09:12 | 只看该作者
B1011_1111 是我定义的一个,就是清AD的中断标志位了

使用特权

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

本版积分规则

37

主题

104

帖子

3

粉丝