program hic calismiyor

Başlatan toprak, 06 Aralık 2011, 18:45:53

toprak

merhaba arkadaslar uzun zamandir keypad ile ugrasiyordum simdi bu projemi 16f688 ile yapmak istiyorum fakat devrem yazdigim kodlar ile similasyon da sorunsuz calisirken gercek devre uzerinde bir turlu olmuyor.ustelik denemelerimde programin hic bir bolgesi degismedigi  gibi bir led bile yanmiyor acaba 16f688 ile calisirken farkli ayarlarmi yapmak gerek daha once bununla calisan varmi?yardim edilirse cok sevinirim beni cok ugrastirdi simdiden tesekkurler.

Kabil ATICI

bu tür işlemciler ile çalışmsamda en azından;
işlemcinin çalışması için bazı başlangıç ayarları yapılması gerkiyor. (simülasyonda işlemcini üzerine tıklayarak yaptığın ayarların işlemciye yüklemen lazım)

işlemci kristal varsa, bunun seçilmesi gerekiyor.

Devrende led varsa programın başında bunu yakacak şekilde programını oluştur. Sonra asıl programına gersin.

işlemcinin besleme bacaklarına doğru besleme  geldiğine emin ol. (ölçerek onayla) (birden fazla besleme bacağı varsa hepsine enerji geldiğine emin ol)

İşlemcinin besleme bacakları yakınına 100nF kondansatör bağla. (Vcc ve gnd arasına)

Kristal kullanıyorsan burada kullanılan kondansatör değerlerini doğru olduğuna emin ol. (çoğunluk 22pf civarında)

İşlemcini uygun bir programlayıcı ile programlamış olduğunu varsayarak bu konuyu es geçiyorum.

Kolay gelsin...
ambar7

mcan


Pir-O

#3
Devreni yollarsan daha kolay yardımcı olabiliriz.

Öncelikle eğer harici osilator varsa bu kontrol edilmeli parazit alıyorsa kristalin gövdesi şaseye bağlanmalı.

Aklıma gelen başka bir husus da ADC'nin aktif olabileceği. Eğer devrede ADC kullanılmıyorsa bu pasif duruma getirilmelidir. Aksi taktirde devre çalışmayacaktır. Basic kullanılıyorsa ALL_DIGITAL=True veya direk regesteri ayarlayabilirsiniz ADCON0=0 şeklinde olmalıdır.

Aklıma gelen son ihtimal de MCLR ucu. Eğer MCLR devrede kullanılıyorsa 1K ohm'luk bir direnç ile Vcc ye verilmelidir veya PIC programlanırken pasif duruma getirilmelidir.

toprak

cod lari veriyorum sorunu halen anlamis degilim
verici
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 10.11.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F688 'islemci 16F688
@ DEVICE pic16F688, WDT_OFF 'Watch Dog timer kapali 
@ DEVICE pic16F688, PWRT_ON 'Power on timer acik 
@ DEVICE pic16F688, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F688, MCLR_OFF 'MCLR pini kullaniliyor. 
@ DEVICE pic16F688, INTRC_OSC_NOCLKOUT  'Dahili osilator kullanilacak
@ DEVICE pic16F688, BOD_OFF
 CMCON0=7     
 ADCON0=0
 ADCON1=0
 
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  '9600 baud @ 4mhz
DEFINE HSER_CLROERR 1
ANSEL=0
WPUA=%00110111
 TRISC=%00000111
 TRISA =%00000000
 OPTION_REG=%00000101
 INTCON=%10000000
 SYMBOL UYANDIRMA=PORTC.3
 SYMBOL LED=PORTC.5
 SYMBOL STUN1=PORTC.0
 SYMBOL STUN2=PORTC.1
 SYMBOL STUN3=PORTC.2
 SYMBOL SATIRA=PORTA.0
 SYMBOL SATIRB=PORTA.1
 SYMBOL SATIRC=PORTA.2
 SYMBOL SATIRD=PORTA.4
 TUS VAR BYTE
 ZAMAN VAR BYTE
 VER VAR BYTE
 A VAR BYTE
 B VAR BYTE
 BB VAR BYTE
 G VAR BIT
 R VAR BIT
 OB VAR BIT
 CLEAR
 PAUSE 100
 BASLA:
 
 PORTA.1=1
 PORTA.2=1
 PORTA.4=1
 PORTC.0=1
 PORTC.1=1
 PORTC.2=1
 
 'UYANDIRMA=0
  LOW SATIRA
 IF STUN1=0 THEN 
 TUS=1:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=2:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=3:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
     HIGH SATIRA
  LOW SATIRB
 IF STUN1=0 THEN 
 TUS=4:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=5:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=6:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
    HIGH SATIRB
   LOW SATIRC
 IF STUN1=0 THEN 
 TUS=7:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=8:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=9:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
   HIGH SATIRC
  LOW SATIRD
 IF STUN1=0 THEN 
 R=1:GOSUB RES
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=0:GOSUB HESAP
 WHILE STUN2=0
 LED=1:pause 300:LED=0
 WEND
 ENDIF
 IF STUN3=0 THEN 
 G=1:GOSUB GONDER
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
    HIGH SATIRD
    LED=0
 pause 100
 GOTO BASLA
