📄 p_san450.c
字号:
#include <REG54.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
#include "config.h"
extern void init_serial(void)
{
PCON = 0x00;SCON = 0x50;
TH2 = 0xff; RCAP2H = 0xff;
#ifdef FOCS_40M
TL2 = 0x7d; RCAP2L = 0x7d;
#else
TL2 = 0xb8; RCAP2L = 0xb8;
#endif
T2CON = 0x34;
}
bit power_fg = 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_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: //diaplay off
disp_off_fg = 1;
return 1;
case F_DIGI_OFF:
addon_fg = 1; //camera digital off
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;
#endif
default:
no = no;
return 0;
}
/*
#else
no = no;
return 0;
#endif
*/
}
extern bit do_call_addon(unsigned char no)
{
//#ifndef DIS660
switch (no)
{
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;
#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;
#endif
default:
no = no;
return 0;
}
//#else
// no = no;
// return 0;
//#endif
}
unsigned char recv_code;
unsigned char rr;
unsigned char idata word2,word3,word6,word7,word8,word9,wordx,wordy;
unsigned char idata word4,word5;
unsigned char idata xsp;//,ysp;//for alec
void serial_int(void) interrupt 4 using 1
//void po_san450_g2(void) using 1
{
ES = 0;
if (_testbit_(RI))
{
recv_code = SBUF;
rr++;
switch (rr)
{
case 1:
if ((recv_code & 0xc0) != 0xc0)rr = 0;
if ((recv_code & 0x03) != ((id >>6) & 0x03))rr = 0;
wordx = recv_code;
break;
case 2:
if ((recv_code & 0xc0) != 0x80)rr = 0;
if (recv_code != (id & 0x3f | 0x80))rr = 0;
wordx += recv_code;
break;
case 3:
if ((recv_code & 0x80) != 0x0)rr = 0;
word3 = recv_code;
wordx += word3;
wordy = wordx;
(recv_code > 0x49 ) ? (rr = 4) : (rr = 3);
break;
case 4:
rr = 0;
if (recv_code == ((~wordx)&0x7f))
{
run_swing_fg = 0;
run_swing2_fg = 0;
switch (word3)
{
case 0x01:
case 0x02:
case 0x03:
case 0x04:
case 0x05:
seq[12] = 0;
cont_fg = 1;
if (_testbit_(zoom_need_stop)) zoom_stop_fg = 1;
if (_testbit_(focus_need_stop)) focu_stop_fg = 1;
break;
case 0x08:
iris_open_fg = 1;
break;
case 0x09:
iris_close_fg = 1;
break;
case 0x0a:
focu_near_fg = 1;
focus_need_stop = 1;
break;
case 0x0b:
focu_far_fg = 1;
focus_need_stop = 1;
break;
case 0x0c:
zoom_wide_fg = 1;
zoom_need_stop = 1;
break;
case 0x0d:
zoom_tele_fg = 1;
zoom_need_stop = 1;
break;
case 0x12:
addon_fg = 1; //camera digital off
//seq[10] = A_DIGI;
//seq[11] = ON;
break;
case 0x13:
addon_fg = 1; //camera digital off
//seq[10] = A_DIGI;
//seq[11] = OFF;
break;
case 0x20:
run_swing_fg = 0;
seq[12] = 0;
cont_fg = 1;
break;
case 0x1e:
power_on_fg = 1;
break;
case 0x1f:
power_off_fg = 1;
break;
case 0x32:
case 0x34:
run_swing_fg = 1;
break;
case 0x31:
case 0x33:
default:
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;
}
}
break;
case 5:
if ((recv_code & 0x80) != 0x0)rr = 0;
word4 = recv_code;
wordy += word4;
xsp = word4 * 10;
break;
case 6:
rr = 0;
if (recv_code == ((~wordy)&0x7f))
{
run_swing_fg = 0;
run_swing2_fg = 0;
run_seq_fg = 0;
switch (word3)
{
case 0x50:
cont_fg = 1;
seq[12] = 0x08;//dir
seq[14] = xsp;//x_speed
seq[13] = 0x00;
break;
case 0x51:
cont_fg = 1;
seq[12] = 0x10;//dir
seq[14] = xsp;//x_speed
seq[13] = 0x00;
break;
case 0x52:
cont_fg = 1;
seq[12] = 0x04;//dir
seq[14] = 0x00;
seq[13] = xsp;//y_speed
break;
case 0x53:
cont_fg = 1;
seq[12] = 0x02;//dir
seq[14] = 0x00;
seq[13] = xsp;//y_speed
break;
case 0x58:
set_pre_fg = 1;
seq[15] = word4;
break;
case 0x59:
call_pre_fg = 1;
seq[15] = word4;
break;
case 0x60:
run_swing_fg = 1;
break;
default:
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;
}
}
break;
default:
rr = 0;
break;
}
}
ES = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -