ايران ويج

نسخه‌ی کامل: کنترل مادون قرمز با PT2262
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4 5 6
ایشالا یه چند وقت دیگه یه ماژول میدم دست دوستان( کلا کار با ریموت کنترل ها ( دیفالت با ریموت های جیبی رادیو پخش ها ، حدود 25 کلید) سازگار...
خروجی I2C و.... فکر کنم کل نیازهای موجود را برطرف کنه ( منوط به اینکه این دوست کالیبر بالای من تمومش کنه :) )
برای خودم که جایگزین مناسبی بود به جای این کیبوردها 4X4
اینارو ببین(فکر کنم باید بصورت هگز می نوشتم واینکه پینها رو جدا گانه می نوشتم):

فرستنده:
کد php:
$regfile "m8def.dat"
$crystal 4000000
Ddrd 
= &B11111100 Portd 7
Ddrd 
= &B11111100 Portc 3
Do
    
Debounce Pind.0 Gosub
    Debounce Pind.1 
Gosub
    Debounce Pind.2 
Gosub
    Debounce Pind.3 
Gosub
    Debounce Pind.4 
Gosub
    Debounce Pind.5 
Gosub
    Debounce Pind.6 
Gosub
    Debounce Pinc.0 
Gosub
    Debounce Pinc.1 
Gosub
    Debounce Pinc.2 
Gosub
Loop

Q
:
    
Rc5send 7 0
    Waitms 100
Return

W:
    
Rc5send 7 1
    Waitms 100
Return

A:
    
Rc5send 7 2
    Waitms 100
Return

B:
    
Rc5send 7 3
    Waitms 100
Return

C:
    
Rc5send 7 4
    Waitms 100
Return

D:
    
Rc5send 7 5
    Waitms 100
Return

E:
    
Rc5send 7 6
    Waitms 100
Return

F:
    
Rc5send 7 7
    Waitms 100
Return

G:
    
Rc5send 7 8
    Waitms 100
Return

H:
    
Rc5send 7 9
    Waitms 100
Return 

گیرنده:
کد php:
$regfile "m8def.dat"
$crystal 4000000
Ddrd 
= &B01111111
Ddrc 
= &B01111111
Config Rc5 
Pind.7

Enable Interrupts
Dim Address 
As Byte Command As Byte

Do
    
Getrc5(address Command)
    If 
Command 0 Then
        Set Portd.0
        Reset Portd.1
    End 
If
    If 
Command 1 Then
        Set Portd.1
        Reset Portd.0
    End 
If
    If 
Command 2 Then
        Set Portd.2
        Reset Portd.3
    End 
If
    If 
Command 3 Then
        Set Portd.3
        Reset Portd.2
    End 
If
    If 
Command 4 Then
        Set Portd.4
        Reset Portd.5
    End 
If
    If 
Command 5 Then
        Set Portd.5
        Reset Portd.4
    End 
If
    If 
Command 6 Then
        Set Portd.6
        Reset Portc.0
    End 
If
    If 
Commanc 0 Then
        Set Portc.0
        Reset Portd.6
    End 
If
    If 
Commanc 1 Then
        Set Portc.1
        Reset Portc.2
    End 
If
    If 
Commanc 2 Then
        Set Portc.2
        Reset Portc.1
    End 
If
Loop
End 

فکر کنم اشکالش زیاده اما میدونم که باید اعدادو به هگز ویا باینری و ... تبدبل کنم ودر ضمن ddr هم باید تغییر کنه ...........
گیرنده رو تکمیل کن !!
به جای bayt باید word بذارم آره؟؟؟
نه مهندس !

فکر کن کلید اول تو فرستنده فشار داده بشه و بعدش کلید چهارمی !

اینوطری چیطوری میشه خروجی ها !

چون به نظر میاد شما تو برنامه می خوای بسته به هرکلید فقط یه خروجی فعال باشه !!!
(۱۶-اردیبهشت-۱۳۸۹, ۱۸:۳۳:۵۰)t3r!p3000 نوشته است: [ -> ]چون به نظر میاد شما تو برنامه می خوای بسته به هرکلید فقط یه خروجی فعال باشه !!!
آره همچین چیزی می خواهم که برای هر کلید فرستنده خروجی جداگانه داشته باشم ...

یعنی باید هرکدام از کانالها رو باید بنویسم مثل زیر یا چطور؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
کد php:
If Command 0 Then
 Set Portd.0
 Reset Portd.1 
Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If 
دقیقا !!!
حالا کلا فرستنده وگیرنده را میذارم لطفا دیگه ریزه کاریاشو خودت کمک کن ...

