Resimli soru PIC 16f84a

Eğer PIC'i 4MHz osilatör ile kullanıyorsanız, bacakları gnd'ye bağlamayın.
GND ile osilatör bacakları arasına 15pF kondansatör bağlayın.
Aşağıdaki resimdeki gibi...
 
YARARMAN kardeş ben zaten resimdeki gibi yaptım. dediğiniz gibi 4 mhz kullanıyorum ve 33pF kondansatör kullanıyorum ama GND dediğiniz VSS olmuyormu onunla osilatörün ne alakası var?
 
GND, VSS, bunlar devredeki şase, 0 noktası...
Sizin koyduğunuz resimde öyle değil kondansatör bağlantıların...
 
Bak sana devreyi sade olarak hem Proteus'da hem de MPLAB'ta hazırladım.
Bir de benim derlediğim kodu kullan.



Kod:
    list        p=16F84A
    #include    <p16F84a.inc>

    __CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC

    ORG        0x00
    CLRF    PORTB
    BSF        STATUS,5
    CLRF    TRISB
    MOVLW    0x00
    MOVWF    TRISA
    BCF        STATUS,5
MAIN
    BSF        PORTB,0
DONGU
    GOTO    DONGU

END


 
osc konfigirasyonu eksik sanırım kristal için XT yazılması gerekiyor heralde, yoksa HS mi?
 
HS genellikle 4MHz üzerinde kullanılıyor.
Sen benim derlediğim HEX kodunu denedin mi?
 
evet saolasın gerçekten oldu problem osilatör konfigirasyonundaymış ama şuan da program kendine sürekli res atıyor yani porta nın 0. pini +5V ise ledlerin sönmesi ve sonsuz döngüde kalması lazımken isisde ve gerçek devrede program sürekli seslenip l7edler tekrar yanıyor konlar aşağıda devre senin verdiğin gibi kurulu sadece porta ya 1 adet +5 volt giden butun var. Bunun nedeni ne olabilir?
---------------------
;**********************************************************************
; *
; This file is a basic code template for assembly code generation *
; on the PIC16F84A. This file contains the basic code *
; building blocks to build upon. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: P16F84A.INC *
; *
; *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************


list p=16F84A ; list directive to define processor
#include <p16F84a.inc> ; processor specific variable definitions

__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS
w_temp EQU 0x0C ; variable used for context saving
status_temp EQU 0x0D ; variable used for context saving

;**********************************************************************
RESET_VECTOR CODE 0x0000 ; processor reset vector
goto start ; go to beginning of program

ISR CODE 0x0004 ; interrupt vector location

Interrupt:

movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register

; Place ISR Here

movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt

MAIN_PROGRAM CODE

start:

BSF STATUS,5
CLRF TRISB
MOVLW b'11111111'
MOVWF TRISA
BCF STATUS,5

MOVLW b'00000011'
MOVWF PORTB

KONTROL
BTFSS PORTA,0
GOTO KONTROL
MOVLW h'00'
MOVWF PORTB



SON
GOTO SON
END
 
res atma probleminin yanında birde programın geç başlaması problemi var 2-3 saniye sonra başlıyo program ve res atıyor
 
Projeyi Proteus'da hem de MPLAB'ta baştan hazırladım.
Bir önceki kodumda WatchDog'u açık unutmuşum.
Onu düzelttim, şimdi istediğin gibi çalışıyor.
Yeni projeyi, aşağıdaki bağlantıdan indirebilirsin.


Kod:
    list        p=16F84A
    #include    <p16F84a.inc>

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

    ORG        0x00
    CLRF    PORTB
    BSF        STATUS,5
    CLRF    TRISB
    MOVLW    0xFF
    MOVWF    TRISA
    BCF        STATUS,5
MAIN
    MOVLW    0x03
    MOVWF    PORTB
CONTROL
    BTFSS    PORTA,0
    GOTO    CONTROL
    MOVLW    0x00
    MOVWF    PORTB
DONGU
    GOTO    DONGU

END


 
Bir de Proteus diye bazı değerlere aldırış etmiyorum.
O yüzden sen gerçek uygulamada, kristale bağlanan kondansatörlerin değerini 15pF yap. :)
 

Forum istatistikleri

Konular
128,179
Mesajlar
915,658
Kullanıcılar
449,940
Son üye
yavuzturan

Yeni konular

Çevrimiçi üyeler

Geri
Üst