?? tz_clock.c
字號:
void eastsou_slave_add(COMPLEX * ux)
{ ux->second+=3;
if(ux->second>=60)
{ ux->second=0;
ux->minute+=1;
if(ux->minute>=60)
{
ux->minute=0;
ux->hour++;
ux->hour%=12;
}
}
}
void eastsou_slave_sub(COMPLEX * ux)
{ ux->second-=3;
if(ux->second>=0xfd)
{ ux->second=57;
ux->minute-=1;
if(ux->minute==0xff)
{
ux->minute=59;
ux->hour-=1;
if(ux->hour==0xff)
ux->hour=11;
ux->hour%=12;
}
}
}
void westnor_slave_add(COMPLEX * ux)
{ ux->second+=3;
if(ux->second>=60)
{ ux->second=0;
ux->minute+=1;
if(ux->minute>=60)
{
ux->minute=0;
ux->hour++;
ux->hour%=12;
}
}
}
void westnor_slave_sub(COMPLEX * ux)
{ ux->second-=3;
if(ux->second>=0xfd)
{ ux->second=57;
ux->minute-=1;
if(ux->minute==0xff)
{
ux->minute=59;
ux->hour-=1;
if(ux->hour==0xff)
ux->hour=11;
ux->hour%=12;
}
}
}
#elif (TZ3_OR_TZ9==1)
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<4;count++)
{
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<4;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<4;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<4;count++)
{
p_motor=motor_forward_sn;//初始化指針
motor_runzz_sn(p_motor);
p_timeslave=&hms_variant[4];
westnor_slave_add(p_timeslave);
push_ram62256();
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
}
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<10;iy++)
{
for(ix=0;ix<8;ix++)
{
XBYTE[MOTO1_PORT]=*pointer;
delay_ms(0x03);
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<10;iy++)
{
for(ix=0;ix<8;ix++)
{
XBYTE[MOTO2_PORT]=*pointer;
delay_ms(0x03);
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<10;iy++)
{
for(ix=0;ix<8;ix++)
{
XBYTE[MOTO1_PORT]=*pointer;
delay_ms(0x03);
++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;
utlk2(0xc0,0x0b);
if(MOTO_STOP_FLAG==0)
{ for(iy=0;iy<10;iy++)
{
for(ix=0;ix<8;ix++)
{
XBYTE[MOTO2_PORT]=*pointer;
delay_ms(0x03);
++pointer;
}
pointer=temp;
}
XBYTE[MOTO1_PORT]=0x00;
XBYTE[MOTO2_PORT]=0x00;
utlk2(0xc4,0x0b);
}
}
void eastsou_slave_add(COMPLEX * ux)
{ ux->second+=3;
if(ux->second>=60)
{ ux->second=0;
ux->minute+=1;
if(ux->minute>=60)
{
ux->minute=0;
ux->hour++;
ux->hour%=12;
}
}
}
void eastsou_slave_sub(COMPLEX * ux)
{ ux->second-=3;
if(ux->second>=0xfd)
{ ux->second=57;
ux->minute-=1;
if(ux->minute==0xff)
{
ux->minute=59;
ux->hour-=1;
if(ux->hour==0xff)
ux->hour=11;
ux->hour%=12;
}
}
}
void westnor_slave_add(COMPLEX * ux)
{ ux->second+=3;
if(ux->second>=60)
{ ux->second=0;
ux->minute+=1;
if(ux->minute>=60)
{
ux->minute=0;
ux->hour++;
ux->hour%=12;
}
}
}
void westnor_slave_sub(COMPLEX * ux)
{ ux->second-=3;
if(ux->second>=0xfd)
{ ux->second=57;
ux->minute-=1;
if(ux->minute==0xff)
{
ux->minute=59;
ux->hour-=1;
if(ux->hour==0xff)
ux->hour=11;
ux->hour%=12;
}
}
}
#endif
void bs_on_off(void)
{ uchar js_count; //連續發送6次報時動作
if(MP3_FLAG==0)//表示是固化報時
{
if((p_timemu->minute==59 && ZS_FLAG==0))
{
ZS_FLAG=1;
if(function_bs()==1)
{ for(js_count=0;js_count<6;js_count++)
{ XBYTE[0x800d]=0xf1;BS_PIN=0;
utlk_bs(0x80,p_timemu->hour+1);
delay_ms(30);
//utlk_bs(0x80,0);
}//打開擴大機
}
}
/*else if(p_timemu->minute==29 && ZS_FLAG==0)
{
ZS_FLAG=1;
if(function_bs()==1)
{ for(js_count=0;js_count<6;js_count++)
{ XBYTE[0x800d]=0xf1;BS_PIN=0;
utlk_bs(0x80,p_timemu->hour);//送出現在的小時及30分鐘!
delay_ms(30);
utlk_bs(0x80,30);
}
}//打開擴大機
}*/
else if(p_timemu->minute==1){XBYTE[0x800d]=0xf0;BS_PIN=1;ZS_FLAG=0;}//關斷擴大機
//else if(p_timemu->minute==31){XBYTE[0x800d]=0xf0;BS_PIN=1;ZS_FLAG=0;}//關斷擴大機
}
}
//向外部ram里壓入15個字節分別是母時分秒+4個子時分秒+報時上下限+0xf0/0xf1+0x00/0xee
void push_ram62256(void) //發送15個數據給網管!
{ uchar temp1;uchar xdata *p_pointer;
p_pointer=RAM62256;
*p_pointer=p_timemu->hour;
p_pointer++;
*p_pointer=p_timemu->minute;
p_pointer++;
*p_pointer=p_timemu->second;
p_pointer++;
p_timeslave=&hms_variant[1];
for (temp1=0;temp1<4;temp1++)
{
*p_pointer=p_timeslave->hour;
p_pointer++;
*p_pointer=p_timeslave->minute;
p_pointer++;
p_timeslave++;
}
p_timeslave=&hms_variant[5];
*p_pointer=p_timeslave->hour;
p_pointer++;
p_timeslave=&hms_variant[6];
*p_pointer=p_timeslave->hour;
p_pointer++;
*p_pointer=XBYTE[0x800d];
p_pointer++;
if(GPS_FLAG==1){*p_pointer=0xee;}
else{*p_pointer=0x00;}
}
void outram_topc(void)
{ uchar xdata *temp;uchar js;
temp=RAM62256;//為指針,如果寫成temp=XBYTE[0x8000]表示是內容
for(js=0;js<15;js++)
{
SBUF=*temp;while(TI==0);TI=0;
temp++;
}
}
void initial_gps3100(void)
{utlk2(0xc4,0x0b);}
void initial_bs3100(void)
{utlk_bs(0xc4,0x0b);}
void initial_device3100(void)
{utlk_device(0xc4,0x0b);}
/*發送TX1,TX2的16位數據到MAX3100的進端,同時接收數據送RX1,RX2*/
uchar utlk1(uchar tx1,uchar tx2)
{
uchar rx1=0;
MAX3100_GPS=0;/*使MAX3100的片選端有效*/
rx1=byte8(tx1);/*發送并接收高八位數據*/
byte8(tx2);/*發送并接收低八位數據*/
MAX3100_GPS=1;/*使MAX3100的片選端無效*/
return rx1;/*取回接收到的數據準備用*/
}
uchar utlk2(uchar tx1,uchar tx2)
{
uchar rx2=0;
MAX3100_GPS=0;/*使MAX3100的片選端有效*/
byte8(tx1);/*發送并接收高八位數據*/
rx2=byte8(tx2);/*發送并接收低八位數據*/
MAX3100_GPS=1;/*使MAX3100的片選端無效*/
return rx2;/*取回接收到的數據準備用*/
}
uchar utlk3(uchar tx1,uchar tx2)
{
uchar rx2=0;
MAX3100_GPS=0;/*使MAX3100的片選端有效*/
byte8(tx1);/*發送并接收高八位數據*/
rx2=byte8(tx2);/*發送并接收低八位數據*/
MAX3100_GPS=1;/*使MAX3100的片選端無效*/
return rx2;/*取回接收到的數據準備用*/
}
void utlk_bs(uchar tx1,uchar tx2)
{
MAX3100_BS=0;/*使MAX3100的片選端有效*/
byte8(tx1);/*發送并接收高八位數據*/
byte8(tx2);/*發送并接收低八位數據*/
MAX3100_BS=1;/*使MAX3100的片選端無效*/
}
void utlk_device(uchar tx1,uchar tx2)
{
MAX3100_DEVICE=0;/*使MAX3100的片選端有效*/
byte8(tx1);/*發送并接收高八位數據*/
byte8(tx2);/*發送并接收低八位數據*/
MAX3100_DEVICE=1;/*使MAX3100的片選端無效*/
}
uchar byte8(uchar x)/*從DIN端移位輸出8位數據,并從DOUT端接收8位數據*/
{
uchar i;/*8位傳送,循壞8次*/
out_data=x;/*把X的值放入可位尋址的變量out_data中*/
MAX3100_DOUT=1;/*確保8052能夠從端口MAX3100_DOUT接收數據*/
for(i=0;i<8;i++)
{
MAX3100_DIN=DIN_DATA;
MAX3100_SCLK=1;/*時鐘端MAX3100_SCLK的上跳沿*/
out_data<<=1;
DOUT_DATA=MAX3100_DOUT;/*時鐘端跳正跳變后讀取數據位*/
MAX3100_SCLK=0;/*時鐘端MAX3100_SCLK下跳沿*/
}
x=out_data;
return x;
}
void send_device_4byte(void)
{
utlk_device(0x80,0x30);
delay_ms(30);
utlk_device(0x80,p_timemu->second);
delay_ms(30);
utlk_device(0x80,p_timemu->minute);
delay_ms(30);
utlk_device(0x80,p_timemu->hour);
delay_ms(30);
utlk_device(0x80,p_timemu->hour+p_timemu->minute+p_timemu->second);
delay_ms(950);
initial_gps3100();
}
void send_device_16byte(void)//0x5c+年高+年低+月+日+周+母時+母分+母秒+子時+子分+子秒+路數+地址+狀態+累加和
{ uchar xiaoyan=0;
if(COMPARE_FLAG==0)
{ utlk_device(0x80,0x5c);
delay_ms(5);
utlk_device(0x80,20);
delay_ms(5);
utlk_device(0x80,8);
delay_ms(5);
utlk_device(0x80,7);
delay_ms(5);
utlk_device(0x80,18);
delay_ms(5);
utlk_device(0x80,5);
delay_ms(5);
utlk_device(0x80,p_timemu->hour);
delay_ms(5);
utlk_device(0x80,p_timemu->minute);
delay_ms(5);
utlk_device(0x80,p_timemu->second);
delay_ms(5);
utlk_device(0x80,0);
delay_ms(5);
utlk_device(0x80,0);
delay_ms(5);
utlk_device(0x80,0);
delay_ms(5);
utlk_device(0x80,1);
delay_ms(5);
utlk_device(0x80,1);
delay_ms(5);
utlk_device(0x80,0);
delay_ms(5);
xiaoyan=20+8+7+18+5+(p_timemu->hour)+(p_timemu->minute)+(p_timemu->second)+1+1;
utlk_device(0x80,xiaoyan);
delay_ms(5);
//delay_ms(800);
initial_gps3100();
COMPARE_FLAG=1;
}
}
void delay_ms(uint x)
{
uchar j;
while(x--)
{
for(j=0;j<125;j++)
{;}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -