?? tz_clock.c
字號:
switch(BS_RSEG)
{ case 0:{if(bs0==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 1:{if(bs1==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 2:{if(bs2==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 3:{if(bs3==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 4:{if(bs4==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 5:{if(bs5==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 6:{if(bs6==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 7:{if(bs7==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 8:{if(bs8==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 9:{if(bs9==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 10:{if(bs10==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 11:{if(bs11==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 12:{if(bs12==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 13:{if(bs13==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 14:{if(bs14==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 15:{if(bs15==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 16:{if(bs16==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 17:{if(bs17==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 18:{if(bs18==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 19:{if(bs19==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 20:{if(bs20==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 21:{if(bs21==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 22:{if(bs22==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
case 23:{if(bs23==0){DAT8279= *(pdis+0);}else {DAT8279= *(pdis+1);}}break;
default:{}
}
DAT8279= *(pdis+0);
DAT8279= *(pdis+10);DAT8279= *(pdis+10);//報時的段碼“bb”
DAT8279= *(pdis+(BS_RSEG%10));
DAT8279= *(pdis+(BS_RSEG/10));
DAT8279= *(pdis+(BS_RSEG%10));
DAT8279= *(pdis+(BS_RSEG/10));
}break; /*要顯示報時的段碼!*/
case 13:
{ if(ZM_FLAG==1)
{
p_timeslave=hms_variant;p_timeslave+=5;
DAT8279=*(pdis+12);
DAT8279=*(pdis+12);
DAT8279=*(pdis+11);
DAT8279=*(pdis+11);
DAT8279=*(pdis+(p_timeslave->hour%10));
DAT8279=*(pdis+(p_timeslave->hour/10));
DAT8279=*(pdis+(p_timeslave->hour%10));
DAT8279=*(pdis+(p_timeslave->hour/10));
} /*要顯示照明上限的段碼!*/
else
{
p_timeslave=hms_variant;p_timeslave+=6;
DAT8279=*(pdis+13);
DAT8279=*(pdis+13);
DAT8279=*(pdis+11);
DAT8279=*(pdis+11);
DAT8279=*(pdis+(p_timeslave->hour%10));
DAT8279=*(pdis+(p_timeslave->hour/10));
DAT8279=*(pdis+(p_timeslave->hour%10));
DAT8279=*(pdis+(p_timeslave->hour/10));
}/*要顯示照明下限的段碼!*/
}break;
}
}
void dis_pub(COMPLEX *ux)
{ uchar temp1;uchar temp2;
temp1=ux->second/10;
temp2=ux->second%10;
DAT8279= *(pdis+temp2); DAT8279= *(pdis+temp1);
temp1=ux->minute/10;
temp2=ux->minute%10;
DAT8279= *(pdis+temp2); DAT8279= *(pdis+temp1);
temp1=ux->hour/10;
temp2=ux->hour%10;
DAT8279= *(pdis+temp2); DAT8279= *(pdis+temp1);
DAT8279= *(pdis+temp2); DAT8279= *(pdis+temp1);//再補充上兩個數碼管
}
void pushdata_12887(void)
{
XBYTE[0x4004]=p_timemu->hour; /*將母鐘的時間壓入日歷芯片里!*/
XBYTE[0x4002]=p_timemu->minute;
XBYTE[0x4000]=p_timemu->second;
p_timeslave=&hms_variant[1];
XBYTE[0x4010]=p_timeslave->hour;/*將東面子鐘的時間壓入日歷芯片里!*/
XBYTE[0x4011]=p_timeslave->minute;
XBYTE[0x4012]=p_timeslave->second;
p_timeslave=&hms_variant[2];
XBYTE[0x4013]=p_timeslave->hour;/*將南面子鐘的時間壓入日歷芯片里!*/
XBYTE[0x4014]=p_timeslave->minute;
XBYTE[0x4015]=p_timeslave->second;
p_timeslave=&hms_variant[3];
XBYTE[0x4016]=p_timeslave->hour;/*將西面子鐘的時間壓入日歷芯片里!*/
XBYTE[0x4017]=p_timeslave->minute;
XBYTE[0x4018]=p_timeslave->second;
p_timeslave=&hms_variant[4];
XBYTE[0x4019]=p_timeslave->hour;/*將北面子鐘的時間壓入日歷芯片里!*/
XBYTE[0x401a]=p_timeslave->minute;
XBYTE[0x401b]=p_timeslave->second;
}
void get_all_time(void)
{
p_timemu=hms_variant;
p_timemu->second=XBYTE[0x4000];
p_timemu->minute=XBYTE[0x4002];
p_timemu->hour=XBYTE[0x4004];/*對應母鐘的時間*/
//p_timeslave=hms_variant;
//p_timeslave++;//千萬不能寫成p_timeslave+=1形式
p_timeslave=&hms_variant[1];
p_timeslave->hour=XBYTE[0x4010];//取東面子鐘的時間
p_timeslave->minute=XBYTE[0x4011];
p_timeslave->second=XBYTE[0x4012];
p_timeslave=&hms_variant[2];
p_timeslave->hour=XBYTE[0x4013];//取南面子鐘的時間
p_timeslave->minute=XBYTE[0x4014];
p_timeslave->second=XBYTE[0x4015];
p_timeslave=&hms_variant[3];
p_timeslave->hour=XBYTE[0x4016];//取西面子鐘的時間
p_timeslave->minute=XBYTE[0x4017];
p_timeslave->second=XBYTE[0x4018];
p_timeslave=&hms_variant[4];
p_timeslave->hour=XBYTE[0x4019];//取北面子鐘的時間
p_timeslave->minute=XBYTE[0x401a];
p_timeslave->second=XBYTE[0x401b];
p_timeslave=&hms_variant[5];
p_timeslave->second=0x00;
p_timeslave->minute=0x00;
p_timeslave->hour=0x12;/*初始化對應照明上限的時間18:00:00*/
p_timeslave=&hms_variant[6];
p_timeslave->second=0x00;
p_timeslave->minute=0x00;
p_timeslave->hour=0x05;/*初始化對應照明下限的時間5:00:00*/
}
void initial_8279(void)
{
COM8279=0xd2;/*總清除命令*/
do{ACC=COM8279;}
while(ACC^7==1);/*等待清除結束8279可用!*/
COM8279=0x00;COM8279=0x34;/*鍵盤、顯示方式及時鐘分頻命令*/
}
void initial_12887(void)
{
RL12887A=0x2f;
RL12887B=0x06;
}
void initial_first(void)
{
TMOD=0x21;
PCON=0x80;
SCON=0x50;
TH0=-50000/256;
TL0=-50000%256;
ET0=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void key_which_hour(void)
{ p_timeslave=hms_variant;
switch(DIS_RSEG)
{
case 4:{p_timeslave=&hms_variant[1];func_slavehour();}break;
case 5:{p_timeslave=&hms_variant[2];func_slavehour();}break;
case 6:{p_timeslave=&hms_variant[3];func_slavehour();}break;
case 7:{p_timeslave=&hms_variant[4];func_slavehour();}break;
case 0:{p_timemu=hms_variant;func_muhour();}break;
case 13:
{ if(ZM_FLAG==1)
{ p_timeslave=&hms_variant[5];func_zmhour();}
else
{ p_timeslave=&hms_variant[6];func_zmhour();}
}break;
}
}
void key_which_min(void)
{ p_timeslave=hms_variant;
switch(DIS_RSEG)
{
case 4:{p_timeslave=&hms_variant[1];func_slavemin();}break;
case 5:{p_timeslave=&hms_variant[2];func_slavemin();}break;
case 6:{p_timeslave=&hms_variant[3];func_slavemin();}break;
case 7:{p_timeslave=&hms_variant[4];func_slavemin();}break;
case 0:{p_timemu=hms_variant;func_mumin();}break;
case 13:{;}break;
}
}
void func_slavehour(void)
{
if(ADD_SUB_FLAG==0)
{ p_timeslave->hour++;p_timeslave->hour%=12;}
else
{ p_timeslave->hour--;
if(p_timeslave->hour==0xff){p_timeslave->hour=11;}
}
}
void func_slavemin(void)
{
if(ADD_SUB_FLAG==0)
{ p_timeslave->minute++;p_timeslave->minute%=60;}
else
{ p_timeslave->minute--;
if(p_timeslave->minute==0xff){p_timeslave->minute=59;}
}
}
void func_muhour(void)
{
if(ADD_SUB_FLAG==0)
{ p_timemu->hour++;p_timemu->hour%=24;}
else
{ p_timemu->hour--;
if(p_timemu->hour==0xff){p_timemu->hour=23;}
}
}
void func_mumin(void)
{
if(ADD_SUB_FLAG==0)
{ p_timemu->minute++;p_timemu->minute%=60;}
else
{ p_timemu->minute--;
if(p_timemu->minute==0xff){p_timemu->minute=59;}
}
}
void func_zmhour(void)
{
if(ADD_SUB_FLAG==0)
{ p_timeslave->hour++;p_timeslave->hour%=24;}
else
{ p_timeslave->hour--;
if(p_timeslave->hour==0xff){p_timeslave->hour=23;}
}
}
uchar beijinghour(uchar *x,uchar *y)
{uchar high,low,temp;
high=*x;low=*y;
temp=(high-0x30)*10+(low-0x30);
temp+=8;//轉換為北京時間的小時!
if(temp==24){temp=0;return(temp);}
else if(temp>24){temp-=24;return(temp);}
else{return(temp);}
}
uchar beijingmin(uchar *x,uchar *y)
{uchar high,low,temp;
high=*x;low=*y;
temp=(high-0x30)*10+(low-0x30);
return(temp);
}
void zm_on_off(void) //如果上限及下限都為同一個值,則照明無效!
{ p_timeslave=&hms_variant[5];
if(p_timemu->hour==p_timeslave->hour){ZM_PIN=0;}
else
{ p_timeslave++;
if(p_timemu->hour==p_timeslave->hour){ZM_PIN=1;}
}
}
bit function_bs(void)
{ uchar temp;
temp=p_timemu->hour;
temp++;if(temp==24){temp=0;}
switch(temp)
{ case 0:{if(bs0==0){return(0);}else{return(1);}}break;
case 1:{if(bs1==0){return(0);}else{return(1);}}break;
case 2:{if(bs2==0){return(0);}else{return(1);}}break;
case 3:{if(bs3==0){return(0);}else{return(1);}}break;
case 4:{if(bs4==0){return(0);}else{return(1);}}break;
case 5:{if(bs5==0){return(0);}else{return(1);}}break;
case 6:{if(bs6==0){return(0);}else{return(1);}}break;
case 7:{if(bs7==0){return(0);}else{return(1);}}break;
case 8:{if(bs8==0){return(0);}else{return(1);}}break;
case 9:{if(bs9==0){return(0);}else{return(1);}}break;
case 10:{if(bs10==0){return(0);}else{return(1);}}break;
case 11:{if(bs11==0){return(0);}else{return(1);}}break;
case 12:{if(bs12==0){return(0);}else{return(1);}}break;
case 13:{if(bs13==0){return(0);}else{return(1);}}break;
case 14:{if(bs14==0){return(0);}else{return(1);}}break;
case 15:{if(bs15==0){return(0);}else{return(1);}}break;
case 16:{if(bs16==0){return(0);}else{return(1);}}break;
case 17:{if(bs17==0){return(0);}else{return(1);}}break;
case 18:{if(bs18==0){return(0);}else{return(1);}}break;
case 19:{if(bs19==0){return(0);}else{return(1);}}break;
case 20:{if(bs20==0){return(0);}else{return(1);}}break;
case 21:{if(bs21==0){return(0);}else{return(1);}}break;
case 22:{if(bs22==0){return(0);}else{return(1);}}break;
case 23:{if(bs23==0){return(0);}else{return(1);}}break;
}
}
uchar compare_zf(COMPLEX * u, COMPLEX * v)
{
if(u->hour%12==v->hour)/*表示母鐘小時與子鐘小時相等*/
{
if(u->minute==v->minute)
{
//MOTO_FLAG=0;//在進行判斷秒位的時候要將走時標志清零,以備別丟掉應該走時的狀態!
if(u->second==v->second)
{ZHUISHI=3;}
else if(u->second>v->second && (u->second-v->second)>3 ){ZHUISHI=1;}
else if(u->second<v->second && (v->second-u->second)>3) {ZHUISHI=2;}
else{ZHUISHI=3;}
}
else if(u->minute>v->minute)
{ZHUISHI=1;}/*表示母鐘分鐘 大于 子鐘分鐘,子鐘正轉*/
else if(u->minute<v->minute)
{ZHUISHI=2;}/*表示母鐘分鐘 小于 子鐘分鐘,子鐘反轉*/
}
else if((u->hour%12)>v->hour && (u->hour%12)-v->hour<=6 )
{ZHUISHI=1;}/*表示母鐘小時 大于 子鐘小時,子鐘正轉*/
else if((u->hour%12)>v->hour && (u->hour%12)-v->hour>6)
{ZHUISHI=2;}/*表示母鐘小時 大于 子鐘小時,子鐘反轉*/
else if((u->hour%12)<v->hour && 6>v->hour-(u->hour%12))
{ZHUISHI=2;}/*表示母鐘小時 小于 子鐘小時,子鐘反轉*/
else if((u->hour%12)<v->hour && v->hour-(u->hour%12)>=6)
{ZHUISHI=1;}/*表示母鐘小時 小于等于 子鐘小時,子鐘正轉*/
return (ZHUISHI);
}
#if (TZ3_OR_TZ9==0)
void must_go_onestep(void)
{
uchar count;
if(MOTO_STOP_FLAG==0)
{
if(MOTO_FLAG==1)
{ MOTO_FLAG=0;
utlk2(0xc0,0x0b);
for(count=0;count<10;count++) //960個脈沖!=96*10
{
p_motor=motor_forward_ew;//初始化指針
motor_runzz_ew(p_motor);
p_timeslave=&hms_variant[1];
eastsou_slave_add(p_timeslave);
push_ram62256();
}
/*for(count=0;count<10;count++)
{
p_motor=motor_forward_sn;//初始化指針
motor_runzz_ew(p_motor);
p_timeslave=&hms_variant[2];
eastsou_slave_add(p_timeslave);
push_ram62256();
}
for(count=0;count<10;count++)
{
p_motor=motor_forward_ew;//初始化指針
motor_runzz_sn(p_motor);
p_timeslave=&hms_variant[3];
westnor_slave_add(p_timeslave);
push_ram62256();
}
for(count=0;count<10;count++)
{
p_motor=motor_forward_sn;//初始化指針
motor_runzz_sn(p_motor);
p_timeslave=&hms_variant[4];
westnor_slave_add(p_timeslave);
push_ram62256();
}*/
utlk2(0xc4,0x0b);
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
}
}
}
void motor_runzz_ew(uchar code *pointer)/*東面及西面機芯一次正走3秒鐘的角度!*/
{
uchar ix;uchar iy;uchar code *temp;
temp=pointer;
if(MOTO_STOP_FLAG==0)
{ utlk2(0xc0,0x0b);
for(iy=0;iy<16;iy++)
{
for(ix=0;ix<6;ix++)
{
XBYTE[MOTO1_PORT]=*pointer;
delay_ms(0x05);
pointer++;
}
pointer=temp;
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
void motor_runzz_sn(uchar code *pointer)/*南面及北面機芯一次正走3秒鐘的角度!*/
{
uchar ix;uchar iy;uchar code *temp;
temp=pointer;
if(MOTO_STOP_FLAG==0)
{ utlk2(0xc0,0x0b);
for(iy=0;iy<16;iy++)
{
for(ix=0;ix<6;ix++)
{
XBYTE[MOTO2_PORT]=*pointer;
delay_ms(0x05);
pointer++;
}
pointer=temp;
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
void motor_runfz_ew(uchar code *pointer)/*東面及西面機芯一次反走3秒鐘的角度!*/
{
uchar ix;uchar iy;uchar code *temp;
temp=pointer;
if(MOTO_STOP_FLAG==0)
{
utlk2(0xc0,0x0b);
for(iy=0;iy<16;iy++)
{
for(ix=0;ix<6;ix++)
{
XBYTE[MOTO1_PORT]=*pointer;
delay_ms(0x05);
pointer++;
}
pointer=temp;
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
void motor_runfz_sn(uchar code *pointer)/*南面及北面機芯一次反走3秒鐘的角度!*/
{
uchar ix;uchar iy;uchar code *temp;
temp=pointer;
if(MOTO_STOP_FLAG==0)
{
utlk2(0xc0,0x0b);
for(iy=0;iy<16;iy++)
{
for(ix=0;ix<6;ix++)
{
XBYTE[MOTO2_PORT]=*pointer;
delay_ms(0x05);
pointer++;
}
pointer=temp;
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -