📄 protocol.c
字号:
#include "config.h"
void (code *rr)(unsigned char rc);
unsigned char data data1,data3,data5,data6,data7,data8,data9,datax;
unsigned char bdata data2;
sbit ext_fg = data2^0;
bit reset_fg = 0;
bit ptn_stop_fg;
unsigned char bdata data3;
sbit sense_fg1 = data3^7;
sbit swing_fg1 = data3^4;
//sbit power_fg = data3^3;
sbit iris_close_fg1 = data3^2;
sbit iris_open_fg1 = data3^1;
sbit focus_near_fg1 = data3^0;
unsigned char bdata data4;
sbit focus_far_fg1 = data4^7;
sbit zoom_wide_fg1 = data4^6;
sbit zoom_tele_fg1 = data4^5;
sbit down_fg = data4^4;
sbit up_fg = data4^3;
sbit left_fg = data4^2;
sbit right_fg = data4^1;
sbit ext_fg2 = data4^0;
bit power_fg = 1;
bit ti_fg = 0;
extern void init_alarm(void)
{
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0x7e; RCAP2L = 0x7e;
rr = alarm_word1;
PCON = 0x00;SCON = 0x50;
T2CON = 0x34;
}
extern void init_serial(void)
{
unsigned char tmp;
tmp = 0;
PRO_HI = 1;
_nop_();
_nop_();
_nop_();
if (PRO_HI)
tmp = 0;
else
tmp = 2;
PRO_LO = 1;
_nop_();
_nop_();
_nop_();
if (!PRO_LO) tmp ++;
test_fg = 0;
switch (tmp)
{
case 0: //P24
TH2 = 0xfd; RCAP2H = 0xfd;
TL2 = 0xf7; RCAP2L = 0xf7;
rr = p24_word1;
rs = p24_word1;
break;
case 1: //P48
TH2 = 0xfe; RCAP2H = 0xfe;
TL2 = 0xfc; RCAP2L = 0xfc;
rr = p96_word1;
rs = p96_word1;
break;
case 2: //P96
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0x7e; RCAP2L = 0x7e;
rr = p96_word1;
rs = p96_word1;
break;
default: //test
#ifndef EYEVIEW_D
test_fg = 1;
#else
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0x7e; RCAP2L = 0x7e;
rr = b01_word1;
rs = b01_word1;
#endif
break;
}
PCON = 0x00;SCON = 0x50;
T2CON = 0x34;
}
void serial_int(void) interrupt 4 using 1
{
ES = 0;
SIGNAL = 1;
if (_testbit_(RI)) (*rr)(SBUF);
//SIGNAL = 0;
if (_testbit_(TI))
{
ti_fg = 1;
SIGNAL = 1;
}
ES = 1;
}
extern bit do_set_addon(unsigned char no)
{
//#ifndef DIS660
switch (no)
{
case F_SCAN_START:
case F_SCAN_END:
no = no;
return 0;
case F_SEQ2_SET:
case F_SEQ_SET:
run_seq_fg = 0;
run_seq2_fg = 0;
return 1;
#ifndef DIS660
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;
case F_RESET2:
addon_fg = 1;
seq[10] = A_RESET2;
return 1;
case F_ICR:
addon_fg = 1;
seq[10] = A_ICR;
seq[11] = MANU;
return 1;
#ifdef EYEVIEW_D
case F_MENU:
addon_fg = 1;
seq[10] = A_MENU;
seq[11] = OFF;
return 1;
#endif
#endif
default:
no = no;
return 0;
}
}
extern bit do_call_addon(unsigned char no)
{
//#ifndef DIS660
switch (no)
{
case 0x22:
seq[15] = 1;
call_pre_fg = 1;
return 1;
case 0x62:
case 0x61:
case 0x63:
run_seq_fg = 0;
run_swing_fg = 0;
run_swing2_fg = 1;
return 1;
case 0x60:
run_seq_fg = 0;
run_swing_fg = 0;
run_swing2_fg = 0;
return 1;
case 0x5d:
seq[15] = 51;
set_pre_fg = 1;
return 1;
case 0x5e:
seq[15] = 52;
set_pre_fg = 1;
return 1;
case 0x64:
reset_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_seq_fg = 1;
run_seq2_fg = 1;
return 1;
case F_SEQ2_RUN:
run_seq2_fg = 1;
return 1;
#ifndef DIS660
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;
case F_RESET2:
addon_fg = 1;
seq[10] = A_RE;
seq[11] = 0;
return 1;
case F_ICR:
addon_fg = 1;
seq[10] = A_ICR;
seq[11] = AUTO;
return 1;
#ifdef EYEVIEW_D
case F_MENU:
addon_fg = 1;
seq[10] = A_MENU;
seq[11] = ON;
return 1;
#endif
#endif
default:
no = no;
return 0;
}
//#else
// no = no;
// return 0;
//#endif
}
extern void init_watchdog(void)
{
#ifdef SYNCMOS
WDTC = 0x87;
#else
#ifdef STC89C54RD
WDTC = 0x06;
#else
WDTC = 0x86;
#endif
#endif
}
extern void reset_wdog(void)
{
#ifdef SYNCMOS
WDTC |= 0x40;
#else
#ifdef STC89C54RD
WDTC |= 0x10;
#else
WDTC |= 0x40;
#endif
#endif
_nop_();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -