小弟在学stm8,求大神,我写的程序外部中断进入不了,帮我看看啊,单片机是stm8s105k4.
时间:10-02
整理:3721RD
点击:
#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);
}
}
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);
}
}
求大神告知为什么外部中断无法进入啊
工程建立的有问题,程序中断函数写错了