avatar_PayasLiqenc31

12F675 kodlayamıyorum yardım edin?

Başlatan PayasLiqenc31, 28 Haziran 2016, 13:47:22

PayasLiqenc31

Merhaba, herkese iyi günler. Forumda yeniyim. Meslek lisesi ele-elo bölümü öğrencisiyim. 12f675 ile ilgili bir sorunum var. bu pic ile girişe(yani gp0) +5v verilince çıkışta(yani gp1) istenilen süre kadar +5v görmem lazım. programı 16f84de uyguladım sıkıntı yok ama bu picte bi türlü çalıştıramadım, lütfen yadımcı olun. şimdiden teşekkürler.

kod:

   
LIST	P=12F675
INCLUDE "p12f675.inc"

SAY1 EQU H'0C'
SAY2 EQU H'0D'
SAY3 EQU H'0E'
CLRF GPIO
MOVLW 0x7
MOVWF CMCON
BSF         STATUS,RP0
MOVLW b'00000001'
MOVWF TRISIO
BCF         STATUS,RP0
ENERJI
BCF         GPIO,1
BTFSS GPIO,0
GOTO ENERJI
KONTAK
BSF         GPIO,1
CALL GECIKME
BCF         GPIO,1
KONTROL
BTFSC GPIO,0
GOTO KONTROL
GOTO ENERJI
GECIKME
MOVLW H'20'
MOVWF SAY1
DON1
MOVLW H'30'
MOVLW SAY2
DON2
MOVLW H'30'
MOVWF SAY3
DONDUR
DECFSZ SAY3
GOTO DONDUR
DECFSZ SAY2
GOTO DON2
DECFSZ SAY1
GOTO DON1
RETURN
END

ete

Bu işlemcide sigorta aayrları etkin rol oynar. Üstelik OSC kalibrasyon register değeride Program hafızası son adresi olan $3FFF de yer almaktadır. Bu değer fabrikasında oraya kayıt edilir ve işlemci programlanırken bu değer oradan alınıp programa eklenmesi gerekir. Sonuçta henüz pici programlamadan önce 3FFF adresinde ne görüyor isen yeni programı pice yazarken en son adreste aynı değer yer almalıdır.
ASM de bu işlem nasıl yapılıyor bilmiyorum. Pic'e program yazmaya çalıştın ise muhtemelen OSC kalibrasyon değerini silmiş olmalısın. Bu hali ile pic ya çalışmayacak yada beklenenden çok yavaş çalışacaktır. PicKit2 programlayıcılarda bu silinen OSC kalibrasyon değerini yeniden hesaplayıp yerine yazdırabilen seçenek mevcuttur. Şayet PicKit2 kullanıyor isen bana kalırsa önce o kaibrasyon değerini yerine yazdır sonra programını yükledikten sonra son adrese aynı değeri gerekirse manuel olarak yerleştir.
Sonra pici programla.

Ete

PayasLiqenc31

Hocam, öncelikle cevabınız için teşekkür ederim. Lakin program proteus isis simülasyonunda bile çalışmıyor. Yani şimdi yazdığım program doğru da mı çalışmıyor yoksa eksikleri var da mı çalışmıyor onu bilmiyorum. Programla ilgili birşey var ama ne?

onurinci

comparator CMCON'u kapatmışsın fakat ANSEL açık kalımış

buradaki ANSEL örneğini kullanabilirsin

#INCLUDE	<P12F675.INC>

org 0

bsf STATUS,RP0 ; Select Bank 1

movlw b'00111011' ; Set GP<2> as output
movwf TRISIO
movwf WPU ; Select Weak Pull-up Enabled
; INTCON OK
bcf OPTION_REG,7 ; Enable all Weak Pull-up
movlw b'00000000'
movwf ANSEL ; disables analog

bcf STATUS,RP0 ; Select Bank 0
clrf GPIO ; Init GPIO
movlw 07h
movwf CMCON ; Comparator OFF

magic_gun

#4
kolay gelsin ,,,, 675 için gpio registerini bit bit maniple edemezsin bunun yerine bir shadow_gpio tanımlayıp o registeri maniple edip direk olarak gpio ya mowf edersen sorun cozulur...

saygılarımla

m_gun


       cblock 0x020
flash
        port_shadow
        pwm_period
        on_duty
        t1
.
.
.

x_dene

      bsf port_shadow,out_data 
      movf port_shadow,w
      movwf GPIO
     


hayal etemeden basaramazsınız
u cnt achieve w/out dreamin

PayasLiqenc31

  bsf port_shadow,out_data 
      movf port_shadow,w
      movwf GPIO

Sadece bu satırları eklemem yeterli olacak mı yani sorunun çözümü için?

onurinci

ayrıca 16F84 0C ile Ram bölgesini başlatır,12F675 ise 20'ile başlar buralarıda modifiye etmen gerekir...

en üst sigortaları dahil etmeyi unutma...

__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

PayasLiqenc31

bir türlü beceremedim ve başka bir pic tercih etmek zorunda kaldım. 16f628 sıkıntısız bir şekilde çalışıyor. herkese teşekkür ederim cevapları için.

Powered by EzPortal