俊洋同学
唯梦想与爱不可辜负
当我们的狗狗出门玩耍后,你是否还担心狗狗走失?出门寻找时却无头乱撞,是的,这都一直困扰着我们。设计一款用于狗狗丢失寻找的设备,用于寻找消失在视线下的狗子。
#include <STC8G.H>
unsigned char timer_num[25];
unsigned char code_num[25];
unsigned char start;
unsigned char data_num;
unsigned char num=0;
unsigned char timer=0;
unsigned char flag=0;//接收完成标志
unsigned char i;
unsigned char timer1_num=0;
unsigned char timer1_num1;
sbit bb=P5^4;
void Timer0_Init() //30微秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xB4; //设置定时初始值
TH0 = 0xFE; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 0; //定时器0开始计时
}
void Timer1_Init() //5毫秒@11.0592MHz
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x00; //设置定时初始值
TH1 = 0x28; //设置定时初始值
TF1 = 0; //清除TF1标志
TR1 = 0; //定时器1开始计时
}
void Init()
{
P3M0=0;
P3M1=0;
P1M0=0;
P1M1=0;
P5M0=0;
P5M1=0;
Timer0_Init(); //用于计时
Timer1_Init();
EA=1; h
ET0=1;
ET1=1;
}
void main()
{
Init();
while(1)
{
if(P32==1)
{
TR0=1;
while(P32==1);
TR0=0;
timer_num[0]=num;
num=0;
if(timer_num[0]>100&&timer_num[0]<150)
{
start=1;
while(P32==0);
TR0=1;
}
}
if(start==1)
{
start=0;
for(i=1;i<25;i++)
{
while(P32);
timer_num[i]=num;
while(P32==0);
num=0;
}
TR0=0;
flag=1;
}
if(flag==1)
{
flag=0;
for(i=0;i<25;i++)
{
if(timer_num[i]>0x11)
code_num[i] = 1;
else
code_num[i] = 0;
}
data_num = 0x00;
for(i=21;i<25;i++)
{
data_num = data_num << 1;
if(code_num[i]==1)
data_num |= 0x01;
}
switch(data_num) //判断接收的数值
{
case 0X00:break;
case 0X01:break;
case 0X02:break;
case 0X03:break;
case 0X04:break;
case 0X05:break;
case 0X06:break;
case 0X07:break;
case 0X08:break;
case 0X09:timer1_num1=20;TR1=1;break;
case 0X0A:break;
case 0X0B:break;
case 0X0C:break;
case 0X0E:break;
case 0X0F:break;
default:break;
}
}
}
}
void timer0()interrupt 1
{
num++;
}
void timer1()interrupt 3
{
timer1_num++;
if(timer1_num==100)
{
timer1_num=0;
bb = ~bb;
timer1_num1--;
}
if(timer1_num1==0)
{
bb = 1;
timer1_num=0;
TR1=0;
}
}