Programlama ve Elektronik

Programlama ve Elektronik (http://www.proelo.com/)
-   PIC Assembly (http://www.proelo.com/pic-assembly-41/)
-   -   deneme kartı üzerinde pic uygulamaları (http://www.proelo.com/pic-assembly-41/deneme-karti-uzerinde-pic-uygulamalari-1841/)

rootkey 12. May 2009 11:11 PM

deneme kartı üzerinde pic uygulamaları
 
Abilerim merhaba.
deneme kartı üzerinde pic programlayarak bazı dalgalanmalar yaratmak istedi öğretmenimiz :)
pic16f84 programını verdi ancak dediki: yazım yalnışı var yada eksik bir komut var :(

Deneme kartı 8 ledden oluşmaktadır 4 butonludur. pic16f84 ile çalışır.
Programdaki amaç:
PIC'e enerji verdilğinde A portunun 1 bit'ine bağlı butona 10 defa basıldıktan sonra B portunun 0 bit'ine bağlı olan led'i yakan program.

AŞAĞIDAKİ PROGRAMDA HATA NEDİR BEN BULAMADIM LÜTFEN YARDIMCI OLUN ARKADAŞLAR LÜTFEN :(


Kod:

LIST P=16F84
INCLUDE "PIC16F84.INC"

SAYAC EQU h'0C'

CLRF PORTB
BSF STATUS5
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BCF STATUS5

BASLA
MOVLW d'10' ;W ye desimal 10 yukle
MOVWF SAYAC ;SayacA dan w yi

TEST
BTFSC PORTA1
GOTO TEST
NOP
NOP
NOP
DECFSZ SAYACF
GOTO TEST
BSF PORTB0
END


jungersol 15. May 2010 03:54 AM

Cevap: deneme kartı üzerinde pic uygulamaları
 
buna benzer bi programla bende uğraşıyorum.RA0 butonuna 10 defa basıca PORTB nin 0. bitindeki ledi yakmaya çalışyorum ancak düzgün olarak çalışmıyor.kodlarım şunlar.
Kod:

LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON & _LVP_OFF & _DATA_CP_OFF & _CP_OFF

CLRF PORTB
SAYAC EQU h'20'
BANKSEL TRISB
MOVLW b'11111110'
MOVWF TRISB
MOVLW b'11111111'
MOVWF TRISA
BANKSEL PORTB
MOVLW h'07'
MOVWF CMCON
BASLA
MOVLW d'10'
MOVWF SAYAC
TEST
BTFSC PORTA 0
GOTO TEST
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ SAYAC F
GOTO TEST
BSF PORTB 0
DONGU
GOTO DONGU
END

devreyi oluşturdum.biraz araştırdıktan sonra sorunun butona basıldığında oluşan arktan dolayı meydana geldiğini öğrendim.bunu önlemek için yazılımdaki NOP komutlarının sayısını arttırarak(gerekirse 100 veya daha fazla) döngü gecikmesi yapmak yada donanımsal olarak butonun uçlarına kondansatör bağlamak gerekiyomuşAncak her iki şekildede isatedğim tutarlılık çalıştıramadaım.Butona basılış süresine ve sayısına göre farklı tepkiler veriyo.Yardımcı olursanız sevinirm


Bütün Zaman Ayarları WEZ +3.5 olarak düzenlenmiştir. şu Anki Saat: 05:48 PM .