📄 cam_ss.c
字号:
/*
Library for control sony camera
V 1.00 build 2003.05.08
support camera list:
SS-800'S-H(232)
SS-800'S(232)
SS-801HD(TTL)
SS-804HD(TTL)
*/
// V1.01 build 2003.05.29 预置点操作关所有中断
#include <REG54.H>
#include <INTRINS.H>
#include "kernel.h"
#include "camera.h"
#include "cam_func.h"
#define ZOOM_POS 0x0200
bit icr_fg = 0;
bit icr_need_fg = 0;
bit icr_manu_fg = 0;
bit iris_manu_fg = 0;
unsigned char data cam_id;
void cam_send_command(unsigned char cam[])
{
unsigned char cs;
cam_send_byte(cam[0]);
cs = cam[0];
cam_send_byte(cam[1]);
cs += cam[1];
cam_send_byte(cam[2]);
cs += cam[2];
cam_send_byte(cam[3]);
cs += cam[3];
cam_send_byte(cam_id);
cs += cam_id;
cam_send_byte(cs);
//delay_xms(50);
}
void cam_inquiry_state(void)
{
register unsigned char i,j = 30;
while (j--)
{
if (cam_receive_byte() != 0xc5) continue;
for (i=39;i<47;i++) seq[i] = cam_receive_byte();
}
}
extern void cam_zoom_focus_direct(void)
{
unsigned char idata tmp[] =
{
0xc5,0x00,0x00,0x00,0x00,0x00
};
cam_focus_manu();
delay_xms(30);
EA = 0;
tmp[1] = 0x49;
tmp[2] = pre[5] & 0x1f;
tmp[3] = pre[6];
cam_send_command(tmp);
EA = 1;
delay_xms(100);
EA = 0;
tmp[1] = 0x4a;
tmp[2] = pre[8] & 0x1f;
tmp[3] = pre[9];
cam_send_command(tmp);
EA = 1;
delay_xms(100);
EA = 0;
tmp[1] = 0x4b;
tmp[2] = 0;
tmp[3] = pre[7];
cam_send_command(tmp);
EA = 1;
delay_xms(100);
EA = 0;
tmp[1] = 0x4d;
tmp[2] = 0;
tmp[3] = 0;
cam_send_command(tmp);
EA = 1;
delay_xms(100);
}
unsigned char code cam_inq_zoom_pos_[] = { 0xc5,0x36,0x00,0x00,0x00,0x00};
unsigned char code cam_inq_focu_pos_[] = { 0xc5,0x37,0x00,0x00,0x00,0x00};
void cam_inq_zoom_pos(void)
{
cam_send_command(cam_inq_zoom_pos_);
}
extern void cam_set_preset(void)
{
EA = 0;
cam_send_command(cam_inq_focu_pos_);
cam_inquiry_state();
seq[8] = seq[42];
seq[9] = seq[43];
delay_xms(20);
cam_inq_zoom_pos();
cam_inquiry_state();
seq[5] = seq[42];
seq[6] = seq[43];
seq[7] = seq[44];
EA = 1;
set_curlimit(1);
/*
if (seq[44])
set_curlimit(16);
else
set_curlimit(((seq[42] << 8) | seq[43]) / ZOOM_POS);
*/
}
unsigned char code cam_read_id_[] = {0xc5,0xcc,0x00,0x00,0x00,0x00};
unsigned char code cam_power_on_[] = {0xc5,0x3a,0x00,0x00,0x00,0x00};
unsigned char code cam_power_off_[] = {0xc5,0x3e,0x00,0x00,0x00,0x00};
unsigned char code cam_zoom_stop_[] = {0xc5,0x5f,0x0c,0x00,0x00,0x00};
unsigned char code cam_zoom_tele_[] = {0xc5,0x5f,0x01,0x00,0x00,0x00};
unsigned char code cam_zoom_wide_[] = {0xc5,0x5f,0x03,0x00,0x00,0x00};
unsigned char code cam_d_zoom_on_[] = {0xc5,0xaa,0x6e,0x01,0x00,0x00};
unsigned char code cam_d_zoom_off_[] = {0xc5,0xaa,0x6e,0x00,0x00,0x00};
unsigned char code cam_focus_stop_[] = {0xc5,0x5f,0x0c,0x00,0x00,0x00};
unsigned char code cam_focus_far_[] = {0xc5,0x5f,0x38,0x00,0x00,0x00};
unsigned char code cam_focus_near_[] = {0xc5,0x5f,0x39,0x00,0x00,0x00};
unsigned char code cam_focus_auto_[] = {0xc5,0xaa,0x73,0x00,0x00,0x00};
unsigned char code cam_focus_manu_[] = {0xc5,0xaa,0x73,0x01,0x00,0x00};
unsigned char code cam_iris_up_[] = {0xc5,0x5f,0x42,0x00,0x00,0x00};
unsigned char code cam_iris_down_[] = {0xc5,0x5f,0x43,0x00,0x00,0x00};
unsigned char code cam_wb_auto_[] = {0xc5,0xaa,0x65,0x00,0x00,0x00};
unsigned char code cam_wb_manu_[] = {0xc5,0xaa,0x65,0x04,0x00,0x00};
unsigned char code cam_ae_auto_[] = {0xc5,0xaa,0x60,0x00,0x00,0x00};
unsigned char code cam_ae_manu_[] = {0xc5,0xaa,0x60,0x02,0x00,0x00};
unsigned char code cam_backlight_on_[] = {0xc5,0xaa,0x6d,0x01,0x00,0x00};
unsigned char code cam_backlight_off_[]= {0xc5,0xaa,0x6d,0x00,0x00,0x00};
unsigned char code cam_reverse_on_[] = {0xc5,0xaa,0x7f,0x01,0x00,0x00};
unsigned char code cam_reverse_off_[] = {0xc5,0xaa,0x7f,0x00,0x00,0x00};
unsigned char code cam_picture_off_[] = {0xc5,0xaa,0x71,0x01,0x00,0x00};
unsigned char code cam_picture_bw_[] = {0xc5,0xaa,0x71,0x00,0x00,0x00};
unsigned char code cam_display_on_[] = {0xc5,0xaa,0x64,0x24,0x00,0x00};
unsigned char code cam_display_off_[] = {0xc5,0xaa,0x64,0x00,0x00,0x00};
//maybe use
//unsigned char code cam_set_digi_[] = {0xc5,0x52,0x06,0x00,0x00,0x00};
extern void cam_focus_auto() {cam_send_command(cam_focus_auto_);}
extern void cam_focus_manu() {cam_send_command(cam_focus_manu_);}
extern void cam_focus_far() {
cam_focus_manu();
delay_xms(12);
cam_send_command(cam_focus_far_);
}
extern void cam_zoom_wide() {cam_send_command(cam_zoom_wide_);}
extern void cam_zoom_tele() {cam_send_command(cam_zoom_tele_);}
extern void cam_zoom_stop() {
cam_send_command(cam_zoom_stop_);
delay_xms(24);
set_level_limit();
delay_xms(24);
cam_focus_auto();
}
extern void cam_focus_near() {
cam_focus_manu();
delay_xms(24);
cam_send_command(cam_focus_near_);
}
extern void cam_focus_stop() {
cam_send_command(cam_focus_stop_);
}
extern void cam_iris_open() {cam_send_command(cam_iris_up_);delay_xms(12);cam_send_command(cam_zoom_stop_);}
extern void cam_iris_close() {cam_send_command(cam_iris_down_);delay_xms(12);cam_send_command(cam_zoom_stop_);}
extern void cam_power_on() {cam_send_command(cam_power_on_);}
extern void cam_power_off() {cam_send_command(cam_power_off_);}
extern void cam_ae_auto() {iris_manu_fg = 0;cam_send_command(cam_ae_auto_);}
extern void cam_ae_manu() {iris_manu_fg = 1;cam_send_command(cam_ae_manu_);}
extern void cam_freeze_on() {}
extern void cam_freeze_off() {}
extern void cam_backlight_on() {cam_send_command(cam_backlight_on_);}
extern void cam_backlight_off() {cam_send_command(cam_backlight_off_);}
extern void cam_reverse_on() {cam_send_command(cam_reverse_on_);}
extern void cam_reverse_off() {cam_send_command(cam_reverse_off_);}
extern void cam_display_on() {cam_send_command(cam_display_on_);}
extern void cam_display_off() {cam_send_command(cam_display_off_);}
extern void cam_d_zoom_on() {cam_send_command(cam_d_zoom_on_);}
extern void cam_d_zoom_off() {cam_send_command(cam_d_zoom_off_);}
extern void cam_icrshot_on() {}
extern void cam_icrshot_off() {}
extern void cam_wb_auto() {cam_send_command(cam_wb_auto_);}
extern void cam_wb_manu() {cam_send_command(cam_wb_manu_);}
extern void cam_picture_off() {cam_send_command(cam_picture_off_);}
extern void cam_picture_bw() {cam_send_command(cam_picture_bw_);}
extern void cam_get_id(void)
{
unsigned char tmp1,tmp2;
unsigned char t = 10;
cam_send_command(cam_read_id_);
cam_inquiry_state();
tmp1 = seq[42];
delay_xms(50);
while(t--)
{
cam_send_command(cam_read_id_);
cam_inquiry_state();
tmp2 = seq[42];
delay_xms(50);
if (tmp1 == tmp2)
{
cam_id = tmp1;
return;
}
tmp1 = tmp2;
}
while(1);
}
extern void cam_icr_set(void)
{
}
extern void set_level_limit(void)
{
set_curlimit(1);
/*
EA = 0;
cam_inq_zoom_pos();
cam_inquiry_state();
EA = 1;
if (seq[44])
set_curlimit(16);
else
set_curlimit(((seq[42] << 8) | seq[43]) / ZOOM_POS);
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -