📄 text2.c
字号:
else goto end0;
}
}
clr_12864();
Cs1_12864=0; Cs2_12864=1;
show_cha_12864(0,0,ok[2]);
show_cha_12864(0,16,ok[3]);
show_let_12864(2,24,time_let[x1]);
show_let_12864(2,32,ok1[1]);
show_let_12864(2,40,time_let[x2]);
show_let_12864(2,48,ok1[0]);
Cs1_12864=1; Cs2_12864=0;
show_cha_12864(0,32,ok[0]);
show_cha_12864(0,48,ok[1]);
show_cha_12864(2,0,ok[4]);
show_cha_12864(2,16,ok[5]);
show_cha_12864(4,0,ok[6]);
show_cha_12864(4,16,ok[7]);
show_cha_12864(6,0,ok[8]);
show_cha_12864(6,16,ok[9]);
show_let_12864(2,32,time_let[3]);
show_let_12864(2,40,time_let[1]);
show_let_12864(2,48,time_let[5]);
show_let_12864(2,56,ok1[0]);
for (i=4; i<6; i++)
{
date1 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
date2 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(4,i*8,time_let[date]);
}
for (i=6; i<8; i++)
{
date1 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
date2 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(4,i*8,time_let[date]);
}
Cs1_12864=0; Cs2_12864=1;
for (i=0; i<2; i++)
{
date1 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
date2 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(4,i*8,time_let[date]);
}
for (i=2; i<4; i++)
{
date1 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
date2 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(4,i*8,time_let[date]);
}
Cs1_12864=1; Cs2_12864=0;
for (i=4; i<6; i++)
{
date1 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
date2 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
if(date1==0&&date2==0)
date=1;
else if(date1==1&&date2==1)
date=0;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(6,i*8,time_let[date]);
}
for (i=6; i<8; i++)
{
date1 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
date2 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
if(date1==0&&date2==0)
date=1;
else if(date1==1&&date2==1)
date=0;
else if(date1==1&&date2==0)
date=10;
else goto RemExit0;
show_let_12864(6,i*8,time_let[date]);
}
goto end0;
RemExit0:
{
Cs1_12864=1; Cs2_12864=0;
show_cha_12864(0,32,ok[0]);
show_cha_12864(0,48,ok[1]);
Cs1_12864=0; Cs2_12864=1;
show_cha_12864(0,0,ok[10]);
show_cha_12864(0,16,ok[11]);
PX1=1;
EX0=1; //打开INT0中断请求
TF0=0;
return;
}
end0:
{
PX1=1;
EX0=1; //打开INT0中断请求
TF0=0;
return;
}
}
void RemIn(void) interrupt 2 using 0
{
unsigned char i,j,date ,x1,x2;
bit date1,date2;
unsigned int temp;
EX0=0;
EX1=0; //打开INT0中断请求
TH0=0;
TL0=0;
while (!RemPin); //等待高电平
TR0=1;
while (RemPin) //等待低电平
if (TF0==1) goto end; //超时就退出;
TR0=0;
temp=TH0;
temp=(temp<<8)+TL0;
if (temp>18000 || temp<4000) //判断同步码的宽度
{
goto end;
}
//同步码检测成功
if (temp<18000 && temp>13000)
{
x1=4;
x2=7;
for (i=0; i<3; i++) //解 3*8=24 位码
for (j=0; j<8; j++)
{
while (!RemPin); //等待高电平
TH0=0;
TL0=0;
TR0=1;
while (RemPin) //等待低电平
if (TF0==1) goto end; //超时就退出
TR0=0;
temp=TH0;
temp=((temp<<8)+TL0);
if (temp>1200 && temp<1800)
{
receive[i]=receive[i]<<1;
receive[i]=receive[i]+1; //保存 1
}
else if (temp>300 && temp<702)
{
receive[i]=receive[i]<<1; //保存0
}
else goto end;
}
}
if (temp<13000 && temp>8000)
{x1=3;
x2=3;
for (i=0; i<3; i++) //解 3*8=24 位码
for (j=0; j<8; j++)
{
while (!RemPin); //等待高电平
TH0=0;
TL0=0;
TR0=1;
while (RemPin) //等待低电平
if (TF0==1) goto end; //超时就退出
TR0=0;
temp=TH0;
temp=((temp<<8)+TL0);
// /*
if (temp>800 && temp<1200)
{
receive[i]=receive[i]<<1;
receive[i]=receive[i]+1; //保存 1
}
else if (temp>200 && temp<600)
{
receive[i]=receive[i]<<1; //保存0
}
else goto end;
}
}
if (temp<8000 && temp>4000)
{ x1=1;
x2=5;
for (i=0; i<3; i++) //解 3*8=24 位码
for (j=0; j<8; j++)
{
while (!RemPin); //等待高电平
TH0=0;
TL0=0;
TR0=1;
while (RemPin) //等待低电平
if (TF0==1) goto end; //超时就退出
TR0=0;
temp=TH0;
temp=((temp<<8)+TL0);
// /*
if (temp>300 && temp<900)
{
receive[i]=receive[i]<<1;
receive[i]=receive[i]+1; //保存 1
}
else if (temp>20&& temp<300)
{
receive[i]=receive[i]<<1; //保存0
}
else goto end;
}
}
clr_12864();
Cs1_12864=0; Cs2_12864=1;
show_cha_12864(0,0,ok[2]);
show_cha_12864(0,16,ok[3]);
show_let_12864(2,24,time_let[x1]);
show_let_12864(2,32,ok1[1]);
show_let_12864(2,40,time_let[x2]);
show_let_12864(2,48,ok1[0]);
Cs1_12864=1; Cs2_12864=0;
show_cha_12864(0,32,ok[0]);
show_cha_12864(0,48,ok[1]);
show_cha_12864(2,0,ok[4]);
show_cha_12864(2,16,ok[5]);
show_cha_12864(4,0,ok[6]);
show_cha_12864(4,16,ok[7]);
show_cha_12864(6,0,ok[8]);
show_cha_12864(6,16,ok[9]);
show_let_12864(2,32,time_let[4]);
show_let_12864(2,40,time_let[3]);
show_let_12864(2,48,time_let[3]);
show_let_12864(2,56,ok1[0]);
for (i=4; i<6; i++)
{
date1 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
date2 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(4,i*8,time_let[date]);
}
for (i=6; i<8; i++)
{
date1 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
date2 = (bit)(receive[0] & 0x80);
receive[0]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(4,i*8,time_let[date]);
}
Cs1_12864=0; Cs2_12864=1;
for (i=0; i<2; i++)
{
date1 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
date2 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(4,i*8,time_let[date]);
}
for (i=2; i<4; i++)
{
date1 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
date2 = (bit)(receive[1] & 0x80);
receive[1]<<= 1;
if(date1==0&&date2==0)
date=0;
else if(date1==1&&date2==1)
date=1;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(4,i*8,time_let[date]);
}
Cs1_12864=1; Cs2_12864=0;
for (i=4; i<6; i++)
{
date1 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
date2 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
if(date1==0&&date2==0)
date=1;
else if(date1==1&&date2==1)
date=0;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(6,i*8,time_let[date]);
}
for (i=6; i<8; i++)
{
date1 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
date2 = (bit)(receive[2] & 0x80);
receive[2]<<= 1;
if(date1==0&&date2==0)
date=1;
else if(date1==1&&date2==1)
date=0;
else if(date1==1&&date2==0)
date=10;
else goto RemExit;
show_let_12864(6,i*8,time_let[date]);
}
goto end;
RemExit:
{
Cs1_12864=1; Cs2_12864=0;
show_cha_12864(0,32,ok[0]);
show_cha_12864(0,48,ok[1]);
Cs1_12864=0; Cs2_12864=1;
show_cha_12864(0,0,ok[10]);
show_cha_12864(0,16,ok[11]);
PX1=0;
EX0=1;
EX1=1; //打开INT0中断请求
TF0=0;
return;
}
end:
{
PX1=0;
EX0=1;
EX1=1; //打开INT0中断请求
TF0=0;
return;
}
}
void main(void)
{
unsigned char i;
unsigned char clk_time[3]={0x00,0x00,0x12}; //秒,分,时寄存器初始
unsigned char temp=0x80; // 地址80:秒写入寄存器
write_1302(0x8e,0x00); //WP=0 写操作
for(i=0;i<3;i++)
{
write_1302(temp,clk_time[i]);
temp+=2;
}
write_1302(0x8e,0x80); //WP=1 写保护
ini_12864(); //初始化12864
clr_12864();
EA=1;
IT0=1; //设定INT1的触发方式为脉冲负边沿触发
IT1=1; //设定INT0的触发方式为脉冲负边沿触发
EX0=1; //打开INT1中断请求
EX1=1; //打开INT0中断请求
TMOD=0x01;
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -