返回列表 发新帖

c8051 的一段 中断程序 请大家看看问题出在哪里

[复制链接]

1

主题

3

帖子

1

积分

幼儿园

积分
1
发表于 2013-6-7 14:51:13 | 显示全部楼层 | 阅读模式
void Timer2_ISR() interrupt 5
{
    static state=0;
    TF2=0;
    switch(state)
    {
        case 0:
            DA0=1;
            DA1=0;
            state++;
            break;
        case 1:
            DA0=0;
            DA1=0;
            state++;
            break;
        case 2:
            DA0=0;
            DA1=1;
            state++;
            break;
        case 3:
            DA0=0;
            DA1=0;
            state=0;

            DataPos++;
            break;
        default:break;
    }
    /*****************************/
    if(DataPos>=PREWAIT)
    {
        AD0INT=0;
        AD0BUSY=1;
        while(!AD0INT);
        switch(state)
        {
        case 0:
            DC_RED=DC_RED+ADC0H;
            AMX0SL=0x03; //Next channel=SignalRed
            break;
        case 1:
            SampleRed[DataPos-PREWAIT]=ADC0H;
            if(ADC0H>RED_MAX)
                RED_MAX=ADC0H;
            if(ADC0H<RED_MIN)
                RED_MIN=ADC0H;
            AMX0SL=0x01; //Next channel=DC_IRED
            break;
        case 2:
            DC_IRED=DC_IRED+ADC0H;
            AMX0SL=0x04; //Next channel=SignalIRed
            break;
        case 3:
            SampleIRed[DataPos-PREWAIT]=ADC0H;
            if(ADC0H>IRED_MAX)
                IRED_MAX=ADC0H;
            if(ADC0H<IRED_MIN)
                IRED_MIN=ADC0H;
            AMX0SL=0x00; //Next channel=DC_RED
            break;
        default:break;
        }
    }
   
    /*****************************/
      
    if(DataPos>=SAMPLESIZE+PREWAIT)
    {
        DC_RED/=SAMPLESIZE;
        DC_IRED/=SAMPLESIZE;
        TR2=0;
    }
}
回复

使用道具 举报

18

主题

128

帖子

16

积分

一年级

积分
16
发表于 2013-6-9 12:48:38 | 显示全部楼层
可以进中断吗
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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