📄 p_apple.c
字号:
/*
history;
V 1.00 build 2003.06.04 by xsh
*/
#include <REG54.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
#include "config.h"
unsigned char data rr = 0;
unsigned char data recv_code;
//unsigned char data datad0;
//unsigned char data data23;
//unsigned char data data00;
//unsigned char data data1,data2,data3;
unsigned char data data4,data5,data6;
//unsigned char bdata word5;
//sbit ext_fg = word5^0;
//unsigned char data pp = 0; // for seq point
bit start_set_fg = 0;
bit power_fg = 1;
//bit manu_fg = 0;
//bit need_stop_fg = 0;
/* 返回值为1则不当做预置点功能,返回值为0则是预置点功能 */
/* 用设置预置点的方法来实现附加功能*/
extern bit do_set_addon(unsigned char no)
{
switch (no)
{
case F_SCAN_START:
case F_SCAN_END:
case F_SEQ_SET:
no = no;
return 0;
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;
default:
no = no;
return 0;
}
}
/* 用调用预置点的方法来实现附加功能*/
extern bit do_call_addon(unsigned char no)
{
switch (no)
{
case F_SCAN_RUN://51
run_swing_fg = 1;
seq[17] = F_SCAN_START; //start point
seq[18] = F_SCAN_END; //end point
return 1;
case F_SCAN_STOP://52
run_swing_fg = 0;
return 1;
case F_SEQ_RUN://53
run_seq2_fg = 1; //运行轨迹标志,调用第一至第十六个预置点
return 1;
case F_CAM_POWER://54
power_fg = !power_fg;
power_on_fg = power_fg;
power_off_fg = !power_fg;
return 1;
case F_BLC_ON: //55 //背光补偿开
addon_fg = 1;
seq[10] = A_BLC;
seq[11] = ON;
return 1;
case F_ZERO_ON: //56 //低照度开
addon_fg = 1;
seq[10] = A_ZERO;
seq[11] = ON;
return 1;
case F_MENU_ON: //57 //屏显开
disp_on_fg = 1;
return 1;
case F_DIGI_ON: //58 //数字变倍开
addon_fg = 1;
seq[10] = A_DIGI;
seq[11] = ON;
return 1;
case F_FOCU_AUTO://59
addon_fg = 1;
seq[10] = A_FOCU; //聚焦自动
seq[11] = AUTO;
return 1;
case F_IRIS_AUTO://60 // 光圈自动
addon_fg = 1;
seq[10] = A_IRIS;
seq[11] = AUTO;
return 1;
case F_WB_AUTO://61 // 白平衡自动
addon_fg = 1;
seq[10] = A_WB;
seq[11] = AUTO;
return 1;
case F_COLOR: //64 //黑白模式
addon_fg = 1;
seq[10] = A_BLACK;
seq[11] = ON;
return 1;
case F_FREEZE_ON: //62 //图象冻结
addon_fg = 1;
seq[10] = A_FRZE;
seq[11] = ON;
return 1;
case F_MIRRO_ON: //63 //镜像开
addon_fg = 1;
seq[10] = A_MIRR;
seq[11] = ON;
return 1;
default:
no = no;
return 0;
}
}
unsigned char data id_hi,id_lo,h5,h6,h7,l3,l4,l5;
extern void init_serial(void)
{
id_hi = id / 10;
id_lo = id % 10;
h5 = id_hi*5 + 1;
h6 = id_hi*6 + 1;
h7 = id_hi*7 + 1;
l3 = id_lo + 3;
l4 = id_lo + 4;
l5 = id_lo + 5;
PCON = 0x00;SCON = 0x50;
TH2 = 0xff; RCAP2H = 0xff;
#ifdef FOCS_40M
TL2 = 0x7d; RCAP2L = 0x7d;
#else // for 22.1184
TL2 = 0xb8; RCAP2L = 0xb8;
#endif
T2CON = 0x34;
}
void serial_int(void) interrupt 4 using 1
{
ES = 0;
if(_testbit_(RI))
{
recv_code = SBUF;
rr++;
switch(rr)
{
case 1:
//datad0 = recv_code;
//if(datad0 != 0xd0) rr = 0;
if (recv_code != 0xd0) rr = 0;
break;
case 2:
//data23 = recv_code;
//if(data23 != 0x23) rr = 0;
if (recv_code != 0x23) rr = 0;
break;
case 3:
//data00 = recv_code;
/* if(data00 == 0xd1)
{
if(manu_fg == 0)
{
}
else
{
rr = 0;
manu_fg = 0;
seq[12] = 0;
seq[13] = 0;
seq[14] = 0;
cont_fg = 1;
zoom_stop_fg = 1;
focu_stop_fg = 1;
}
}*/
//if(data00 != 0x00) rr = 0;
if (recv_code != 0x00) rr = 0;
break;
case 4:
//data1 = recv_code;
//if((data1 != h5) && (data1 != h6) && (data1 != h7)) rr = 0;
if((recv_code != h5) && (recv_code != h6) && (recv_code != h7)) rr = 0;
break;
case 5:
//data2 = recv_code;
//data2 = recv_code / 16;
//if((data2 != l3) && (data2 != l4) && (data2 != l5)) rr = 0;
recv_code >>= 4;
if((recv_code != l3) && (recv_code != l4) && (recv_code != l5)) rr = 0;
//break;
case 6:
//data3 = recv_code;
break;
case 7:
//data4 = recv_code;
//if(data4)
if (recv_code)
{
data4 = recv_code;
switch(data4)
{
/* case 1: //left
case 2: //right
case 3: //down
case 4: //up
case 5: //left_down
case 6: //left_up
case 7: //right_down
case 8: //right_up
cont_fg = 1;
seq[12] = data4; //dir
run_seq_fg = 0;
run_swing_fg = 0;
break; */
case 9://far
focu_far_fg = 1;
focus_need_stop = 1;
// manu_fg = 1;
rr = 0;
break;
case 10://near
focu_near_fg = 1;
focus_need_stop = 1;
// manu_fg = 1;
rr = 0;
break;
case 11://close
iris_close_fg = 1;
rr = 0;
break;
case 12://open
iris_open_fg = 1;
rr = 0;
break;
case 13://tele
zoom_tele_fg = 1;
zoom_need_stop = 1;
// manu_fg = 1;
//need_stop_fg = 1;
rr = 0;
break;
case 14://wide
zoom_wide_fg = 1;
zoom_need_stop = 1;
// manu_fg = 1;
//need_stop_fg = 1;
rr = 0;
break;
/* case 55:
set_pre_fg = 1;
case 57:
call_pre_fg = 1;*/
//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;
}//end switch
}//end if
else //(data4 == 0 conditon)
{ //if(data3 == 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;
rr = 0;
//}
}
break;
case 8:
data5 = recv_code;
switch(data4)
{
case 1://left
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 4;
seq[13] = data5 >> 1;
seq[14] = 0x00;
break;
case 2://right
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 2;
seq[13] = data5 >> 1; //x_sp
seq[14] = 0x00; //y_sp
break;
case 3://down
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 16;
seq[13] = 0x00;
seq[14] = data5 >> 1;
break;
case 4://up
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 8;
seq[13] = 0x00;
seq[14] = data5 >> 1; //y_sp
break;
case 0x37:
set_pre_fg = 1;
seq[15] = data5; //pre_no
rr = 0;
break;
case 0x39:
call_pre_fg = 1;
seq[15] = data5;
rr = 0;
break;
default:
break;
}
break;
case 9:
data6 = recv_code;
switch(data4)
{
case 5://down_left
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 18; //dir
seq[13] = data5 >> 1; // x_sp
seq[14] = data6 >> 1; // y_sp
break;
case 6://up_left
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 12; //dir
seq[13] = data5 >> 1; // x_sp
seq[14] = data6 >> 1; // y_sp
break;
case 7://down_right
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 20; //dir
seq[13] = data5 >> 1; // x_sp
seq[14] = data6 >> 1; // y_sp
break;
case 8://up_rignt
cont_fg = 1;
// manu_fg = 1;
//need_stop_fg = 1;
run_seq2_fg = 0;
run_swing_fg = 0;
seq[12] = 10; //dir
seq[13] = data5 >> 1; // x_sp
seq[14] = data6 >> 1; // y_sp
break;
default:
break;
}
break;
default:
rr = 0;
break;
}//end switch(rr)
}//end if(_testbit_(RI))
ES = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -