打印

STC15W系列单片机比较器中断

[复制链接]
1149|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
海布里|  楼主 | 2017-10-31 11:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
路过的大神,已经设置了标志位,为什么每一次进中断都会执行中断里边的while循环呢,求解#include        "config.h"
#include        <intrins.h>

sbit charge=P3^3;
sbit stimulate=P3^0;

u8 x;
u8 count=0;

#define CMPEN    0x80    //CMPCR1.7:比较器模块使能位
#define CMPIF    0x40    //CMPCR1.6:比较器中断标志位
#define PIE      0x20    //CMPCR1.5:比较器上升沿中断使能位
#define NIE      0x10    //CMPCR1.4:比较器下降沿中断使能位
#define PIS      0x08    //CMPCR1.3:比较器正极选择位
#define NIS      0x04    //CMPCR1.2:比较器负极选择位
#define CMPOE    0x02    //CMPCR1.1:比较器结果输出控制位
#define CMPRES   0x01    //CMPCR1.0:比较器比较结果标志位

#define INVCMPO   0x80    //CMPCR2.7:比较结果反向输出控制位
#define DISFLT    0x40    //CMPCR2.6:比较器输出端0.1us滤波控制位
#define LCDTY     0x3F    //CMPCR2.[5:0]:比较器输出的区抖时间控制


/*初始化IO口*/
void GPIO_config(void)
{
        P5M1=0x30;                //设置P55高阻态       
        P5M0=0x00;

        P3M1=0x00;                //设置P33推挽输出       
        P3M0=0x09;                //设置P30推挽输出
}
.
.
.
.





/******************** 主函数 **************************/
void main(void)
{               
        GPIO_config();
        CMPCR1=0xB0; //配置比较器控制寄存器
        CMPCR2=0;
        EA=1;

        while(1)
        {
                stimulate=1;
                Delay3ms();

                stimulate=0;
                Delay3ms();
        }
                       


}

/*比较器中断*/
void CMP_Isr() interrupt 21 using 1
{
        u8 y=0;
        count=count+1;
        CMPCR1=0xBF;                 //清完成标志
       
        while(count==2)       
        {
         if(y<150)
         {
         for(x=0;x<200;x++)
        {
                charge=1;
                Delay3ms();
                charge=0;
                Delay5ms();
        }
        if(x==200)
        {
                x=0;
        }
        y++;
        }
        if(y==150)
        {count=0;}
        }
}

相关帖子

沙发
混子黄| | 2017-10-31 11:41 | 只看该作者
我觉得是每2次中断会执行while循环内容

使用特权

评论回复
板凳
海布里|  楼主 | 2017-10-31 11:49 | 只看该作者
混子黄 发表于 2017-10-31 11:41
我觉得是每2次中断会执行while循环内容

我测的是每进一次中断,就执行了一次中断里边的while循环

使用特权

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

本版积分规则

4

主题

120

帖子

2

粉丝