:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 55
|
|
نشاط [ abdalalabu5 ]
قوة السمعة:0
|
|
02-12-2013, 05:21 PM
المشاركة 1
|
|
انا قمت بتحميل هذا الكود واشتغل مية المية وبعد فترة ارجعت احمله ولكن لم يشتغل قمت بقياس عرض نباضات فوجدت انه يقرا في get space اما ارقام قليلة جدا او ارقام عالية وبسال
ب لا اعرف ما سبب ارجوكم
هذا كود لريموت mp3
كود:
//sbit ir_in at RA0_bit; // Infrared receiver input
//sbit ir_in_direction at TRISA0_bit; // Infrared receiver input
int x,y;
unsigned int retint,lcd;
unsigned char ir_byte,count,bouton;
unsigned char ir_result[6];
char txt[10];
char txt2[10];
void interrupt()
{ if(intcon.f2==1)
{
count++;
intcon=0b0100000;
TMR0L=0; }
}
int get_mark(){
TMR0L= 0; count=0;
t0con.f7=1;
for(;!portc.f2;){}
// lcd=count;
//intToStr(lcd,txt);
//lcd_out(1,1,txt);
t0con.f7=0;
//lcd_out(2,1,"getmark");
retint=2*(TMR0L+(count*256));
return retint;
}
unsigned int get_space(){
TMR0L= 0; count=0;
t0con.f7=1;
for(;portc.f2;){}
t0con.f7=0;
retint=2*(TMR0L+(count*256));
return retint;
}
unsigned char get_nec_byte(void){
char n;
unsigned char ir_byte;
unsigned int temp_ir;
for(n=0 ; n<8 ; n++){
temp_ir = get_mark();
temp_ir = get_space();
ir_byte >>= 1;
if ((temp_ir > 1200) && (temp_ir < 2300)){
ir_byte += 0x80;
}
}
return ir_byte;
}
void nec_read(void){
unsigned int temp_nec;
unsigned int count_byte;
while(portc.f2){}
// lcd_out(2,1," ireach here");
temp_nec = get_mark();
intToStr(temp_nec,txt);
lcd_out(1,1,txt);
if ((temp_nec > 7500) && (temp_nec < 9500)){ // expect 9mS mark
temp_nec = get_space();
inttostr(temp_nec,txt2);
lcd_out(2,1,txt2);
// expect 4.5mS space
for(count_byte = 0 ; count_byte < 4 ; count_byte++ ){
ir_result[count_byte] = get_nec_byte();
}
}
}
void main() {
TRISc=0xFF;PORTc=0;
trisb=0;
portb=0;
adcon1=0;;
t0con=0b01000000;
intcon=0b10100000;TMR0L = 0;
TRISd = 0; // PORTB is output
Lcd_Init(&PORTd); // Initialize LCD connected to PORTB
Lcd_Cmd(Lcd_CLEAR); // Clear display
lcd_out(1,1,"lcd_run");
delay_ms(2000);
lcd_cmd(lcd_clear);
portb.f7=1;
delay_ms(2000);
portb.f7=0;
while(1){
ir_result[0]=0;
ir_result[1]=0;
ir_result[2]=0;
ir_result[3]=0;
nec_read();
if(ir_result[0]=~ir_result[1]){
bouton = ir_result[2];
switch(bouton){
case 0x16: portb=~portb;break;
case 0x0C: portb=~portb;break;
case 0x18: portb=~portb;break;
case 0x5E: portb=~portb;break;
case 0x08: portb=~portb;break;
case 0x1C:portb=~portb;break;
case 0x5A: portb=~portb;break;
case 0x52: portb=~portb;break;
case 0x4A: portb=~portb;break;
case 0x42: portb=~portb;break; //Button 3
default: break;
}
}
}
}
التعديل الأخير تم بواسطة : abdalalabu5 بتاريخ 02-12-2013 الساعة 05:27 PM
|