فرستنده:

کد php:
$regfile "m8def.dat"
$crystal 4000000
Ddrd 
= &B11111100 Portd 7
Ddrd 
= &B11111100 Portc 3
Do
    
Debounce Pind.0 Gosub
    Debounce Pind.1 
Gosub
    Debounce Pind.2 
Gosub
    Debounce Pind.3 
Gosub
    Debounce Pind.4 
Gosub
    Debounce Pind.5 
Gosub
    Debounce Pind.6 
Gosub
    Debounce Pinc.0 
Gosub
    Debounce Pinc.1 
Gosub
    Debounce Pinc.2 
Gosub
Loop

Q
:
    
Rc5send 7 0
    Waitms 100
Return

W:
    
Rc5send 7 1
    Waitms 100
Return

A:
    
Rc5send 7 2
    Waitms 100
Return

B:
    
Rc5send 7 3
    Waitms 100
Return

C:
    
Rc5send 7 4
    Waitms 100
Return

D:
    
Rc5send 7 5
    Waitms 100
Return

E:
    
Rc5send 7 6
    Waitms 100
Return

F:
    
Rc5send 7 7
    Waitms 100
Return

G:
    
Rc5send 7 8
    Waitms 100
Return

H:
    
Rc5send 7 9
    Waitms 100
Return 

گیرنده:

کد php:
$regfile "m8def.dat"
$crystal 4000000
Ddrd 
= &B01111111
Ddrc 
= &B01111111
Config Rc5 
Pind.7

Enable Interrupts
Dim Address 
As Word Command As Word

Do
    
Getrc5(address Command)
    If 
Command 0 Then
 Set Portd.0
 Reset Portd.1 
Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 1 Then
 Set Portd.1
 Reset Portd.0 
Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 2 Then
 Set Portd.2
 Reset Portd.0 
Portd.1 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 3 Then
 Set Portd.3
 Reset Portd.0 
Portd.1 Portd.2 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 4 Then
 Set Portd.4
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 5 Then
 Set Portd.5
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.4 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If

If 
Command 6 Then
 Set Portd.6
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.4 Portd.5 Portc.0 Portc.1 Portc.2
 End 
If

If 
Commanc 0 Then
 Set Portc.0
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.1 Portc.2
 End 
If

If 
Commanc 1then
 Set Portc.1
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.2
 End 
If

If 
Commanc 2 Then
 Set Portc.2
 Reset Portd.0 
Portd.1 Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1
 End 
If


Loop
End 
به جای اون همه ریست کردن خوب بنویس : PORTD=0
کد php:
If Command 0 Then
 Set Portd.0
 Reset Portd.1 
Portd.2 Portd.3 Portd.4 Portd.5 Portd.6 Portc.0 Portc.1 Portc.2
 End 
If 
خب اگه مثلا در این مثال بجای ریست ها بنویسم portd=0 که همش ریست میشه حتی خود d.0 تازه پورت c هم که داره برنامه!
مگه اینطور نیست؟؟؟؟؟؟؟؟؟؟
برام دراز شدن برنامه مهم نیست فقط می خوام که بدون ارور باشه .......
گیرنده رو بهتره اینجوری بنویسیش !

کدهاش خیلی کمتر میشه :

کد php:
$regfile "m8def.dat" $crystal 4000000

Ddrd 
255 Ddrc 255

Config Rc5 
Pinb.0 Enable Interrupts

Dim Address 
As Word Command As Word

Do

   
Getrc5(address Command)

   If 
Address 7 Then :

      If 
Command 0 Then :
         
Portd Portc 0
      
Elseif Command 1 Then :
         
Portd Portc 0
      
Elseif Command 2 Then :
         
Portd Portc 0
      
Elseif Command 3 Then :
         
Portd Portc 0
      
Elseif Command 4 Then :
         
Portd 16 Portc 0
      
Elseif Command 5 Then :
         
Portd 32 Portc 0
      
Elseif Command 6 Then :
         
Portd 64 Portc 0
      
Elseif Command 7 Then :
         
Portd 128 Portc 0
      
Elseif Command 8 Then :
         
Portd Portc 1
      
Elseif Command 9 Then :
         
Portd Portc 2
      End 
If

   
End If


Loop
End 
صفحه‌ها: 1 2 3 4 5 6