/* IRF TX for NIKON-CAMERA 2012/9/8 By@M.K Target : PIC12F629 4MHz :3V control CONFIG : 0x3184 mikroC Pro V5.4 GP0=Steart SW GP2=IFR_LED Last MOD 9/17 14:42 Used ROM 128 ------------------------ From data: http://www.sbprojects.com/projects/nikon/index.php +--//----+ +-----+ +-----+ +-----+ | | 28000us| | 1580us | | 3580us | | --+ 2000us +---//---+400us+---//---+400us+---//---+400us+--- */ sbit SW at GP4_bit; // Start ON char i; void IFR_TX1() //2000 USec { for (i=0;i<76;i++) { GPIO=7; Delay_us(11); GPIO=0; Delay_us(5); } Delay_us(13); } void IFR_TX2() //401 USec { for (i=0;i<15;i++) { GPIO=7; Delay_us(11); GPIO=0; Delay_us(5); } } void interrupt() { //interrupt over if (INTCON.GPIF==1) INTCON.GPIF=0; } void main() { OSCCAL=0x38; //tun frequency CMCON =0b00000111; //un use Compalater TRISIO=0b00011000; //I/O set GPIO =0; WPU =0b00010000; OPTION_REG=0b00000000; // TMR0 Prescaler 1/2 TMR0 1/250=1/500 IOC =0b00010000; //set of INTERRUPT-ON-CHANGE GPIO REGISTER // while (1) { TRISIO=0xff; INTCON=0b10001000; //GIE.GPIE [un use timer0] asm SLEEP; // Stop INTCON=0; TRISIO=0b00011000; // main Camera Control IFR_TX1(); // 2mS on-off Delay_ms(28); // 28mS Wait IFR_TX2(); //400US on-off Delay_us(1580); IFR_TX2(); Delay_us(3580); IFR_TX2(); //End of TX while(GP4_bit==0); // SW over! } }