📄 p_star_2.c
字号:
/*
history;
V 1.00 build 2003.05.24 by zh
V 2.00 build 2003.06.21 by zh
V 2.01 build 2003.06.27 by zh
*/
/*
#include <REG54.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
*/
#include "config.h"
//unsigned char data data4,data5,data6,data7,data8,data9,datax;
unsigned char data pp = 0; // for seq point
bit start_set_fg = 0;
//void (code * rr)(unsigned char rc);
void (code *ext)(unsigned char rc);
void b01_word1(unsigned char rc);
void b01_word2(unsigned char rc);
void b01_word3(unsigned char rc);
void b01_word4(unsigned char rc);
void b01_word5(unsigned char rc);
void b01_word6(unsigned char rc);
void b01_word7(unsigned char rc);
void b01_word8(unsigned char rc);
void b01_word9(unsigned char rc);
void b01_word10(unsigned char rc);
void b01_word11(unsigned char rc);
void b01_word11x(unsigned char rc);
void b01_word12(unsigned char rc);
void b01_word12x(unsigned char rc);
void b01_word1s(unsigned char rc);
void b01_word1(unsigned char rc) using 1
{
if (rc == 0xa0) rr = b01_word2;
if (rc == 0xfa)
{
rr = alarm_word2;
rs = b01_word1;
}
}
void b01_word2(unsigned char rc) using 1
{
if (rc != id )
rr = b01_word1;
else
{
rr = b01_word3;
datax = rc;
}
}
void b01_word3(unsigned char rc) using 1
{
datax += rc;
rr = b01_word4;
}
void b01_word4(unsigned char rc) using 1
{
data4 = rc;
datax += rc;
rr = b01_word5;
}
void b01_word5(unsigned char rc) using 1
{
data5 = rc;
datax += rc;
if ((data5 & 0x01) == 0x01)
{
if (data5 == 0x23)
ext = b01_word1s;
else if (data4)
ext = b01_word12x;
else
ext = b01_word11x;
}
else
{
if (data4)
ext = b01_word12;
else
ext = b01_word11;
}
rr = b01_word6;
}
void b01_word6(unsigned char rc) using 1
{
data6 = rc;
datax += rc;
rr = b01_word7;
}
void b01_word7(unsigned char rc) using 1
{
data7 = rc;
datax += rc;
rr = b01_word8;
}
void b01_word8(unsigned char rc) using 1
{
data8 = rc;
datax += rc;
rr = b01_word9;
}
void b01_word9(unsigned char rc) using 1
{
data9 = rc;
datax += rc;
rr = b01_word10;
}
void b01_word10(unsigned char rc) using 1
{
if (rc != 0xaf)
rr = b01_word1;
else
{
datax = ~datax;
rr = ext;//word11;
}
}
void b01_word11(unsigned char rc) using 1
{
rr = b01_word1;
if (rc == datax)
{
{
switch (data5)
{
case 2:
case 4:
case 8:
case 16:
case 10:
case 18:
case 12:
case 20:
cont_fg = 1;
run_swing_fg = 0;
run_swing2_fg = 0;
run_seq_fg = 0;
seq[12] = data5; //dir
seq[13] = data6; //x_speed
seq[14] = data7; //y_speed
break;
case 0x20:
//len_fg = 1;
zoom_tele_fg = 1;
zoom_need_stop = 1;
break;
case 0x40:
//len_fg = 1;
zoom_wide_fg = 1;
zoom_need_stop = 1;
break;
default:
if (_testbit_(zoom_need_stop)) {zoom_stop_fg = 1;}//len_fg = 1;
if (_testbit_(focus_need_stop)) {focu_stop_fg = 1;}//len_fg = 1;
seq[12] = 0;
cont_fg = 1;
break;
}
}
SIGNAL = 0;
}
}
void b01_word12(unsigned char rc) using 1
{
rr = b01_word1;
if (rc == datax)
{
//if (data4)
{
switch (data4)
{
case 1:
focu_far_fg = 1;
//len_fg = 1;
focus_need_stop = 1;
break;
case 2:
focu_near_fg = 1;
//len_fg = 1;
focus_need_stop = 1;
break;
case 8:
//len_fg = 1;
iris_close_fg = 1;
break;
case 16:
//len_fg = 1;
iris_open_fg = 1;
break;
}
}
SIGNAL = 0;
}
}
// for ext command
void b01_word11x(unsigned char rc) using 1
{
rr = b01_word1;
if (rc == datax)
{
{
run_swing_fg = 0;
run_swing2_fg = 0;
run_seq_fg = 0;
switch (data5)
{
case 03:
set_pre_fg = 1;
seq[15] = data6+1; //preset_no
break;
case 0x05:
del_pre_fg = 1;
seq[15] = data6 + 1;
break;
case 07:
call_pre_fg = 1;
seq[15] = data6+1;
break;
case 0x11:
if (data7 != 0x33)
{
run_swing_fg = 1;
seq[17] = data7+1; //first_no
seq[18] = data8+1; // second no
}
else
run_swing2_fg = 1;
break;
case 0x19:
if (data7 == 0x01)
{
set_pre_fg = 1;
seq[15] = F_SCAN_START;
seq[17] = F_SCAN_START; //start point
}
if (data8 == 0x02)
{
set_pre_fg = 1;
seq[15] = F_SCAN_END;
seq[18] = F_SCAN_END; //end point
}
if (data6 == 0x33)
{
run_swing2_fg = 1;
}
if(data6 == 0xff)
{
run_swing2_fg = 0;
}
break;
case 0x1b:
run_swing2_fg = 1;
break;
case 0x1f:
run_swing_fg = 0;
run_swing2_fg = 0;
break;
case 0x21:
run_seq3_fg = 1;
seq[48] = data6+1; //seq_no
break;
case 0x23:
if (data7 == 0x80)
{
seq[48] = data6+1;
start_set_fg = 1;
pp = 0;
}
else if (data7 == 0x40)
{
set_seq_fg = 1;
if (pp != 48) seq[pp] = 0;
pp = 0;
}
else
{
if (_testbit_(start_set_fg)) pp = 0;
seq[pp] = data7+1;
pp++;
seq[pp] = data8;
pp++;
seq[pp] = data9;
pp++;
}
break;
/*
case 0x23:
switch (data7)
{
case 0x80:
seq[48] = data6+1;
pp = 0;
break;
case 0x40:
set_seq_fg = 1;
if (pp != 48) seq[pp] = 0;
pp = 0;
break;
default:
seq[pp] = data7+1;
pp++;
seq[pp] = data8;
pp++;
seq[pp] = data9;
pp++;
break;
}
break;
*/
case 0x43:
if (data6)
disp_on_fg = 1;
else
disp_off_fg = 1;
break;
case 0x6f:
if (data6)
power_on_fg = 1;
else
power_off_fg = 1;
break;
}
}
SIGNAL = 0;
}
}
void b01_word1s(unsigned char rc) using 1
{
rr = b01_word1;
if (rc == datax)
{
switch (data7)
{
case 0x80:
//seq[48] = data6+1;
pp = 0;
break;
case 0x40:
set_seq_fg = 1;
if (pp != 48) seq[pp] = 0;
pp = 0;
break;
default:
seq[pp] = data7+1;
pp++;
seq[pp] = data8;
pp++;
seq[pp] = data9;
pp++;
break;
}
SIGNAL = 0;
}
}
void b01_word12x(unsigned char rc) using 1
{
rr = b01_word1;
if (rc == datax)
{
//if (data4)
{
addon_fg = 1;
seq[10] = data6;
seq[11] = data7;
}
SIGNAL = 0;
}
}
/*
extern void init_serial(void)
{
PCON = 0x00;SCON = 0x50;
TH2 = 0xff; RCAP2H = 0xff;
#ifdef FOCS_40M
TL2 = 0x7e; RCAP2L = 0x7e;
#else // for 22.1184
TL2 = 0xb8; RCAP2L = 0xb8;
#endif
T2CON = 0x34;
rr = b01_word1;
}
void serial_int(void) interrupt 4 using 1
{
ES = 0;
if (_testbit_(RI)) (*rr)(SBUF);
ES = 1;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -