打印
[STM8]

STM8开关中断的问题

[复制链接]
4244|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanquanquan|  楼主 | 2013-8-1 08:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近写了一个开关中断程序,我的目的是当第一个中断接受到信号进入中断程序之后把这个中断禁止,然后第二个中断接收到信号进入中断程序之后也把这个中断禁止。等到两个中断都禁止后然后在主函数中在同时使能两个中断。     可问题就来了,每个中断进入中断函数之后该中断都会被禁止,可是当在主函数中同时使能两个中断时会再运行一次中断子函数(两个都运行一遍),会两次进入主函数的使能函数。    求各位大神指教。       下面附程序代码
沙发
yuanquanquan|  楼主 | 2013-8-1 08:55 | 只看该作者
#include<stm8s208c8.h>

_Bool led @PD_ODR:7;
_Bool led2 @PA_ODR:6;
int i,j,k,s,a,b,c;

void CLK_Init(void)
{
        CLK_CKDIVR=0X00;
}

void GPIO_Init(void)
{
        PD_DDR=0X80;
        PD_CR1=0X80;
        PB_CR1=0X01;
        PB_CR2=0X01;
        PC_CR1=0X02;
        PC_CR2=0X02;
        PA_DDR=0X40;
        PA_CR1=0X40;
        EXTI_CR1=0X14;
}


void main()
{
        _asm("sim");
        CLK_Init();
        GPIO_Init();
        _asm("rim");
        while (1)
        {
                led=1;
                if(a==1&&b==1)
                {
                        _asm("sim");
                        //GPIO_Init();
                        PB_CR2=0X01;
                        PC_CR2=0X02;
                        a=0;
                        b=0;
                        led2=~led2;
                        _asm("rim");
                       
                       
                       
                }
        }
}

@far @interrupt void PB_Out_Int(void)
{
                led=0;
                for(i=0;i<30;i++)
                        for(j=0;j<30000;j++);
                        PB_CR2=0X00;
                        for(i=0;i<30;i++)
                        for(j=0;j<30000;j++);
                        a=1;
}

@far @interrupt void PC_Out_Int(void)
{
        while(k<30)
        {
                led=0;
                for(s=0;s<30000;s++);
                led=1;
                for(s=0;s<30000;s++);
                k++;
        }
        k=0;
        PC_CR2=0X00;
        for(i=0;i<30;i++)
                        for(j=0;j<30000;j++);
        b=1;
}

使用特权

评论回复
板凳
worldsing| | 2013-8-1 08:57 | 只看该作者
刚开始玩stm8 顶顶

使用特权

评论回复
地板
yuanquanquan|  楼主 | 2013-8-1 09:00 | 只看该作者
worldsing 发表于 2013-8-1 08:57
刚开始玩stm8 顶顶

我也是

使用特权

评论回复
5
worldsing| | 2013-8-1 09:07 | 只看该作者
你用的什么型号的

环境我用的是IAR

使用特权

评论回复
6
yuanquanquan|  楼主 | 2013-8-1 09:10 | 只看该作者
worldsing 发表于 2013-8-1 09:07
你用的什么型号的

环境我用的是IAR

我用的是 STM8S208C8   写程序用STVD

使用特权

评论回复
7
worldsing| | 2013-8-1 09:12 | 只看该作者
哦,我用的是s103f3最低端的那个

STVD你用汇编?

IAR也很方便

使用特权

评论回复
8
yuanquanquan|  楼主 | 2013-8-1 09:17 | 只看该作者
worldsing 发表于 2013-8-1 09:12
哦,我用的是s103f3最低端的那个

STVD你用汇编?

我用C,还没试过IAR

使用特权

评论回复
9
worldsing| | 2013-8-1 09:19 | 只看该作者
如果不是常用的话

iar是不错的选择,好入手

呵呵,

使用特权

评论回复
10
xdzhang65| | 2013-9-17 09:27 | 只看该作者
你用debug看看中断寄存器的变化。再判断一下。

使用特权

评论回复
11
xdzhang65| | 2013-9-17 09:29 | 只看该作者
建议你多加注释。便于自己和别人理解。

使用特权

评论回复
12
yuanquanquan|  楼主 | 2013-9-17 10:40 | 只看该作者
xdzhang65 发表于 2013-9-17 09:29
建议你多加注释。便于自己和别人理解。

多谢指教  我以后会注意的

使用特权

评论回复
13
pofu007| | 2013-9-17 21:59 | 只看该作者
习惯用IAR了,中断也用IAR的模型。

使用特权

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

本版积分规则

7

主题

78

帖子

1

粉丝