#include "STM8S103F.h"
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
unsigned char a,b;
unsigned char sheng; //升降标志位
void yanshi(unsigned int x)
{
unsigned char y,z;
for(y=x;x>0;x--)
for(z=100;z>0;z--);
}
void yi(void)
{
if(sheng)
{
PD_ODR|=BIT3;yanshi(a);
}
else PD_ODR&=~BIT3;yanshi(b);
}
void er(void)
{
if(sheng)
{PD_ODR|=BIT2;yanshi(a);}
else PD_ODR&=~BIT2;yanshi(b);
}
void san(void)
{
if(sheng)
{PD_ODR|=BIT1;yanshi(a);}
else PD_ODR&=~BIT1;yanshi(b);
}
void si(void)
{
if(sheng){PC_ODR|=BIT7;yanshi(a);}
else PC_ODR&=~BIT7;yanshi(b);
}
void wu(void)
{
if(sheng){PC_ODR|=BIT6;yanshi(a);}
else PC_ODR&=~BIT6;yanshi(b);
}
void liu(void)
{
if(sheng) {PC_ODR|=BIT5;yanshi(a);}
else PC_ODR&=~BIT5;yanshi(b);
}
void qi(void)
{
if(sheng){PC_ODR|=BIT4;yanshi(a);}
else PC_ODR&=~BIT4;yanshi(b);
}
void ba(void)
{if(sheng){PC_ODR|=BIT3;yanshi(a);}
else PC_ODR&=~BIT3;yanshi(b);
}
void jiu(void)
{
if(sheng){PB_ODR|=BIT4;yanshi(a);}
else PB_ODR&=~BIT4;yanshi(b);
}
void shi(void)
{
if(sheng){PB_ODR|=BIT5;yanshi(a);}
else PB_ODR&=~BIT5;yanshi(b);
}
void main()
{
PD_DDR|=BIT1|BIT2|BIT3; //输出
PC_DDR|=BIT3|BIT4|BIT5|BIT6|BIT7;
PB_DDR|=BIT4|BIT5;
PD_CR1|=BIT1|BIT2|BIT3; //推挽
PC_CR1|=BIT3|BIT4|BIT5|BIT6|BIT7;
PB_CR1|=BIT4|BIT5;
a=60;
b=80;
while (1)
{
sheng=1;
yi(); er(); san(); si(); wu();
liu();qi();ba();jiu();shi();
sheng=0;
shi();jiu();ba();qi();liu();
wu(); si(); san(); er(); yi();
//PD_ODR|=BIT3;yanshi(500);PD_ODR&=~BIT3;yanshi(300);
//PD_ODR|=BIT2;yanshi(500);PD_ODR&=~BIT2;yanshi(300);
//PD_ODR|=BIT1;yanshi(500);PD_ODR&=~BIT1;yanshi(300);
//PC_ODR|=BIT7;yanshi(500);PC_ODR&=~BIT7;yanshi(300);
//PC_ODR|=BIT6;yanshi(500);PC_ODR&=~BIT6;yanshi(300);
//PC_ODR|=BIT5;yanshi(500);PC_ODR&=~BIT5;yanshi(300);
/*PC_ODR|=BIT4;yanshi(500);PC_ODR&=~BIT4;yanshi(300);
PC_ODR|=BIT3;yanshi(500);PC_ODR&=~BIT3;yanshi(300);
PB_ODR|=BIT4;yanshi(500);PB_ODR&=~BIT4;yanshi(300);
PB_ODR|=BIT5;yanshi(500);PB_ODR&=~BIT5;yanshi(300);*/
}
}