PIC bellek haritasını anlamak için yardıma mı ihtiyacınız var


9

Biraz arka plan. Farklı resim türlerini programlamak için bir PicKit2 ile MPLABx kullanıyorum. Şu anda 16F887. Hi-Tech PICC Lite takım zincirine bağlı kalmaya çalışıyorum, ancak bazı şeylerin nasıl monte edildiğinden giderek daha fazla mutsuzum. Göreceli olarak hızlı olması gereken işlemlerin (8Mhz'de 500ns talimat döngüsü göz önünde bulundurularak) tamamlanması 20us'a kadar sürmektedir. Bu yüzden kendi ASM kodumu eklemeye başladım.

Ancak, Sayfa 20'deki veri sayfasında verilen bellek haritasını anlamakta güçlük çekiyorum .

Program belleği 0005 saatte başlar. Bununla birlikte, sayfa 23, örneğin Bağlantı Noktası A gibi özel amaçlı kayıtların dosya adreslerini gösterir. Port A'nın adresi "05h" olarak gösterilir.

Bir bellek konumu 0005h ve 05h yer alan özel amaçlı kayıt arasında nasıl ayırt karıştı. Özel amaçlı kayıtlara nasıl başvurabilirim?

Eski HC11 yongaları için oldukça kapsamlı bir montajcı programlama yaptım, ancak bu benim PIC asm kodlamasına ilk girişimim. Burada herhangi bir yardım mutluluk duyacağız.

Yanıtlar:


8

PIC, "Harvard Mimarisi" olarak adlandırılanı kullanır, bu da talimatlar ve veriler için ayrı adres alanlarına sahip olduğu anlamına gelir.

Bir adresin bir kayıt veya talimatı belirtmesi, kullanıldığı bağlama bağlıdır.

Bölüm 2.1 "Program Belleği Organizasyonu" bölümündeki şemalar program belleği veya talimat adres alanı ile ilgilidir. 2.2 "Veri Belleği Organizasyonu" bölümündeki diyagramlar, kayıtlar ve özel fonksiyon kayıtları veya veri belleği adres alanı ile ilgilidir.


Eğer "MOVWF 0x0005" dersem, PIC program alanında değil veri hafızasında 0x0005 adresine başvurduğumu bilir mi?
Michael

@Michael: Evet. Talimattaki adresin programa mı yoksa veri belleğine mi atıfta bulunacağı talimatlara bağlıdır. Bu, her bir opcode için açıklanmıştır. Temel olarak, MOVWF gibi verilerle ilgileniyorsa, veri belleğine erişir. GOTO gibi program adresleriyle ilgileniyorsa, program belleğine erişir.
Olin Lathrop

Teşekkür ederim. Sanırım montajcı yaptığım HC11 von Neumann kemeriydi. Sadece öğrenirken talimat kodumu yazmakla ilgili sık sık sorun yaşıyorum. Tekrar teşekkürler.
Michael

3

Dave ne dedi, ama ben de program hafızasının 5 değil 0'da başladığını belirtmek istiyorum. Sıfırlamada, işlemci PC'yi 0'a ayarlar ve çalışmaya başlar. Bir kesintide, işlemci etkin bir şekilde konum 4'e bir çağrıya neden olur ve genel kesme etkinleştirme bitini kapatır. Program belleği konumu 5 özel değildir, bunun dışında bir kesme rutininiz varsa kesme rutininin ikinci talimatı olacaktır.


Evet bu anlaşılıyor. Demek istediğim ilk jenerik talimat adresi 5'ti.
Michael

@Michael: Hayır, o da değil. Dediğim gibi, program bellek konumu 5 hakkında gerçekten özel bir şey yok. Etiketin ilk genel talimat adresi bunun için bir anlam ifade etmiyor. İlk talimat adresi 0 ve 4 kesinti nedeniyle biraz özeldir. Gerisi gerçekten özel değil ve "jenerik" bu bağlamda bir anlam ifade etmiyor.
Olin Lathrop

Tamam, ilk sıfırlanmamış, kesintisiz vektör adresi nasıl olur? Söylediğim şu ki ne söylemeye çalışıyorsun.
Michael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.