Pic programlamaya yeni başaladım. Basit bi alarm devresi kurdum ama benim istediğim gibi çalışmıyor. Program şöyle: list p=16F84A #include <p16F84A.inc>
Burdaki mantığa göre a nın 1 biti 0 ise alarma geçip B nin 2 ve 3 bitleri çıkış olmalı sonra devamlı öyle kalmalı. 2 de led 3 te alarm devresi bağlı. Pici programlayıp kurunca devamlı Port A yı kontrol edior. 0 gelince B nin 2 ve 3 ü çıkış oluo. A1 1 olunca B nin 2 ve 3 ünün çıkışını kesio yani devreyi kesio. Benim istediğim ise A1 i 0 okuduğu andan sonra B nin 2 ve 3 ü devamlı çıkış olsun ve devam etsin.
birde 2. sorum var: Şu gecikme işlemini yazıom programlıom ama gecikmeyi yapmıo.;Anladığım kadarıyla programda gecikmeye gelince duruyor ve ondan önceki işlemler aynen kalıo . gecikme:
INCLUDE "P16F84.INC" diye deiştirdim bişey farketmedi. Bi de
ALARM BSF PORTB,2 BSF PORTB,3 GOTO ALARM
yazdım program alarm a girdimi devamlı olarak sonsuz döngüye girmesi lazım ama bi işe yaramadı.
Bi sorum daha olcak : mesala ben programı mplab da derliyorum. derledikten sonra pic up a atıodum ama hata veriodu. hata: Error in hex file on row 1! yazıo.
bende netten hex'i ve asm'si olan bi dosyayı derledim. Benim derlediğimdeki hex'in ilk satırı netten aldığım hex de gözükmüo. Bende derlediğim her programın hex'inin ilk satırını siliom hem çalışıo hem de pic-up a yüklenio. sence bu neden oluyordur. Mplab ın ayarlarındanmıdır yoksa bilmediğim birşeymi
örnek benim derlediğim: :020000040000FA :10000000860183168601FF308500831286148518C9 :0A00100007280A28061586150A289D :00000001FF
nette olan :10000000860183168601FF308500831286148518C9 :0A00100007280A28061586150A289D :00000001FF
yani :020000040000FA kodu ne ve silince de nasıl çalışıo
pic simulator kullanmanı tavsiye ederim, mplab a entegre bir simulator var ya da nette farklı çeşitlerini bulabilirsin. Programını bu simulatora attığında hangi registerlarda ne tür değişimler oluyor adım adım takip edebilme imkanı bulursun. Programı incelemedim ama dediğimi yaparsan sorunu çok rahat çözersin.
list p=16F84A
#include <p16F84A.inc>
CLRF PORTB
BSF STATUS,5
CLRF TRISB
MOVLW h'FF'
MOVWF TRISA
BCF STATUS,5
BSF PORTB,1
TEST_PORTA
BTFSC PORTA,1
GOTO TEST_PORTA
GOTO ALARM
ALARM
BSF PORTB,2
BSF PORTB,3
END
Burdaki mantığa göre a nın 1 biti 0 ise alarma geçip B nin 2 ve 3 bitleri çıkış olmalı sonra devamlı öyle kalmalı. 2 de led 3 te alarm devresi bağlı. Pici programlayıp kurunca devamlı Port A yı kontrol edior. 0 gelince B nin 2 ve 3 ü çıkış oluo. A1 1 olunca B nin 2 ve 3 ünün çıkışını kesio yani devreyi kesio. Benim istediğim ise A1 i 0 okuduğu andan sonra B nin 2 ve 3 ü devamlı çıkış olsun ve devam etsin.
birde 2. sorum var:
Şu gecikme işlemini yazıom programlıom ama gecikmeyi yapmıo.;Anladığım kadarıyla programda gecikmeye gelince duruyor ve ondan önceki işlemler aynen kalıo . gecikme:
SAYAC1 EQU h'0C'
SAYAC2 EQU h'0D'
GECIKME
MOVLW h'FF'
MOVWF SAYAC1
DONGU1
MOVLW h'FF'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
sizce nerde hata yapıom. Pic ustalarından yardım
teşekkürler