/* IRF TX for NIKON-CAMERA 2012/9/14 By@M.K Target : PIC12F683 4MHz :3V control CONFIG : 0x00D4 mikroC Pro V5.4 GP4=Steart SW GP0/1/2=IFR_LED =38.5KHz Last MOD 9/16 13/42 Used ROM 129 ---------------------------------------------------------- From data: http://www.sbprojects.com/projects/nikon/index.php +--//----+ +-----+ +-----+ +-----+ | | 28000us| | 1580us | | 3580us | | --+ 2000us +---//---+400us+---//---+400us+---//---+400us+--- -- repeated a second time after 63.2ms:unuse */ // GP0/1/2 bit; IRF-LED // GP4=Start SW char i; void IFR_TX1() //2000 USec { for (i=0;i<76;i++) { GPIO=7; Delay_us(11); //13 clocks:38.5KHz GPIO=0; Delay_us(5); } Delay_us(13); } void IFR_TX2() //400(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(){ // OSCCON=0b01100000; //4MHz CMCON0=0b00000111; //un use Compalater ANSEL =0; TRISIO=0b00011000; //I/O set 0b00001000; GPIO =0; WPU =0b00010000; //PULL-UP enabled OPTION_REG.NOT_GPPU=0; IOC =0b00010000; //set of INTERRUPT-ON-CHANGE GPIO REGISTER while (1) { TRISIO=0xff; INTCON=0b10001000; //GIE.GPIE 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 } }