'*******************************************************************************
 HESAP:
 IF OB=1 THEN
 A=TUS
 A=A*10:TUS=0:bb=1:OB=0
 ENDIF
 IF BB=1 AND TUS<>0 THEN
 B=TUS
  ZAMAN=A+B
  ENDIF
 RETURN
'******************************************************************************* 
 RES:
 IF R=1 THEN
  UYANDIRMA=0:TUS=0:ZAMAN=0:R=0:G=0:LED=0:B=0:A=0:BB=0:OB=1
 ENDIF 
  RETURN
 
'*******************************************************************************
 GONDER:
  IF ZAMAN<>0 AND G=1 THEN
 VER=zaman
 UYANDIRMA=1:PAUSE 50
 GOSUB GIT
 UYANDIRMA=0:TUS=0:ZAMAN=0:LED=1:pause 300:LED=0:VER=0
 ENDIF 
  RETURN
'*******************************************************************************
 GIT:
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT ["A","R","A",VER]  
HSEROUT ["A","R","A",VER]
HSEROUT ["A","R","A",VER]  
 RETURN
'*******************************************************************************
 END

alici
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2011 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 25.11.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F688 'islemci 16F688
@ DEVICE pic16F688, WDT_OFF 'Watch Dog timer kapali 
@ DEVICE pic16F688, PWRT_ON 'Power on timer acik 
@ DEVICE pic16F688, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F688, MCLR_OFF 'MCLR pini kullaniliyor. 
@ DEVICE pic16F688, INTRC_OSC_NOCLKOUT  'Dahili osilator kullanilacak
@ DEVICE pic16F688, BOD_OFF
 CMCON0=7     
 ADCON0=0
 ADCON1=0
 
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  '9600 baud @ 4mhz
DEFINE HSER_CLROERR 1
define OSC 4              ' Çalýþma frekansý

SYMBOL GIE  =INTCON.7   'genel interruptlarý açýyor
SYMBOL PEIE =INTCON.6   'peripheral interruptlarý açýyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit
SYMBOL T0IE=INTCON.5    'TMR0  interrupt enable bit
SYMBOL T0IF=INTCON.2    'TMR0  interrupt flag bit

RCIE=1
PEIE=1
T0IE=0
GIE=1
ON INTERRUPT GOTO KESME 

OPTION_REG=%11000101
ANSEL=0
WPUA=0
 TRISC=%00100000
 PORTC=0
 TRISA =%00000000
 PORTA=0
AL1 VAR BYTE 
SURE VAR BYTE
DAK VAR BYTE
TUS VAR BYTE
SN VAR BYTE
SAYAC VAR BYTE
TEMP VAR BYTE
I VAR WORD
US VAR BIT
K VAR WORD
ARA VAR WORD
SYMBOL LED=PORTC.3
SYMBOL ROLE=PORTA.5
CLEAR

ON INTERRUPT GOTO KESME

BASLA: 
 TUS=AL1:LED=0:ROLE=0
 IF US=1 THEN
IF tus=al1 THEN
 FOR I=0 TO 6
    LED=1:PAUSE 100:LED=0:PAUSE 100
     NEXT I
SURE=tus:TUS=0:T0IE=1:AL1=0:TMR0=0
ENDIF
 ENDIF
GOTO BASLA
 
 
   
'*******************************************************************************    
DISABLE
KESME:
GIE=0 'tüm interruptlar? kapat yani INTCON.7=0
IF T0IF=1 THEN
      SAYAC=SAYAC+1  	    'kesme sayac?  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
      IF SAYAC=67 then  	    '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
         SAYAC=0       	     'sayaç s?f?rlan?yor
         SN=SN+1       	    'saniye de?eri bir art?r?l?yor
            IF SN=60 THEN  	   'saniye 60 olmu? ise 1 dakika süre geçti o halde
               SN=0        	   ' saniye s?f?rlan?yor
               DAK=DAK+1   	   ' dakika de?eri bir art?r?l?yor
              
            ENDIF
       ENDIF
       IF  SN=0 AND  DAK=0 THEN  BAK
       IF SURE<>0 AND DAK=SURE THEN
 INTCON.5=0:ROLE=1:LED=1
 FOR I=0 TO 1000
PAUSE 2
NEXT I
 ROLE=0:SURE=0          
        ENDIF 
BAK:                
T0IF=0 'kesme bayragi sifirlanacak                            
GOTO CIK
ENDIF 
HSERIN 1,BIR,[WAIT("ARA"),AL1]
TEMP=RCREG
RCREG=0
TEMP=0
US=1
GOTO CIK
BIR:US=0
CIK:
RCIF=0
GIE=1 'Yani INTCON.7=1 kesmeleri açt?k.
RESUME
ENABLE 
END