السلام عليكم فعلا انك افدتنى وبارك الله فيك
استفسار بسيط
اولا:
Case 32 ' for the order 32 pule for 1 sec will appear at portc.0
PORTC.0=1
DelayMS 500
PORTC.0=0
DelayMS 500
انت تقصد البورت سى 1 وليس الورت 0
هذا الكود سوف يعطى بلس ثم يتوقف
لماذا عملت تاخير وانا كنت اريد بلس دائم على البورت سى1 فى حالة استقبال 32(هل تقصد شئ اخر او انا لم افهم الكود)
ثانيا:
Case Else ' if you do not know your the code of your key put it here PORTC.1=1
EndSelect
هذا الكود اعتقد ليس ظرورى لانة سوف يعطى بلس فى حالة اى اشارة
اخير هل من الضرورى ان اقوم بكتابة هذا الكود :
ALL_DIGITAL =true
فائدتة ان يجعل كل الارجل رقمية (هل المفهوم هذا صحيح ام انا مخطئ)
اسف جداا لانى كترت عليك
الخلاصة ما رايك فى الكود النهائى
وهو اذا استقبل البورت بى 7 تردد تساوى 32 فان البورت سى1 يخرج بلس دائم
ليد مثلاا (اى يبقى اليد والع دائما وليس مدة معينة)
واذا استقبل نفس التردد فانة يطفى اليد اى )
وهذا هو الكود النهائى
هل هو صحيح ام لا ياصديقى
Device =16F877A
XTAL=4
ALL_DIGITAL =true
Input PORTB.7
Output PORTC.1
Symbol ir_sensor = PORTB.7
Dim ir_word As Word
Dim st As Word
Dim flg As Byte
Dim i As Byte
Dim id As Word
Main:
GoSub sony_in
DelayMS 200
Select Case ir_word ' this code to place the order based on your design
Case 32 ' for the order 32 pule for 1 sec will appear at portc.0
PORTC.1=1
Case Else ' if you do not know your the code of your key put it here
PORTC.1=0
EndSelect
GoTo main
sony_in:
If ir_sensor=1 Then GoTo sony_in
st=PulsIn ir_sensor,0
If st < 200 Or st > 270 Then GoTo sony_in
For i=0 To 11
id=PulsIn ir_sensor,0
If id >=90 Then
ir_word.0=1
Else ir_word.0=0
End If
ir_word=ir_word<<1
Next i
Return
Read more:
http://www.qariya.com/vb/showthread....#ixzz0qFQF3wpl