📄 p_kony.c
字号:
/*
A01 protocol
V 1.00 build 2003.05.24 by ssln
*/
#include <REG54.H>
#include <INTRINS.H>
#include "protocol.h"
#include "kernel.h"
#include "config.h"
unsigned char data data3,data4,data5;
unsigned char data pp = 0; // for seq point
unsigned char bdata dir_fg = 0;
sbit r_fg = dir_fg^1;
sbit l_fg = dir_fg^2;
sbit u_fg = dir_fg^3;
sbit d_fg = dir_fg^4;
unsigned char idata q[48];
unsigned char asc2hex(unsigned char asc)
{
return ((asc < 0x3a) ? (asc - 0x30) : (asc - 0x37));
}
/* 返回值为1则不当做预置点功能,返回值为0则是预置点功能 */
/* 用设置预置点的方法来实现附加功能*/
extern bit do_set_addon(unsigned char no)
{
no = no;
return 0;
}
/* 用调用预置点的方法来实现附加功能*/
extern bit do_call_addon(unsigned char no)
{
no = no;
return 0;
}
extern void init_serial(void)
{
PCON = 0x00;SCON = 0xd0;
#ifdef FOCS_40M
// for 4800
/*
TH2 = 0xfe; RCAP2H = 0xfe;
TL2 = 0xfc; RCAP2L = 0xfc;
*/
AD9 = 1;
if (AD9)
{
// for 20.8k
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0xc4; RCAP2L = 0xc4;
}
else
{
// for 19.2k
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0xbe; RCAP2L = 0xbe;
}
#else // for 22.1184
/*
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0x70; RCAP2L = 0x70;
*/
AD9 = 1;
if (AD9)
{
// for 20.8k
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0xde; RCAP2L = 0xde;
}
else
{
// for 19.2k
TH2 = 0xff; RCAP2H = 0xff;
TL2 = 0xdc; RCAP2L = 0xdc;
}
#endif
T2CON = 0x34;
{
unsigned char i;
for (i=0;i<48;i++) q[i] = 0;
}
SM2 = 1;
}
unsigned char data rc;
unsigned char data rr = 0;
void serial_int(void) interrupt 4 using 1
{
ES = 0;
if (_testbit_(RI))
{
rc = SBUF;
rr ++;
switch (rr)
{
case 1:
if ((rc != id) && (rc != 0)) rr = 0;
break;
case 2:
if (rc != 0x77) rr = 0;
break;
case 3:
data3 = rc;
rr = 0;
switch (rc)
{
case '1':
case '2':
case '3':
case '4':
dir_fg = 0;
rr = 3;// for manual control
break;
case '5':
iris_open_fg = 1;
break;
case '6':
iris_close_fg = 1;
break;
case '7':
zoom_wide_fg = 1;
zoom_tele_fg = 0;
zoom_change_fg = 0;
zoom_need_stop = 1;
break;
case '8':
zoom_tele_fg = 1;
zoom_wide_fg = 0;
zoom_change_fg = 0;
zoom_need_stop = 1;
break;
case '9':
focu_far_fg = 1;
focus_need_stop = 1;
break;
case 'A':
focu_near_fg = 1;
focus_need_stop = 1;
break;
case 'B':
power_on_fg = 1;
break;
case 'C':
power_off_fg = 1;
break;
case 'M':
disp_on_fg = 1;
break;
case 'N':
disp_off_fg = 1;
break;
case 'F':
run_swing2_fg = 1;
break;
case 'G':
run_swing2_fg = 0;
break;
case 0x80:
if (_testbit_(zoom_need_stop))
{
zoom_stop_fg = 1;
zoom_wide_fg = 0;
zoom_tele_fg = 0;
}
if (_testbit_(focus_need_stop)) focu_stop_fg = 1;
seq[12] = 0;
cont_fg = 1;
break;
case 0x59:
case 0x4c:
rr = 5; // for preset
break;
case 0x5a:
pp = 0;
rr = 7; // for seq
break;
case 'W':
//rr = 12; // for add on
break;
}
break;
case 4:
data4 = rc;
if (data4 > 0x4a)
{
r_fg = 1; // right
data4 -= 0x4a;
//data4 -= 0x12;
}
else if (data4 > 0x0a) // && data4 < 0x13)
{
l_fg = 1; // left
data4 -= 0x0a;
//data4 += 0x3e;
//data4 += 0x2e;
}
else
data4 = 0;
data4 <<= 3;
break;
case 5:
rr = 0;
data5 = rc;
if (data5 > 0x8a)
{
d_fg = 1; // down
//data5 -= 0x62;
data5 -= 0x8a;
}
//else if (data5 > 0x0a && data5 < 0x13)
else if (data5 > 0x0a)
{
u_fg = 1; // up
data5 -= 0x0a;
//data5 += 0x2e;
//data5 += 0x1e;
}
else
data5 = 0;
data5 <<= 3;
run_swing_fg = 0;
run_swing2_fg = 0;
run_seq_fg = 0;
cont_fg = 1;
seq[13] = data4;
seq[14] = data5;
seq[12] = dir_fg;
break;
case 6:
data4 = asc2hex(rc);
break;
case 7:
data5 = asc2hex(rc);
seq[15] = (data4 *10) + data5;
if (data3 == 0x4c)
call_pre_fg = 1;
else
set_pre_fg = 1;
rr = 0;
break;
case 8:
data4 = asc2hex(rc);
break;
case 9:
data5 = asc2hex(rc);
//seq[pp]
q[pp] = (data4 *10) + data5;
//if ((seq[pp] == 0) || (pp >= 48))
if ((q[pp] == 0) || (pp >= 48))
{
run_seq_fg = 1;
//seq[48] = 1;
rr = 0;
}
else
{
pp ++;
}
break;
case 10:
//seq[pp] = asc2hex(rc);
q[pp] = asc2hex(rc);
//if ((seq[pp] == 0) || (pp >= 48))
if ((q[pp] == 0) || (pp >= 48))
{
run_seq_fg = 1;
//seq[48] = 1;
rr = 0;
}
else
{
pp ++;
}
break;
case 11:
data4 = asc2hex(rc);
break;
case 12:
data5 = asc2hex(rc);
//seq[pp] = (data4 *10) + data5;
q[pp] = (data4 *10) + data5;
//if ((seq[pp] == 0) || (pp >= 48))
if ((q[pp] == 0) || (pp >= 48))
{
run_seq_fg = 1;
//seq[48] = 1;
rr = 0;
}
else
{
pp ++;
rr = 7;
}
break;
case 13:
data4 = rc;
break;
case 14:
data5 = rc;
#ifndef DIS_560
seq[11] = data5;
switch (data4)
{
case 1:
addon_fg = 1;
seq[10] = A_RESET;
seq[11] = ON;
break;
case 2:
addon_fg = 1;
seq[10] = A_BLC;
break;
case 3:
addon_fg = 1;
seq[10] = A_FRZE;
break;
case 4:
addon_fg = 1;
seq[10] = A_MIRR;
break;
case 5:
if (data5)
disp_on_fg = 1;
else
disp_off_fg = 1;
break;
case 6:
addon_fg = 1;
seq[10] = A_DIGI;
break;
case 7:
addon_fg = 1;
seq[10] = A_FOCU;
seq[11] = !seq[11];
break;
case 8:
addon_fg = 1;
seq[10] = A_ZERO;
break;
case 10:
addon_fg = 1;
seq[10] = A_IRIS;
if (data5 == 1)
seq[11] = 0;
else
seq[11] = 1;
break;
}
#endif
// break;
default:
rr = 0;
break;
}
if (rr == 0)
SM2 = 1;
else
SM2 = 0;
}
ES = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -