avatar_ete

Uzaktan Kumanda İle Saat Ayar Sistemi

Başlatan ete, 13 Aralık 2012, 17:43:41

Dtmf

hayırlı gunler ete hocam yardımlarınız ıcın yesekkur ederım sayenızde projeyı bıtırdım.basıtce 6 adet led kontrol ettım.sony kumanda 1...6 ya kadar tuslar la 6 adet led kontrol 0 tusuna basınca hepsı sonuyor.formdakı degerlı arkadaslarımın ıslerıne yararsa ıncelesınler kullansınlar dıye paylasıyorum.

Device=16F877A
XTAL=4
ALL_DIGITAL TRUE
TRISA=0:PORTA=0
TRISB=0:PORTB=0
TRISC=0:PORTC=0
TRISD=0:PORTD=0
TRISE=0:PORTE=0
Declare LCD_TYPE alpha  
Declare LCD_LINES 2
Declare LCD_INTERFACE 4
Declare LCD_DTPIN PORTB.4
Declare LCD_RSPIN PORTB.0
Declare LCD_ENPIN PORTB.1
Dim AL As Byte
Dim PL As Word
Dim I As Byte
Dim SAY[11] As Byte
Dim ADRESS As Word
Dim KOMUT As Byte
Dim A As Byte
;===================================
Print At 1,1,"  IR KUMANDA  "
BASLA:
AL=PulsIn PORTC.0,1
If AL>200 And AL<253 Then   ;preamble sınyalı yakalama

     For I=0 To 11
     PL=PulsIn PORTC.0,1
     SAY[I]=PL  ;GELEN 12 verıden ılkının suresını olctum
     Next
ADRESS=%11111111     
For I=0 To 6
If SAY[I]<70 Then ClearBit ADRESS,I 
If SAY[I]>126 Then SetBit ADRESS,I
DelayMS 10
Next


KOMUT=%00011111     
For I=7 To 11
If SAY[I]<70 Then ClearBit KOMUT,I 
If SAY[I]>126 Then SetBit KOMUT,I
DelayMS 10
Next

Print At 2,1,"ADRES :",BIN ADRESS
Print At 3,1,"KOMUT :",BIN KOMUT
Print At 3,1,"KOM:",Dec KOMUT,"   ","ADR:",Dec ADRESS

If ADRESS=128 Then PORTD.0=1
If ADRESS=129 Then PORTD.1=1
If ADRESS=130 Then PORTD.3=1
If ADRESS=131 Then PORTD.4=1
If ADRESS=132 Then PORTD.5=1
If ADRESS=133 Then PORTD.6=1

If ADRESS=137 Then PORTD=0 ;tum ledler sondur

DelayMS 200
Print At 2,1,"                    "
Print At 3,1,"                    "
EndIf

GoTo BASLA


ete

#31
If SAY[I]>126 Then SetBit ADRESS,I
hala yukardaki komut satırını kullanıyorsun. Ona gerek yok demiştim sebebinide açıkladım ama ne hikmetse kullanmakta ısrar ediyorsun sevdin galiba bu satırı.
Bu komut satırının yaptığı işi,
ADRESS=%11111111 
komutu yapıyor zaten. Yine tekrar ediyorum. Önceden bitlerin hepsini 1 yapıyoruz ardından döngü içinde sıfır olmasıgerekenleri sıfırlıyoruz. 1 olanlar zaten 1 olarak kalıyor.
Aynı fazlalık KOMUT döngüsünde de var. Onuda kaldır. Ne kadar az kod o kadar az zaman harcama demektir.

Ete

Powered by EzPortal