|
#include <stdio.h> #include <AT89X52.H> #include<INTRINS.H> //###############################gloable variable#######################################// unsigned char scode[7]={0x00,0xff,0xaa,0x55,0x01,0x10,0x11}; //ir send code unsigned char nbyte; //###############################gloable function#######################################// // void delay( unsigned int period ) { int i,j; for( i = 0; i < period; i++ ) { for(j=0;j<10;j++); } } //##############################initial SYSTEM #######################################// void init_port() { P0 = 0x00; P1 = 0xFE; P2 = 0x01; P3 = 0xFF; } //initial timer2 void init_timer2(void) { int i; T2MOD = 0x02; T2CON = 0x04; RCAP2L = 0xff-78-78; RCAP2H = 0xff; for(i=1000;i>0;i--); TR2=0; } //##############################irsend subprogram begin#######################################// //send start bit void startbit() { int i; TR2 = 1; for(i=500;i>0;i--); TR2 = 0; T2 = 0; for(i=2250;i>0;i--); TR2 = 1; for(i=500;i>0;i--); } //send bit1 void bit1() { int i; TR2 = 0; T2 = 0; for(i=500;i>0;i--); TR2 = 1; for(i=4000;i>0;i--); } //send bit0 void bit0() { int i; TR2 = 0; T2 = 0; for(i=500;i>0;i--); TR2 = 1; for(i=500;i>0;i--); } //send link bit void lbit() { int i; TR2 = 0; T2 = 0; for(i=2000;i>0;i--); TR2 = 1; for(i=500;i>0;i--); } //send end bit void endbit() { int i; TR2 = 0; T2 = 0; for(i=3000;i>0;i--); TR2 = 1; for(i=500;i>0;i--); TR2 = 0; T2 = 0; } //send code void irsend(unsigned char *data1,unsigned char nbyte ) { unsigned char temp; int i,j; startbit(); for(j = 0;j < nbyte;++j) //send code byte number is in nbyte. { temp = *data1++; //send code is in scode[nbyte] for(i = 0;i < 8;i++) { if(temp>=0x80) { bit1(); } else { bit0(); } temp<<=1; } if(j<nbyte) lbit(); } endbit(); } //##############################irsend subprogram end#######################################//
//main program void main(void) { init_port(); //intial I/O init_timer2(); //intial timer0 while(1) { irsend(scode,4); delay(1000); } } |