📄 p_two.c
字号:
//#include <REG54.H>
#include <SST89x5x4.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
#include "config.h"
unsigned char data1,data3,data4,datax,data5,data6;
unsigned char bdata data2;
sbit ext_fg = data2^0;
bit manu_need_stop = 0;
void (code *rr)(unsigned char rc);
void word1(unsigned char rc);
void word2(unsigned char rc);
void word3(unsigned char rc);
void word4(unsigned char rc);
void word5(unsigned char rc);
void word6(unsigned char rc);
void word7(unsigned char rc);
void word8(unsigned char rc);
// for b01
void word9(unsigned char rc);
void word10(unsigned char rc);
void word11(unsigned char rc);
void word12(unsigned char rc);
void word13(unsigned char rc);
void word14(unsigned char rc);
void word15(unsigned char rc);
void word16(unsigned char rc);
void word17(unsigned char rc);
void word1(unsigned char rc) using 1
{
if (rc == 0xa0)
{
datax = rc;
rr = word2;
}
}
void word2(unsigned char rc) using 1
{
if (rc != (id - 1))
rr = word1;
else if (rc == id)
{
rr = word9;
datax = rc;
}
else
{
rr = word3;
datax = datax^rc;
}
}
void word3(unsigned char rc) using 1
{
data1 = rc;
datax = datax^data1;
rr = word4;
}
void word4(unsigned char rc) using 1
{
data2 = rc;
datax = datax^data2;
rr = word5;
}
void word5(unsigned char rc) using 1
{
data3 = rc;
datax = datax^data3;
rr = word6;
}
void word6(unsigned char rc) using 1
{
data4 = rc;
datax = datax^data4;
rr = word7;
}
void word7(unsigned char rc) using 1
{
if (rc != 0xaf)
rr = word1;
else
{
datax = datax^0xaf;
rr = word8;
}
}
void word8(unsigned char rc) using 1
{
rr = word1;
if (rc == datax)
{
if(ext_fg)
{
switch(data2)
{
case 0x03:
set_pre_fg=1;
run_swing_fg=0;
run_seq2_fg=0;
seq[15]=data4;
break;
case 0x07:
call_pre_fg=1;
run_swing_fg=0;
run_seq2_fg=0;
seq[15]=data4;
break;
}
}
else
{
//if (data1)
{
switch(data1 & 0x03)
{
case 0:
if (_testbit_(focus_need_stop))
focu_stop_fg = 1;
break;
case 1: //focu far
focu_far_fg = 1;
focus_need_stop = 1;
break;
case 2: //focu near
focu_near_fg = 1;
focus_need_stop = 1;
break;
default:
break;
}
switch (data1 & 0xc0)
{
case 0:
break;
case 4: //iris open
iris_open_fg = 1;
break;
case 8: //iris close
iris_close_fg = 1;
break;
default:
break;
}
}
//else
{
switch(data2 & 0x1e)
{
case 2: //pan turn right
case 4: //pan turn left
case 8: //tilt up
case 0x10: //tilt down
case 0x0a: //tilt up and pan turn right
case 0x0c: //tilt up and pan left
case 0x12: //tilt down and pan right
case 0x14: //tilt down and pan left
cont_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
run_seq_fg = 0;
seq[12] = data2;
seq[13] = data3;
seq[14] = data4;
break;
case 0:
default:
//seq[12] = 0;
//cont_fg = 1;
//break;
if (_testbit_(manu_need_stop))
{
seq[12] = 0;
cont_fg = 1;
}
break;
}
switch (data2 & 0x60)
{
case 0x20: //zoom tele
zoom_tele_fg = 1;
zoom_need_stop = 1;
break;
case 0x40: //zoo wide
zoom_wide_fg = 1;
zoom_need_stop = 1;
break;
case 0:
if (_testbit_(zoom_need_stop)) zoom_stop_fg = 1;
//if (_testbit_(focus_need_stop)) focu_stop_fg = 1;
//seq[12] = 0;
//cont_fg = 1;
break;
default:
break;
}
}
}
}
}
void word9(unsigned char rc) using 1
{
datax += rc; // send id
rr = word10;
}
void word10(unsigned char rc) using 1
{
datax += rc; // data1
data1 = rc;
rr = word11;
}
void word11(unsigned char rc) using 1
{
datax += rc; // data2
data2 = rc;
rr = word12;
}
void word12(unsigned char rc) using 1
{
datax += rc; // data3
data3 = rc;
rr = word13;
}
void word13(unsigned char rc) using 1
{
datax += rc; // data4
data4 = rc;
rr = word14;
}
void word14(unsigned char rc) using 1
{
datax += rc; // data5
data5 = rc;
rr = word15;
}
void word15(unsigned char rc) using 1
{
datax += rc; // data6
data6 = rc;
rr = word16;
}
void word16(unsigned char rc) using 1
{
if (rc != 0xaf)
rr = word1;
else
{
rr = word17;
datax = ~datax;
}
}
void word17(unsigned char rc) using 1
{
rr = word1;
if (rc != datax) return;
if (ext_fg)
{
if (data1)
{
addon_fg = 1;
seq[10] = data3;
seq[11] = data4;
}
else
{
run_swing_fg = 0;
run_seq_fg = 0;
switch (data2)
{
case 03:
set_pre_fg = 1;
seq[15] = data3+1; //preset_no
break;
case 07:
call_pre_fg = 1;
seq[15] = data3+1;
break;
case 0x11:
run_swing_fg = 1;
seq[17] = data4+1; //first_no
seq[18] = data5+1; // second no
break;
case 0x1f:
run_swing_fg = 0;
break;
case 0x43:
if (data3)
disp_on_fg = 1;
else
disp_off_fg = 1;
break;
case 0x6f:
if (data3)
power_on_fg = 1;
else
power_off_fg = 1;
break;
}
}
}
else
{
// if (word4)
{
switch (data1 & 0x1b)
{
case 1:
focu_far_fg = 1;
focus_need_stop = 1;
break;
case 2:
focu_near_fg = 1;
focus_need_stop = 1;
break;
case 8:
iris_close_fg = 1;
break;
case 16:
iris_open_fg = 1;
break;
default:
if (_testbit_(focus_need_stop))
focu_stop_fg = 1;
break;
}
}
//else
{
switch (data2 & 0x1e)
{
case 2:
case 4:
case 8:
case 16:
case 10:
case 18:
case 12:
case 20:
cont_fg = 1;
run_swing_fg = 0;
run_seq_fg = 0;
seq[12] = data2; //dir
seq[13] = data3; //x_speed
seq[14] = data4; //y_speed
manu_need_stop = 1;
break;
default:
if (_testbit_(manu_need_stop))
{
seq[12] = 0;
cont_fg = 1;
}
break;
}
switch (data2 & 0x60)
{
case 0x20:
zoom_tele_fg = 1;
zoom_need_stop = 1;
break;
case 0x40:
zoom_wide_fg = 1;
zoom_need_stop = 1;
break;
case 0:
if (_testbit_(zoom_need_stop)) zoom_stop_fg = 1;
break;
default:
//if (_testbit_(focus_need_stop)) focu_stop_fg = 1;
//b01_speed_fg = 1;
// seq[12] = 0;
//cont_fg = 1;
break;
}
}
}
}
extern void init_serial(void)
{
PCON = 0x00;SCON = 0x50;
TH2 = 0xff; RCAP2H = 0xff;
#ifdef FOCS_40M
TL2 = 0x7e; RCAP2L = 0x7e;
#else
TL2 = 0xb8; RCAP2L = 0xb8;
#endif
T2CON = 0x34;
rr = word1;
}
void serial_int(void) interrupt 4 using 1
{
ES = 0;
if (_testbit_(RI)) (*rr)(SBUF);
ES = 1;
}
bit power_fg = 1;
extern bit do_set_addon(unsigned char no)
{
switch (no)
{
case F_SCAN_START:
case F_SCAN_END:
no = no;
return 0;
case F_SEQ_SET:
run_seq_fg = 0;
run_seq2_fg = 0;
return 1;
case F_CAM_RESET: //camera reset
addon_fg = 1;
seq[10] = A_RESET;
seq[11] = ON;
return 1;
case F_BLC_OFF:
addon_fg = 1;
seq[10] = A_BLC;
seq[11] = OFF;
return 1;
case F_ZERO_OFF:
addon_fg = 1;
seq[10] = A_ZERO;
seq[11] = OFF;
return 1;
case F_MENU_OFF:
disp_off_fg = 1;
return 1;
case F_DIGI_OFF:
addon_fg = 1;
seq[10] = A_DIGI;
seq[11] = OFF;
return 1;
case F_FOCU_MANU:
addon_fg = 1;
seq[10] = A_FOCU;
seq[11] = MANU;
return 1;
case F_IRIS_MANU:
addon_fg = 1;
seq[10] = A_IRIS;
seq[11] = MANU;
return 1;
case F_WB_MANU:
addon_fg = 1;
seq[10] = A_WB;
seq[11] = MANU;
return 1;
case F_BLACK:
addon_fg = 1;
seq[10] = A_BLACK;
seq[11] = OFF;
return 1;
case F_FREEZE_OFF:
addon_fg = 1;
seq[10] = A_FRZE;
seq[11] = OFF;
return 1;
case F_MIRRO_OFF:
addon_fg = 1;
seq[10] = A_MIRR;
seq[11] = OFF;
return 1;
default:
no = no;
return 0;
}
}
extern bit do_call_addon(unsigned char no)
{
switch (no)
{
case 0x60:
case 0x61:
case 0x63:
run_seq_fg = 0;
run_swing_fg = 0;
run_swing2_fg = 1;
return 1;
case F_SCAN_RUN:
run_swing_fg = 1;
seq[17] = F_SCAN_START; //start point
seq[18] = F_SCAN_END; //end point
return 1;
case F_SCAN_STOP:
run_swing_fg = 0;
run_swing2_fg = 0;
return 1;
case F_SEQ_RUN:
run_seq2_fg = 1;
return 1;
case F_CAM_POWER:
power_fg = !power_fg;
power_on_fg = power_fg;
power_off_fg = !power_fg;
return 1;
case F_BLC_ON:
addon_fg = 1;
seq[10] = A_BLC;
seq[11] = ON;
return 1;
case F_ZERO_ON:
addon_fg = 1;
seq[10] = A_ZERO;
seq[11] = ON;
return 1;
case F_MENU_ON:
disp_on_fg = 1;
return 1;
case F_DIGI_ON:
addon_fg = 1;
seq[10] = A_DIGI;
seq[11] = ON;
return 1;
case F_FOCU_AUTO:
addon_fg = 1;
seq[10] = A_FOCU;
seq[11] = AUTO;
return 1;
case F_IRIS_AUTO:
addon_fg = 1;
seq[10] = A_IRIS;
seq[11] = AUTO;
return 1;
case F_WB_AUTO:
addon_fg = 1;
seq[10] = A_WB;
seq[11] = AUTO;
return 1;
case F_COLOR:
addon_fg = 1;
seq[10] = A_BLACK;
seq[11] = ON;
return 1;
case F_FREEZE_ON:
addon_fg = 1;
seq[10] = A_FRZE;
seq[11] = ON;
return 1;
case F_MIRRO_ON:
addon_fg = 1;
seq[10] = A_MIRR;
seq[11] = ON;
return 1;
default:
no = no;
return 0;
}
//#else
// no = no;
// return 0;
//#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -