Asembly Include Hatası

Başlatan robikod, 03 Ağustos 2017, 00:28:12

robikod

Merhaba, seri porttan b harfi yolladığımda b portundaki ledleri terslemek istiyorum bunun için şöyle bir kod yazdım

https://paste.ubuntu.com/25228773/

ama hata alıyorum mantık hatası mı var ? yoksa kodda mı hatalarım var yardımcı olursanız çok sevinirim.

Aldığım hata satırı ise şöyle:

Error[105]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 3 : Cannot open file (Include File "RS232.ASM" not found)
Warning[207] C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 6 : Found label after column 1. (GELEN_KARAKTER)
Message[302] C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 13 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 15 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 18 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[207] C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 27 : Found label after column 1. (ANA_PROGRAM)
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 28 : Symbol not previously defined (RS232_TEST)
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 31 : Symbol not previously defined (TEST_VERI)
nbproject/Makefile-default.mk:101: recipe for target 'build/default/production/newAsmTemplate.o' failed
make[2]: Leaving directory 'C:/Users/xx/MPLABXProjects/serial.X'
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/xx/MPLABXProjects/serial.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

Hadi


robikod

#2
Alıntı yapılan: Hadi - 03 Ağustos 2017, 00:37:49
end neden ortada?

Programın sonunda, alt programların üstünde olduğu için öyle yaptım. Ama değiştirdiğimde düzelmedi. RS232 yi bulamıyor ilk önce neden olduğunu anlamadım

Hadi

28. satırda, 36. satırı çağırıyorsun ama orası end'den sonra yazıldığı için erişilmez. zaten dikkat ederken son 2 hata bu yuzden.

robikod

Alıntı yapılan: Hadi - 03 Ağustos 2017, 00:45:03
28. satırda, 36. satırı çağırıyorsun ama orası end'den sonra yazıldığı için erişilmez. zaten dikkat ederken son 2 hata bu yuzden.

Tesekkurler diger hatalarin sebebi ne olabilir ?
Kod mantigi acisindan dogru mu peki gidis yolum

Hadi

şimdi hele mantığa bakamadım ama yine bir hata daha var

SUBLW GELEN_KARAKTER,W;

SUBLW komutunun destination select kısmı yok ki siz ,W yazmışsınız. acaba SUBWF mı yazacaktınız? orda bi hata var :)

bide bu RS232.ASM dosyasında ne var ki koda dahil ediyorsunuz?

ben o satırı yorum olarak yaptım ve sorunsuz derledim.

kudretuzuner

#6
Merhaba,
(RS232_TEST)
(TEST_VERI)
önceden tanımlanmamış.
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 28 : Symbol not previously defined (RS232_TEST)
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 31 : Symbol not previously defined (TEST_VERI)
Amatör

Hadi

Alıntı yapılan: kudretuzuner - 03 Ağustos 2017, 08:59:25
Merhaba,
(RS232_TEST)
(TEST_VERI)
önceden tanımlanmamış.
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 28 : Symbol not previously defined (RS232_TEST)
Error[113]   C:\USERS\xx\MPLABXPROJECTS\SERIAL.X\NEWASMTEMPLATE.ASM 31 : Symbol not previously defined (TEST_VERI)

onlar etiket, önceden tanımlamaya gerek yok.  :)

robikod

#8
Kodlardaki mantık hatasını çözemedim :/ Çalışmıyor hiç bir şekilde yardımcı olacak yok mu nerede mantık hatası var
Realtermden B gönderiyorum ledlerin yanması lazım olmuyor ( Virtual port oluşturdum)

Hadi

#9
bende bi deneyeyim bakayım sorun nerde  :)

bişey gözume çarptı. TEST_VERI alt programında çıkarma işlemi yapıp demişsin ki aynı ise Z bayrağı 0 olur. ama ayni ise işlem sonucu 0 olup Z bayrağı 1 olur. orda mı hata yaptın acaba? Z nin 0 değil de 1 olmasını test etmen lazım.

kardeş senin program surekli dışarıya B gonderiyor. ;D
(aslında hep f gonderiyordu, B için yazdığın 066 yerine D'66' yazınca B gondermeye başladı. bildiğin gibi B nin ascii kodu 66 dır ama sen kodda 066 yazınca onu 102 kabul ediyor. D'66' ile ben decimal 66yi kastediyorum demen lazım)  - belki de butun testlerinde B yerine f gondermiş olsaydın çalışacaktı -
bide neden B karakterini TXREG e yukuyorsun ki? TXREG gönderme registeri değil mi?

son olarak RX pini yani PORTC nin 7. bitini nerde giriş yapmişsin göremedim de.  ???

şimdilik benden bu kadar, geç oldu  ;)

kudretuzuner

#10
Merhaba,
PC'den bir baytlık bir karakter göndererek PIC'e işlem yaptırabilmek için PC'den yollanan hex değeri PIC'teki W değişkenine atadığınız değer ile XOR komutu ile karşılaştırıp gönderilen karakter ile karşılaştırmak ve eşit ise işlem yaptırmak gerekir.
Aşağıdaki ham kodlar size fikir verecektir.


1-W değişkenine hex'42' yani B yükleniyor
2-PC'den gelen data RCREG te W ile karşılaştırılıyor(bknz:EXOR tablosu)
3-işlem doğruluğu kontrol ediliyor
4-CALL komutu ile PIC'e alt rutinde işlem yaptırılıyor.
Eğer anlaşılmayan yerler var ise tekrar yazın lütfen.
Not:kod "B" harfi içindir
Anahtar kelime  RCREG dir



MOVLW B'01000010';    "B"  karakteri
XORWF RCREG
BTFSS STATUS,2
CALL İSLEM1
CALL İSLEM2
Amatör