?? cam_sanyo.c
字號(hào):
#include "config.h"
#ifndef _CONFIG
sfr WDTC = 0x8f;
sbit ARXD = P1^2;
sbit ATXD = P1^3;
#endif
#ifdef FOCS_40M
void cam_bit_delays(void)
{
register unsigned char j;
for (j=0;j<55;j++);
_nop_();_nop_();
}
void cam_bit_delayr(void)
{
register unsigned char j;
for (j=0;j<53;j++);
}
void half_bit_delay(void)
{
register unsigned char j;
for (j=0;j<30;j++);
}
#else
void cam_bit_delays(void)
{
register unsigned char j;
for (j=0;j<59;j++);
_nop_();
}
void cam_bit_delayr(void)
{
register unsigned char j;
for (j=0;j<56;j++);
_nop_();
}
void half_bit_delay(void)
{
register unsigned char j;
for (j=0;j<32;j++);
}
#endif
extern void cam_send_byte(unsigned char cam_data)
{
register unsigned char i;
EA = 0;
ATXD = 0;
_nop_();
for (i=0;i<8;i++)
{
cam_bit_delays();
cam_data >>= 1;
ATXD = CY;
}
cam_bit_delays();
EA = 1;
ATXD = 1;
cam_bit_delays();
ATXD = 1;
cam_bit_delays();
cam_bit_delays();
}
extern unsigned char cam_receive_byte()
{
unsigned int i = 0;
unsigned char cam_data;
EA = 0;
reset_wdog();
do
{
ARXD = 1;
if (!ARXD)
{
half_bit_delay();
ARXD = 1;
if (!ARXD)
{
cam_data = 0;
_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
for(i=0;i<8;i++)
{
cam_bit_delayr();
cam_data >>= 1;
ARXD = 1;
if (ARXD) cam_data |= 0x80;
}
goto sr_exit;
}
}
}while ((++i) <10000);
sr_exit:
EA = 1;
return cam_data;
}
//#define DIS_327
#define ZOOM_POS 0x0200 // for 327
//#define ZOOM_POS 0x0200 // for 122
bit icr_fg = 0;
bit icr_need_fg = 0;
bit icr_manu_fg = 0;
bit iris_manu_fg = 0;
//bit fg = 1;
//bit bw_fg = 0;
unsigned char idata cam_id;
//unsigned char data cam_id;
//unsigned char data cr[9];
extern void cam_send_command(unsigned char *p)
{
unsigned char cs = 0;
while ((*p != 0xff) && (*(p+1) != 0xff))
{
cam_send_byte(*p);
cs += *p;
p++;
}
cs = 0x100 - cs;
cam_send_byte(cs);
cam_send_byte(0xff);
}
/*void cam_inquiry_state(void)
{
register unsigned char i;
for (i=39;i<47;i++)
seq[i] = cam_receive_byte();
}*/
//unsigned char code cam_power_on_[] = {0xa0,0x01,0x04,0x00,0x00,0xff};
//unsigned char code cam_power_off_[] = {0xa0,0x01,0x04,0x00,0x00,0xff};
unsigned char code cam_zoom_stop_[] = {0xa0,0x02,0x07,0x00,0xff};
unsigned char code cam_zoom_tele_[] = {0xa0,0x02,0x05,0x00,0xff};
unsigned char code cam_zoom_wide_[] = {0xa0,0x02,0x06,0x00,0xff};
unsigned char code cam_d_zoom_on_[] = {0xa0,0x02,0x18,0x04,0x00,0xff};
unsigned char code cam_d_zoom_off_[] = {0xa0,0x02,0x18,0x00,0x00,0xff};
unsigned char code cam_icrshot_on_[] = {0xa0,0x28,0x01,0x00,0xff};
unsigned char code cam_icrshot_off_[] = {0xa0,0x28,0x00,0x00,0xff};
unsigned char code cam_focus_stop_[] = {0xa0,0x03,0x07,0x00,0xff};
unsigned char code cam_focus_far_[] = {0xa0,0x03,0x05,0x00,0xff};
unsigned char code cam_focus_near_[] = {0xa0,0x03,0x06,0x00,0xff};
unsigned char code cam_focus_auto_[] = {0xa0,0x03,0x00,0x00,0xff};
unsigned char code cam_focus_manu_[] = {0xa0,0x03,0x01,0x00,0xff};
unsigned char code cam_iris_up_[] = {0xa0,0x05,0x15,0x00,0xff};
unsigned char code cam_iris_down_[] = {0xa0,0x05,0x16,0x00,0xff};
unsigned char code cam_wb_auto_[] = {0xa0,0x04,0x00,0x00,0xff};
unsigned char code cam_wb_manu_[] = {0xa0,0x04,0x01,0x00,0xff};
unsigned char code cam_ae_auto_[] = {0xa0,0x05,0x00,0x00,0xff};
unsigned char code cam_ae_manu_[] = {0xa0,0x05,0x01,0x00,0xff};
unsigned char code cam_backlight_on_[] = {0xa0,0x06,0x33,0x00,0xff};
unsigned char code cam_backlight_off_[] = {0xa0,0x06,0x00,0x00,0xff};
unsigned char code cam_reverse_on_[] = {0xa0,0x0d,0x01,0x00,0xff};
unsigned char code cam_reverse_off_[] = {0xa0,0x0d,0x00,0x00,0xff};
/*unsigned char code cam_freeze_on_[] = {0xa0,0x01,0x04,0x62,0x00,0xff};
unsigned char code cam_freeze_off_[] = {0xa0,0x01,0x04,0x62,0x00,0xff};*/
/*unsigned char code cam_picture_off_[] = {0xa0,0x28,0x00,0x00,0xff};
unsigned char code cam_picture_bw_[] = {0xa0,0x28,0x01,0x00,0xff};
unsigned char code cam_display_on_[] = {0xa0,0x01,0x04,0x15,0x00,0xff};
unsigned char code cam_display_off_[] = {0xa0,0x01,0x04,0x15,0x00,0xff};*/
unsigned char code cam_inq_zoom_pos_[] = {0x80,0x02,0x09,0x00,0xff};
unsigned char code cam_inq_focus_pos_[] = {0x80,0x03,0x09,0x00,0xff};
//unsigned char code cam_inq_gain_pos_[] = {0x80,0x09,0x04,0x4C,0xff};
extern void cam_focus_auto()
{
f_auto_fg = 1;
cam_send_command(cam_focus_auto_);
}
extern void cam_focus_manu()
{
f_auto_fg = 0;
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_ae_manu();
delay_xms(30);
cam_send_command(cam_iris_up_);
}
extern void cam_iris_close()
{
cam_ae_manu();
delay_xms(30);
cam_send_command(cam_iris_down_);
}
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_wb_auto()
{
cam_send_command(cam_wb_auto_);
}
extern void cam_wb_manu()
{
cam_send_command(cam_wb_manu_);
}
extern void cam_picture_off()
{
/*bw_fg = 0;
cam_send_command(cam_picture_off_);*/
}
extern void cam_picture_bw()
{
/*bw_fg = 1;
cam_send_command(cam_picture_bw_);*/
}
extern void cam_get_id(void)
{
cam_id = 1;
}
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()
{/*cam_send_command(cam_freeze_on_);*/}
extern void cam_freeze_off()
{/*cam_send_command(cam_freeze_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_off(void)
{
cam_send_command(cam_icrshot_off_);
}
extern void cam_icrshot_auto(void)
{
//cam_send_command(cam_icrshot_off_);
}
extern void cam_reset2() {}
extern void cam_icrshot_on()
{
cam_send_command(cam_icrshot_on_);
}
extern void cam_inq_zoom_pos()
{
register unsigned char j = 50;
register unsigned char i= 0;
do
{
cam_send_command(cam_inq_zoom_pos_);
}while((j--) && (cam_receive_byte() != 0xc0));
if (j != 0)
{
for (i=40;i<47;i++)
seq[i] = cam_receive_byte();
}
}
extern void cam_inq_focus_pos()
{
register unsigned char j = 30;
register unsigned char i= 0;
do
{
cam_send_command(cam_inq_focus_pos_);
}while((j--) && (cam_receive_byte() != 0xc0));
for (i=40;i<47;i++)
seq[i] = cam_receive_byte();
}
extern void cam_icr_set(void)
{/*unsigned char cr[8];
cam_focus_manu();
delay_xms(500);
cr[0] = 0xa0;
cr[1] = 0x03;
cr[2] = 0x09;
cr[3] = pre[8];
cr[4] = pre[9];
cr[5] = pre[10];
cr[6] = 0x00;
cr[7] = 0xff;
cam_send_command(cr);
delay_xms(500);*/}
extern void set_level_limit(void)
{
}
extern void cam_zoom_focus_direct(void)
{
unsigned char cr[8];
cr[0] = 0xa0;
cr[1] = 0x02;
cr[2] = 0x09;
cr[3] = pre[5] & 0x0f;
cr[4] = pre[6] & 0x0f;
cr[5] = pre[7] & 0x0f;
cr[6] = 0x00;
cr[7] = 0xff;
cam_send_command(cr);
delay_xms(30);
cam_focus_manu();
delay_xms(50);
cr[0] = 0xa0;
cr[1] = 0x03;
cr[2] = 0x09;
cr[3] = pre[8] & 0x0f;
cr[4] = pre[9] & 0x0f;
cr[5] = pre[10] & 0x0f;
cr[6] = 0x00;
cr[7] = 0xff;
cam_send_command(cr);
delay_xms(50);
}
extern void cam_set_preset(void)
{ cam_inq_zoom_pos(); // read zoom position
//cam_inquiry_state();
pre[5] = seq[42];
pre[6] = seq[43];
pre[7] = seq[44];
delay_xms(50);
cam_inq_focus_pos(); // read focus position
//cam_inquiry_state();
pre[8] = seq[42];
pre[9] = seq[43];
pre[10] = seq[44];
}
extern void cam_re_reset()
{
}
extern void cam_menu_on()
{}
extern void cam_menu_off()
{}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -