#include <stm8s.h>
#include <stm8s_exti.h>
#define uchar unsigned char
#define uint unsigned int
uint curtain1_down,curtain1_up,curtain2_down,curtain2_up,K1,K2,K3;
void Delay_10ms()
{
uint y;
for(y=6150; y>0; y--)//10ms=6150
{
}
}
void Delay_200ms()
{
uint x,y;
for(x=20; x>0; x--)//200ms=20
{
for(y=6150; y>0; y--)//1ms=615
{
}
}
}
void Delay_50ms()
{
uint x,y;
for(x=5; x>0; x--)//200ms=20
{
for(y=6150; y>0; y--)//1ms=615
{
}
}
}
void main(void)
{
K1=0;
K2=0;
K3=0;
curtain1_down=0;
curtain2_down=0;
curtain1_up=0;
curtain2_up=0;
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOC,GPIO_PIN_1,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT_PP_LOW_SLOW);
disableInterrupts();
GPIO_Init(GPIOB,GPIO_PIN_1,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_2,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_3,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_4,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_5,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_6,GPIO_MODE_IN_PU_IT);
GPIO_Init(GPIOB,GPIO_PIN_7,GPIO_MODE_IN_PU_IT);
CLK_HSIPrescalerConfig( CLK_PRESCALER_HSIDIV8);
EXTI_DeInit();
EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOB , EXTI_SENSITIVITY_FALL_ONLY);
enableInterrupts();
while(1)
{
}
}
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler,4)
{
disableInterrupts();
Delay_50ms();
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_7)==0x00)//窗帘1降
{
curtain1_down=curtain1_down+1;
if(curtain1_down==1)
{
curtain1_up=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_6);
Delay_200ms();
GPIO_WriteHigh(GPIOC, GPIO_PIN_7);
}
if(curtain1_down==2)
{
curtain1_down=0;
curtain1_up=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_6);
GPIO_WriteLow(GPIOC, GPIO_PIN_7);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_6)==0x00)//窗帘1升
{
curtain1_up=curtain1_up+1;
if(curtain1_up==1)
{
curtain1_down=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_7);
Delay_200ms();
GPIO_WriteHigh(GPIOC, GPIO_PIN_6);
}
if(curtain1_up==2)
{
curtain1_up=0;
curtain1_down=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_7);
GPIO_WriteLow(GPIOC, GPIO_PIN_6);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_5)==0x00)//窗帘2降
{
curtain2_down=curtain2_down+1;
if(curtain2_down==1)
{
curtain2_up=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_4);
Delay_200ms();
GPIO_WriteHigh(GPIOC, GPIO_PIN_5);
}
if(curtain2_down==2)
{
curtain2_down=0;
curtain2_up=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_4);
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_4)==0x00)//窗帘2升
{
curtain2_up=curtain2_up+1;
if(curtain2_up==1)
{
curtain2_down=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
Delay_200ms();
GPIO_WriteHigh(GPIOC, GPIO_PIN_4);
}
if(curtain2_up==2)
{
curtain2_up=0;
curtain2_down=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_5);
GPIO_WriteLow(GPIOC, GPIO_PIN_4);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_3)==0x00)
{
K1=K1+1;
if(K1==1)
{
GPIO_WriteHigh(GPIOC, GPIO_PIN_3);
}
if(K1==2)
{
K1=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_3);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_2)==0x00)
{
K2=K2+1;
if(K2==1)
{
GPIO_WriteHigh(GPIOC, GPIO_PIN_2);
}
if(K2==2)
{
K2=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_2);
}
}
if((GPIO_ReadInputData(GPIOB)&GPIO_PIN_1)==0x00)
{
K3=K3+1;
if(K3==1)
{
GPIO_WriteHigh(GPIOC, GPIO_PIN_1);
}
if(K3==2)
{
K3=0;
GPIO_WriteLow(GPIOC, GPIO_PIN_1);
}
}
// enableInterrupts();
}
|
|