|
#include <STC15F2K60S2.H>
#define u8 unsigned char
#define u16 unsigned int
typedef struct
{
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
unsigned char b8:1;
}bits;
typedef union
{
unsigned char hex;
bits b;
}Hextobin;
Hextobin led_ctrl,buzzer_ctrl;
u16 count;
void Device_ctrl(u8 p2data,u8 p0data)
{
P0=p0data;
P2=p2data;
P2=0;
}
void Timer2Init(void) //1??@11.0592MHz
{
AUXR &= 0xFB; //?????12T??
T2L = 0x66; //??????
T2H = 0xFC; //??????
AUXR |= 0x10; //???2????
IE2 |= 0x04; //????2??
EA = 1;
}
void start(void)
{
Device_ctrl(0xa0,0);
led_ctrl.hex=0xff;
Device_ctrl(0x80,led_ctrl.hex);
}
u8 step;
void led_process()
{
if(count>=500)
{
count=0;
led_ctrl.b.b1=~led_ctrl.b.b1;
Device_ctrl(0x80,led_ctrl.hex);
step++;
}
}
void led_process2()
{
if(step==10)
{
buzzer_ctrl.b.b4=1;
Device_ctrl(0xa0,buzzer_ctrl.hex);
}
if(step==20)
{
step=0;
buzzer_ctrl.b.b4=0;
Device_ctrl(0xa0,buzzer_ctrl.hex);
}
}
void main(void)
{
start();
Timer2Init();
while(1)
{
}
}
void t2int() interrupt 12 //????
{
count++;
led_process();
led_process2();
}
|
|