小弟在学stm8,求大神,我写的程序外部中断进入不了,帮我看看啊,单片机是stm8s105k4.

2019-07-14 19:40发布

#include "STM8S105K.h"
void run(void);
void GPIO_Init(void);
void test(void);
void InitEXti2(void);
void InitEXTI4(void);
int a=0,b=0,c=0;
void delay(unsigned int t)
{
        while(t--);
}


void GPIO_Init()
{
//        _asm("sim");
        PD_DDR = 0x00;
        PD_CR1 = 0x00;
        PD_CR2 = 0x00;  //定义PD口为悬浮输入口
        PC_DDR = 0x18;
        PC_CR1 = 0x1c;
        PC_CR2 = 0x04;
        PE_DDR = 0x00;
        PE_CR1 = 0x20;
        PE_CR2 = 0x20;
//        _asm("rim");
}




void run()
{
        if((PD_IDR & 0x08) == 0x08)
  {
                delay(5);
                if((PD_IDR & 0x08) == 0x08)
                {
                        if(b <= 1080)
                        {
                          PC_ODR |= 0x08;
                  }
                }
        }
        else
        {
                PC_ODR &= 0xf7;
        }
       
        if((PD_IDR & 0x10) == 0x10)
        {
                delay(5);
                if((PD_IDR & 0x10) == 0x10)
                {
                        if(a <= 1080)
                        {
                          PC_ODR |= 0x10;
                  }
                }
        }
        else
        {
                PC_ODR &= 0xef;
        }
}


void InitEXTI2(void)
{
        EXTI_CR1 = 0x20;
}


void InitEXTI4(void)
{
        EXTI_CR2 = 0x01;
}






@far @Interrupt void EXTI4_IRQHandler1(void)
{
        _asm("sim");
        b = b+1;
  c = 1;
        if(b == 1080)
  {
                a = 0;
                PC_ODR &= 0xef;
                PC_ODR &= 0xf7;
               
  }       
        _asm("rim");
}






@far @interrupt void EXTI2_IRQHandler(void)
{
        _asm("sim");
        a = a+1;
        c = 1;
        if(a == 1080)
  {
                b = 0;
                PC_ODR &= 0xef;
                PC_ODR &= 0xf7;
  }       
        _asm("rim");
}


main()
{
        _asm("sim");
        GPIO_Init();
        InitEXTI2();
        InitEXTI4();
        _asm("rim");
  while (1)
  {
                run();
                delay(20);
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。