Pic le ilgili bilgileri burada toplıyalım

+ Yorum Gönder
Elektronik ve Elektronik Bölümü Bölümünden Pic le ilgili bilgileri burada toplıyalım ile ilgili Kısaca Bilgi
  1. 1
    amsterdam
    Üye
    Reklam

    Pic le ilgili bilgileri burada toplıyalım

    Reklam



    Pic le ilgili bilgileri burada toplıyalım

    Forum Alev
    PIC Serisi mikroişlemciler MICROCHIP firması tarafından geliştirilmiş ve üretim amacı çok fonksiyonlu logic uygulamalarının hızlı ve ucuz bir Mikroişlemci ile yazılım yoluyla karşılanmasıdır.

    PIC’in kelime anlamı -PERIPHERAL INTERFACE CONTROLLER- Giriş Çıkış işlemcisidir. İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir.

    Çok geniş bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacın ilk meyvesidir. PIC işlemcileri RISC benzeri işlemciler olarak anılır.

    PIC16C54 12 Bit komut hafıza genişliği olan 8 bitlik CMOS bir işlemcidir.18 bacaklı dip kılıfta 13 I/O bacağına sahiptir ve 20 Mhz osilator hızına kadar kullanılabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadır. Bu hafıza kapasitesi birçok insanı güldürmüştür sanırım ama bir risc işlemci olması birçok işin bu kapasitede uygulanmasına olanak vermektedir.

    PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalıştırılabilmektedir. Tek bacaktan 40 mA akım çekilebilmekte ve entegre toplamı olarak 150 mA akım akıtma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansında çektiği akım çalışırken 2 mA stand-by durumunda ise 20uA kadardır.

    PIC 16C54 ‘un mensup olduğu işlemci ailesi 12Bit core 16C5X olarak anılır. Bu gruba temel grup adı verilir. Bu ailenin üyesi diğer işlemciler PIC16C57, PIC16C58 ve dünyanın en küçük işlemcisi olarak anilan 8 bacakli PIC12C508 ve PIC 12C509’dur.

    Interrupt kapasitesi ilk işlemci ailesi olan 12Bit Core 16C5X ailesinde bulunmamaktadır. Daha sonra üretilen ve Orta sınıf olarak tanınan 14Bit Core- 16CXX ailesi birçok açıdan daha yetenekli bir grup işlemcidir.

    Bu ailenin temel özelliği interrupt kapasitesi ve 14 bitlik komut işleme hafızasıdır. Bu özellikler Pic’i gerçek bir işlemci olmaya ve karmaşık işlemlerde kullanılmaya yatkın hale getirmiştir. PIC16CXX ailesi en geniş ürün yelpazesine sahip ailedir. 16CXX ailesinin en önemli özellikleri seri olarak devre üstünde(ICSP) dahi programlanmasıdır. Bu özellik PIC16C5x de epey karmaşıktı , paralel programlanabiliyordu interrupt kabul edebilmesi, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardı giriş çıkışları kabul edecek işlemcilere ürün yelpazesinde yer vermesi.

    PIC 16CXX ailesinin amatör elektronikçiler arasında en çok tanınan ve dünyada üzerinde ençok proje üretilmiş, internetin gözdesi olan bireyi PIC16C84 veya yeni adıyla PIC16F84 dur.

    PIC 16F84 un bu kadar popüler olması onun çok iyi bir işlemci olmasından ziyade program belleğinin Eeprom - Elektrikle silinip yazılabilen bellek -olmasından kaynaklanmaktadır. Seri olarak dört adet kabloyla programlanması da diğer önemli avantajıdır. Bugüne kadar amatörce bir işlemciyle uğraşmış herkesin en büyük sıkıntısı eprom veya eprom tabanlı işlemcileri programladıktan sonra UltraViole ışık kaynağı ile silip tekrar programlamaktır. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmustur. Evde üretilmesi zor olan özel bir programlayıcı da madalyonun diğer yüzüdür.

    PIC16F84 amatörler tarafından internette en bol programlayıcısı bulunan işlemcidir herhalde. Ben şu ana kadar 50 den fazla PC ve MAC tabanlı evde yapabileceğiniz programlayıcıya rastladım. Eprom silmek diye birşey zaten söz konusu değil zira eeprom belleği programlayan programlayıcı devre 1 saniye içinde aynı belleği silebilmektedir. Bu özellik size çok hızlı ve defalarca deneyerek program geliştirme avantajını getirmektedir ki bu amatör elektronikçi için bulunmaz bir nimettir. Bu denemeleri yaparken işlemciyi devrenizden sökmeniz dahi gerekmez. Bu tip programlamaya ICSP -In Circuit Serial Programming- denmektedir.

    Amatör bir elektronikçi PIC16F84 ile Program geliştirmek için aşağıdaki ekipmana ihtiyaç duyacaktır:

    PIC16F84
    Windows tabanlı PC
    ASCII Editör (Örneğin Windows-Notepad)
    MPASM Assembler
    Programlayıcı/silici
    Programlayıcı için yazılım



  2. 2
    amsterdam
    Üye
    Reklam



    Dizi Değişkenler(Arrays)

    Array değişkenler,normal değişkenlerin oluşturulmasına benzer biçimde aşağıdaki formatta oluşturulurlar.

    Değişken_adı VAR tip [Eleman_sayısı]

    Değişken adı,programcının seçtiği ve tanımlayıcı belirleme kurallarına uygun olarak oluşturulmuş bir isimdir.Tip olarak BIT,BYTE veya WORD kullanılabilir.Eleman sayısı ile dizi değişkenim kaç elemandan oluşacağı belirlenir.Aşağıda dizi değiişken oluşturmaya birkaç örnek görülmektedir:

    Oku VAR byte[14]
    Sinyalsayisi VAR bit[8]

    Dizi değişkenin ilk elemanının indisi 0(Sıfır) dır.Yukarıdaki oku dizi değişkeninin elemanları oku[0] dan oku[13]'e kadardır ve toplam 14 eleman vardır.
    Mikrodenetleyicilerdeki RAM 'in sınırlı oluşu nedeniyle her bir tip için aşağıdaki sınırlandırmalar vardır:

    BIT-128
    BYTE-64
    WORD-32

    Sabitler

    Sabit isimleri de değişken isimlerine benzer biçimde tanımlanır.Tek farkla,VAR yerine CON anahtar kelimesi kullanılır.Program içerisinde sabit değeri direkt olarak yazmak yerine önceden tanımlı sabit ismini kullanmak programcılık açısından yararlıdır.Program içersinde birden fazla yerde kullanılan bu sabit tanımının yapıldığı yerde değişiklil yapmak çok daha kolaydır.Bir sabit ismin içerisine program içerisinde değer atanamaz.Sabit ismi tanımlama aşağıdaki gibi yaplır:

    Sabit_ismi CON Sabit_sayı

    sabit ismi oluşturmaya örnekler:

    Adres CON 3
    Satir CON adres*100







  3. 3
    amsterdam
    Üye
    pic basic pro komutları

    @ : : Assembly kodu (tek satirlik) eklemek için kullanilir.

    ASM . . ENDASM : Assembly dili kodlarini eklemek için kullanilmaktadir.

    BRANCH : Programin baska bir yere dallanmasini saglamaktadir ( = ON..GOTO )

    BRANCHL : Programin degisken içerikli bir konuma dallanmasini saglamaktadir.

    BUTTON : Pine bagli bir anahtardaki siçramalari düzenlemektedir.

    CALL : Assembly dilinde yazilmis alt programi çagirmaktadir.

    CLEAR : Tüm degiskenleri sifirlamaktadir.

    CLEARWDT : Watchdog timeri silmektedir.

    COUNT : Bir pindeki darbeleri saymaktadir.

    DATA : Eepromun ilk içerigini belirlemede kullanilmaktadir.

    DEBUG : Uygun pinden ve hizda (baud) asenkron seri çikis

    DEBUGIN : Uygun pinden ve hizda (baud) asenkron seri giris

    DISABLE : Debug yada Interrupt komutlarinin icrasini durdurmaktadir. (pasif etme)

    DTMFOUT : Istenilen pinden touch tonlar üretir.

    EEPROM : Eepromun ilk içerigini belirlemede kullanilmaktadir.

    ENABLE : Debug yada Interrupt komutlarinin icrasini aktif etmektedir.

    END : Islemleri durdurur ve düsük güç moduna geçmektedir.

    FOR… NEXT : Islemlerin tekrarinda kullanilmaktadir.

    FREQOUT : Bir pinde ikiden fazla frekans saglamaktadir.

    GOSUB : Belirlenen adresteki BASIC altprogramini çagirmaktadir.

    GOTO : Programinin icrasini belirlenen adrese götürmektedir.

    HIGH : : Pini aktif yapmaktadir. (lojik-1)

    HPWM : Programdan bagimsiz PWM sinyal üretmektedir.(sadece belirli Pic’erde)

    HSERIN : Programdan bagisiz asenkron seri giris.

    HSEROUT : Programdan bagisiz asenkron seri çikis.

    I2CREAD : I²C aygitlardan okumada kullanilir.

    I2CWRITE : I²c aygitlara yazmada kullanilir.

    INPUT : Pini giris yapmaktadir.

    LCDIN : Lcd hafizasindan (RAM) okumada kullanilir.

    LCDOUT : Karakterleri lcdde göstermektedir.

    LOOKDOWN : Degisken için sabit tablosunu arastirmaktadir.

    LOOKDOWN2 : Degisken için sabit-degisken tablosunu arastirmaktadir.

    LOOKUP : Tablodan sabit degeri almaktadir.

    LOW :2'> : Pini sifira çekmektedir.(lojik sifir)

    NAP : Geçici bir süre islemcinin enerjisini kesmektedir.

    OWIN : Tek kablo giris.

    OWOUT :: Tek kablo çikis.

    OUTPUT : Pini çikis yapmaktadir.

    PAUSE : Gecikme saglamaktadir. (ms)

    PAUSEUS : Gecikme saglamaktadir. (µs)

    PEEK : Registerden Byte’i okumada kullanilir.

    POKE : Registere Byte’i yazmada kullanilir.

    POT : Belirlenen pindeki potansiyometrenin degerini okumaktadir.

    PULSIN :: Bir pindeki darbe genisligini okumaktadir.

    PULSOUT : Pinde darbe üretmektedir.

    PWM : Pinde PWM sinyal üretmektedir.

    RCTIME : Pindeki darbe genisligini ölçmektedir.

    READ : Eepromdan Byte’i okumaktadir.

    READCODE : Kod hafizasindan kelime okumaktadir.

    RESUME : Kesmeden sonra programi kaldigi yere göndermektedir.

    RETURN : GOSUB komutuyla dallanilan alt programdan kaldigi yere geri döndermektedir.

    REVERSE : Pinin konumunu degistirmektedir.(girisse çikis çikissa giris yapar)

    SELECT CASE : Bir degiskeni farkli degerlerle karsilastirmaktadir.

    SERIN : Asenkron seri giris.

    SEROUT : Asenkron seri çikis.

    SHIFTIN : Senkron seri giris.

    SHIFTOUT : Senkron seri çikis.

    SLEEP : Belli bir süre için islemcinin enerjisini kesmektedir.

    SOUND : Belirlenen pinde ton yada beyaz gürültü olusturmaktadir.

    STOP : Programin icrasini durdurmaktadir.

    SWAP : Iki degiskenin degerini degistirmektedir.

    TOGGLE : Pini toggle durumuna almada kullanilir..

    USBIN : USB giris.

    USBINIT : USB ayarlama.

    USBOUT : USB çikis.

    WHILE… WEND : Sart dogru olana kadar programin (durumun) icrasini sürdürmede kullanilir.

    WRITE : Eeproma byte’i yazmada kullanilir.

    WRITECODE : Kod hafizasina kelime yazmada kullanilir.

    XIN : X-10 giris.

    XOUT : X-10 çikis.







  4. 4
    amsterdam
    Üye
    Pic programlamak için gereken temel seyler sunlardir.
    1-) Pic programlamak için pic Assembly dilini bilmek ve program yazarak bunu hex dosyasi haline getirmek
    2-) Pic programlayacak donanima sahip olmak, bunlar bilgisayar ve gerekli yazilimlardir.

    Assembler veya Compiler:

    WINDOWS/notepad
    MPLAB/Pfe

    Gibi bir text editöründe Pic Assembly dili ile yazilmis programi derlemeye yani HEX file haline getirmeye yarayan programdir.Bu is için biz Microchip firmasinin MPLAB içinde gelen MPASM programini kullanacagiz.

    Pic Assembly: Pic'in yapmasini istedigimiz islemleri, pic'in anlamasi için, kisa komutlardan olusturulmus bir dildir. Bu dil ile yazilan program ASM dosyasi olarak kaydedilir daha sonra MPASM ile HEX dosyasi haline getirilip,pic içine yazilir.

    Bir pic'i programlamak için yapmamiz gerekenler sirasi ile söyledir:

    1-) Bilgisayarimiza gerekli Software'i yüklemek
    2-) Pic Assembly dilinin genel kurallarini ögrenmek
    3-) 16F84'ün 35 komut setini ögrenmek
    4-) Program yazip ASM olarak kaydetmek
    5-) Programi hatasiz yazip Compile edebilmek
    6-) Compile edilip HEX haline gelmis dosyayi EASYPIC ile pic'e aktarmak.


    Son surum MPLAB ve MPASM yi indirmek icin asagıdaki line tıklayın

    http://ww1.microchip.com/downloads/e...mp740_full.zip

  5. 5
    amsterdam
    Üye
    AKIS DIYAGRAMLARI :


    Pic Assembler ile bir program yazmadan evvel, pic’in hangi adimlarla programi isleyecegini planlamamiz gerekmektedir.Bu planlama islemi akis diyagramlari ile yapilir.Akis diyagrami islenecek komutlarin sirasidir.Uzun ve karmasik programlarda, akis diyagramlari, hangi seviyeden programin ayrilacagini ve hangi komutlari yerine getirecegini, sonra tekrar nereye dönecegini göstermesi nedeni ile faydalidir. Akis diyagramlarinin kendine has sembolleri de vardir.


    Bir program yazilirken 3 blok halinde yazilir.Bu bloklar:



    1-) Etiket

    2-) Komut ( Equate)

    3-) Adres


    bloklaridir.


    ETIKET : Etiketler iki tiptir. Birinci tipi adres atanan etiketlerdir, ikinci tipi ise adres atanmayan etiketlerdir.Tüm etiketler birinci blok ‘a yazilir. Adres atanan etiketler EQUATE komutu ile kullanilir veya INC. Dosyasi sayesinde tanimlanirlar. Bu etiketler sayesinde tanimlanan registerler, program içinde tekrar tanimlamaya gerek kalmadan kullanilir


    PORTB EQU 0X06

    STATUS EQU 0X03


    BuradaPORTB ve STATUS Etikettir. EQU komutu ile tanimlanan bu registerler,daha sonra kullanildiginda, hangi adreste oldugu otomatik olarak pic tarafindan bilinir. Bir diger etiket çesidi ise adres atanmayan etiketlerdir. Adres atanmayan etiketler, pic ‘in çalismasi sirasinda dönecegi program seviyesini göstermekte kullanilir. Bu etiketler programci tarafindan yaratilirlar.


    BASLA

    START

    DÖNGÜ


    Gibi etiketler bu tip etiketlerdendir. Bir kisim adres atanan etiket de, programci tarafindan yaratilir.


    SAYAC


    Etiketigibi etiketler bu çesit etikettir. Adres atananbu etiketlerRAM alanina yazilir.Bu etiketleri INC. Dosyasi içine ilaveederek Equate tanimlarini yapmadan INC. dosyasi ile de kulanilabiliriz.


    ETIKET KURALLARI :


    1-)Etiketler birinci sütüna yazilir.

    2-)Etiketler de ingilizce harf karakterleri kullanilir.

    3-)Assembly komutundan etiket olmaz

    4-)Etiket en fazla31 karakter olabilir.

    5-)Etiket ile prograk içinde kullanimi ayni karakter özellikleri göstermelidir.

    6-)Etiket Harf veyaalt çizgi ile baslar.

    7-)Etiket içinde alt çizgi,rakam,soru isareti bulunabilir.




    ETIKET KOMUT ADRES
    STATUS EQU H’03’
    TRISB EQU H’86’
    SAYAC1 EQU H’0D’
    START
    CLRF PORTB
    BSF STATUS,5
    GOTO START




    Burada start etiketiprogramci tarafindan yaratilmistir ve bir adresi yoktur, bu etikete adres Assembler tarafindan atanir ve bunu biz bilemeyiz.



    Bir program yazilirkenküçük veya büyük harf seçimi programciya kalmistir. Kullanilan karakterler etiket ve adres kisminda ayni olduktan sonra problem çikmaz. Etiket te PORTB yazip adres kisminda Portb yazamayiz. Bu anlatilanlar EQU komutu kullanildiginda ve register tanimlarinin programci tarafindan yapildiginda geçerlidir. Eger INC. Dosyasi kullanilacaksa dosya içi karakterler ile programcinin yazi karakterleri ayni olmalidir. Yani INC. dosyasi içinde bir etiket büyük harf ile yazili ise,programci program içinde bu etiket kullanmak gerektiginde büyük harf kullanmalidir.


    BINARY ve HEXADECIMAL SAYILAR :


    Bilgisayar sistemlerinde sik kullanilan ikili (binary ) ve 16 li (hexadecimal ) sayi sistemlerine de kisaca göz atalim:


    0 ve 1 kullanarak sayilari ifade etmek mümkün müdür ? Günlük hayatta en çok kullanilan 10 tabanina göre aritmetiktir. Burada 10 sembol ile sayilar olusturulur bunlar :

    1 2 3 4 5 6 7 8 9 0 sembolleridir.Bu semboller ile ifade edilen bir çoklugu yalnizca iki sembolle veya 16 sembollü bir sistemle de ifade edebiliriz.Iki sembol söz konusu ise Binary 16 sembol söz konusu ise Hexadecimalaritmetik ten bahsedilir. Binary sistemin sembolleri

    0 1

    Hexadecimal sistem sembolleri ise:


    0 1 2 3 4 5 6 7 8 9 A B C D E F dir.


    10 lu sistemdeki bir sayiyi binary sayi sisteminde yazmak için, bize kolaylik saglayan su tabloyu göz önünde tutalim.


    2^0 =1

    2^1 =2

    2^2 =4

    2^3 =8

    2^4 =16

    2^5 =32

    2^6 =64

    2^7 =128

    2^8 =256


    10 lu sistemdeki bir sayiyi binary 'e çevirirken, busayiyi olusturan ,ikinin katlari seklinde yazilabilen sayilari büyükten küçüge dogru toplariz, burada ikinin her üs sayisi kullanilmalidir.Bir üs seklinde ifade edilemiyorsa 0X seklinde yazilir.Örnek :


    255 sayisini iki tabanina göre yazalim.


    128 + 64 + 32 + 16 + 8 + 4 +2 +1 sayilarinin toplami olarak yazilir bu da:


    1X2^7+1X2^6+1X2^5+1X2^4+1X2^3+1X2^2+1X2^1+1X2^0ola rak yazilabilir.


    Burada dikkat edilmesi gereken nokta kimizi olarak gösterilen2 nin tüm üs lerinin sira ile kullanilma zorunlugudur, bu siralama büyükten küçüge dogru olacaktir.Çarpim dan evvel olan katsayilar ikili sistemde yalniz 0 veya 1 olabilir,burada hepsi birdir.Sonuç olarak da 255 sayisinin binary karsiligi,bastaki katsayilar yanyana konarak bulunur.


    11111111 ( 8 tane 1 dir ).


    ÖRNEK 2 :



    129 sayisini ayni sekilde yazalim :


    128 + 1 dir

    Burada 128 den baslayarak ikinin üs 'sü seklinde tüm üsleri kullanarak129 sayisini elde edelim.


    1X2^7 +0X2^6+0X2^5+0X2^4+0X2^3+0X2^2+0X2^1+1X2^0


    Binary karsiligi" 10000001"olarakbulunur.Bu sekilde 8 bit ile 256 ya kadar olan sayilari binary olarak yazabiliriz bunun yetmedigi hallerde 12 bitle 2^12 =4096 veya 16 bitle 2^16=65536 ya kadar sayilari ifade edebiliriz.


    HEXADECIMAL SISTEM :


    16Sembol setinden olusan bir sistemdir.Elemanlari:


    0 1 2 3 4 5 6 7 8 9 A B C D E F dir.


    Burada decimal 10 sayisina A karsilik olarak gelmektedir, F de 15'e karsilik olur.0 ile birlikte 16 sembol içeren bu sayi sistemi hexadecimal sayi sistemidir,bu simgeler 12 li sayi sisteminde X=10 ve Sigma=11 dir.


    Bir sayinin Hexadecimal karsiligini bulmak için, binary de yaptigimiz islemi yapariz.


    16^0=1

    16^1=16

    16^2=256

    16^3=4096

    16^4=65536

    16^5=1.048.576


    Binary sistemde 8 basamakli 255 sayisini, hexadecimal sistemde iki basamak ile elde ederiz.


    256 sayisi hexadecimal olarak


    1X16^2+0X16^1+0X16^0 demektir"100 "olarak yazilir.


    255 sayisi için


    15X16^1+15X16^0 burada 15. karakter F oldugu için " 255 "decimal " FF "Hexadecimal

    olur.


    EQUATES : EQU komutu program yaziminin basinda INC. dosyasi kullanmadigimizda registerler adreslerinin tanimi için kullanilir.EQU komutu ile register'in bir sabitten olusan adresi tanimlanir veya bizim yarattigimiz bir file register için bir adres atanmasinda kullanilir.

    Bir sabit veya bir isim Equ komutu ile tanimlanabilir.


    MAX EQU3; 3 rakami nin adi MAX olsun,-bit yönlendirmeli komutla kullanildiginda bu sabit 3.bit'e karsilik olur-.



    FLAGSEQUH'09'; h'09' da flgs diye bir file register olsun


    BSFFLAGS,MAX; flags registerinin 3.bitini 1 yap


    SABITLER : Bir register adresini tanimlamada kullanilan bir haxadecimal sayidir.En çok MOVLW komutu ile kullanilir ve bir sabiti Write registere yazar.Sabitlerle kullanilan komutlar ileride verilecektir.Desimal sayilar da sabit olarak kullanilir.


    ORG : Program baslangiç adresini göstermek için veya interrup alt program baslangicini göstermek için kullanilir.


    END : Program komutlarinin sona erdigini Assembler'e gösterir,olmazsa derlemede hata mesaji verilir.


    SAYILAR :


    Hexadecimal sayilar birkaç sekilde yazilabilir


    0X06

    6

    06

    06h

    h'06'


    Biz program yazarken H'FF' seklindeki ifadeyi kullanacagiz.


    Binary sayilar B ile ifade edilirler B '11111111' tarzinda yazilirlar.


    Decimal sayilar D ile ifade edilirler D'255' seklinde yazilirlar.

  6. 6
    amsterdam
    Üye
    Pic 16F84'ün RAM belleginin iki bank'tan ibaret oldugunu söylemistik. Bunlar Bank 0 ve Bank 1'dir, degisik piclerde baska banklar da mevcuttur. Bir banktaki registerleri kullanmak için o bank'a geçmek gerekmektedir. Bank degistirmeislemleri STATUS registeri vasitasiyla yapilir.

    STATUS REGISTER

    Status register 8 bittir. Bu register'in 5. bitinin degistirilmesi ile 16F84 de bank degistirme islemi gerçeklestirilir.16F84'de Bank bitleri Status registerin 5. ve 6. Bitidir, 6. bit 0 kalmalidir.Yalniz 5. bit'in degistirilmesi bank degistirmek için yeterlidir. Tüm reset hallerinde 5. ve 6. bit 00 olur ve Pic bank 0'da bulunur.

    6. bit 0 5.bit 0 ise Bank 0
    6. bit 0 5.bit 1 ise Bank 1 olur

    Status register bitlerini degistirmek için kullanilan komut BSF ve BCF komutlaridir.

    BSF STATUS,RP0
    BSF STATUS,5
    BSF H'03',RP0
    BSF H'03',5

    Komutlari ile 5.bit 1 yapilir ve bank 1'e geçilir.1 yapilan 5. biti 0 yapmak için ise BCF komutunu kullaniriz.

    BCF STATUS,RP0
    BCF STATUS,5
    BCF H'03',RP0
    BCF H'03',5

    "STATUS , RP0" "'H03', RP0" ifadelerinde ki STATUS register adresi ve RP0 INC. Dosyasinda tanimlidir.INC dostasi kullanilmaz ise bunlar EQU komutu ile tanimlanmalidir. RP0 yerine, bit degeri olan 5 kullanildiginda bunu ayrica tanimlamak gerekmez.


    PORTLARIN GIRIS / ÇIKIS YAPILMASI

    Portlarin giris veya çikis olarak yönlendirilmesi için TRIS registeri kullanilir. PORTA TRISA ile PORTB TRISB registeri ile yönlendirilir.TRIS registeri 8 bittir. Her bir bit bir I/O kapisina karsiliktir. PORTB nin 8 I/O kapisi vardir,fakat PORTA da 5 I/O kapisi mevcuttur bu nedenle PORTA için TRIS registerinin ilk 5 bit'i kullanilir, diger bitler 0 olarak kalir.

    PORT A ve PORTB kapilari ya tüm olarak veya tek tek bit olarak giris, çikis yapilabilir.

    TRIS register bitleri :

    1 ise kapi GIRIS
    0 ise kapi ÇIKIS olarak yönlenir

    PORTA çikislarini kontrol eden TRISA register bitleri,asagidaki gibi ise çikislar su anlama gelir:



    BIT 7 6 5 4 3 2 1 0
    DEGER - - - 1 0 1 0 1
    SONUÇ - - - G Ç G Ç G



    PORTB çikislarini kontrol eden TRISB register bitleri, asagidaki gibi ise çikislar su anlama gelir.



    BIT 7 6 5 4 3 2 1 0
    DEGER 1 1 0 1 0 1 0 1
    SONUÇ Ç G Ç G Ç G Ç G



    PORTA ve PORTB çikislarinin hepsini birden çikis yapmak için kullanilan komut

    "CLRF" komutudur.

    CLRF TRISA tüm PortA kapilarini 0 yapar sonuçta tüm kapilar çikis olur.
    CLRF TRISB tüm PortB kapilarini 0 yapar sonuçta tüm kapilar çikis olur.

    PORT A veya PORTB çikislarinin tümünü farkli giris veya çikis olarak yönlendirmek istersek karsilik gelen TRISA ve TRISB register bitlerinin tümüne farkli 0 veya 1 degeri vermemiz gerekir. Böylece o bitlere denk gelen kapilar giris veya çikis olarak yönlenirler. Bunun için kullanilan komutlar söyledir:

    MOVLW B'11010101' ; write registere degerleri yaz
    MOVWF TRISB ; write register degerlerini trisb ye yaz

    BSF
    BCF

    Gibi komutlar da kuillanilabilir. Bu komutlarla istenen bitleri tek tek 0 veya 1 yapabiliriz.

    BSF (bit set file) TRISA veya TRISB nin ilgili bitini 1 yaparak karsilik olan A veya B port kapisini giris yapar.

    BCF (bit clear file) TRISA veya TRISB nin ilgili bitini 0 yaparak karsilik olan A veya B port kapilarini çikis yapar.

    BSF TRISA, 0 ; trisa'nin ilk biti 1 olur ve porta ilk bit giris olur.
    BCF TRISB, 1 ; trisb'nin 2 biti 0 olur ve portb nin ikinci biti çikis olur.

  7. 7
    amsterdam
    Üye
    ÖRNEK UYGULAMALAR

    Burada kullanilan RLF komutu yerine RRF komutunu koyarak tekrar deneyiniz.


    ;yanip sönen led programi
    ;PortB ledlerini sira ile yakan program
    ;sira ile yanan ledler
    ;RLF KOMUTU KULLANILMISTIR

    LIST P=16F84
    INCLUDE "P16F84A.INC"
    SAYAC1 EQU H'0C'
    SAYAC2 EQU H'0D'

    SAYAC3 EQU H'0E'

    BAS
    CLRF PORTB
    BCF STATUS, 0
    BSF STATUS,5
    CLRF TRISB
    BCF STATUS, 5
    MOVLW B'00000001'
    MOVWF PORTB ;port b nin ilk bitini yak
    TEKRAR
    CALL GECIKME ;gecikme döngüsüne gir
    RLF PORTB, F ;port b yi sola kaydir
    BTFSS STATUS, 0 ;carry flag 1 ise atla
    GOTO TEKRAR ;carry flag 1 degilse tekrara git
    GOTO BAS


    GECIKME
    MOVLW D'5'
    MOVWF SAYAC1
    DON1
    MOVLW D'250'
    MOVWF SAYAC2
    DON2
    MOVLW D'250'
    MOVWF SAYAC3
    DON3
    DECFSZ SAYAC3, F
    GOTO DON3
    DECFSZ SAYAC2, F

    GOTO DON2
    DECFSZ SAYAC1, F
    GOTO DON1
    RETURN
    END

    --------------------------------------------------------------------------------

    ;Deneme program
    ;COMF KOMUTU
    ;port b ye bagli 8 ledin yanip sönmesi (comf komutu ile)

    LIST P=16F84
    INCLUDE "P16F84A.INC"

    BAS
    CLRF PORTB ;Port b cikisleri low(sonuk)
    BSF STATUS, 5 ;Bank 1'e gec
    CLRF TRISB ;Port B yi çikis pozisyonuna getir
    BCF STATUS, 5 ;Bank 0 'a gel
    MOVLW B'11111111' ;write registere bu degeri ata
    MOVWF PORTB ;portb ye degeri uygula
    CALL GECIKME ;gecikme döngüsüne git
    COMF PORTB, F ;portb de bitleri sirayla 0 ve 1 yap
    CALL GECIKME
    GOTO BAS

    GECIKME
    MOVLW D'255'
    MOVWF SAYAC1

    DON1
    MOVLW D'255'
    MOVWF SAYAC2
    DON2
    DECFSZ SAYAC2,F
    GOTO DON2
    DECFSZ SAYAC1, F
    GOTO DON1
    RETURN
    END



    --------------------------------------------------------------------------------

    ;Deneme program
    ;SWAPF KOMUTU
    ;port b ye bagli 8 ledin sag sol 4 ledin yer degistirmesi

    LIST P=16F84
    INCLUDE "P16F84A.INC"
    SAYAC1 EQU H'0C'
    SAYAC2 EQU H'0D'


    BAS
    CLRF PORTB
    BSF STATUS,5
    CLRF TRISB
    BCF STATUS, 5
    MOVLW B'00001111'
    MOVWF PORTB ;port b nin ilk bitini yak
    CALL GECIKME ;gecikme döngüsüne git
    SWAPF PORTB, F ;portb de bitleri sirayla 0 ve 1 yap
    CALL GECIKME
    GOTO BAS

    GECIKME
    MOVLW D'255'
    MOVWF SAYAC1

    DON1
    MOVLW D'255'
    MOVWF SAYAC2
    DON2
    DECFSZ SAYAC2,F
    GOTO DON2
    DECFSZ SAYAC1, F
    GOTO DON1
    RETURN
    END

    --------------------------------------------------------------------------------

    ;döngü ile ilgili bir program denemesi
    ;karasimsek
    ;PortB ye bagli ledler saga sola yanar

    LIST P=16F84
    INCLUDE "P16F84A.INC"

    SAYAC1
    SAYAC2
    SAYAC3

    EQU
    EQU
    EQU
    H'0C'
    H'0D'
    H'0E'
    CLRF PORTB
    BCF STATUS,0
    BSF STATUS,5
    CLRF TRISB
    BCF STATUS, 5
    MOVLW B'00000001'
    MOVWF PORTB ;port b nin ilk bitini yak
    CALL GECIKME ;gecikme döngüsüne git
    RLF PORTB,F ;port b yi sola kaydÝr
    BTFSS PORTB, 7 ;7. bit 1 ise atla
    GOTO SOL
    SAG
    CALL GECIKME
    RRF PORTB,F ;port b ye atanan degerleri saga kaydir
    BTFSS PORTB, 0 ;0 . bit 1 ise bir komut atla
    GOTO SAG ;0. bit 1 deðilse sag etikete git
    GOTO SOL

    GECIKME
    MOVLW D'5'
    MOVWF SAYAC1
    DON1
    MOVLW D'250'
    MOVWF SAYAC2
    DON2
    MOVLW D'250'
    MOVWF SAYAC3
    DON3
    DECFSZ SAYAC3, F
    GOTO DON3
    DECFSZ SAYAC2, F

    GOTO DON2
    DECFSZ SAYAC1, F
    GOTO DON1
    RETURN
    END

    --------------------------------------------------------------------------------

    ;Deneme program
    ;SEVEN SEGMENT
    LIST P=16F84
    INCLUDE "P16F84A.INC"

    SAYAC1
    SAYAC2
    SAYAC3

    EQU
    EQU
    EQU
    H'0C'
    H'0D'
    H'0E'
    CLRF PORTB ;Port b cikislari low (sönük)
    BSF STATUS,5 ;Bank 1'e gec
    CLRF TRISB ;Port B yi cikis pozisyonuna getir
    BCF STATUS,5 ;Bank 0 'a gel
    BSF PORTB,0 ;RB0 daki led 'i yak

    BASLA
    MOVLW H'00'
    MOVWF SAYAC4
    DONGU
    MOVF SAYAC4,W
    ANDLW B'00001111'
    CALL _7SEG
    MOVWF PORTB
    INCF SAYAC4,F
    CALL GECIKME
    GOTO DONGU

    _7SEG
    ADDWF PCL,F
    RETLW H'3F'
    RETLW H'06'
    RETLW H'5B'
    RETLW H'4F'
    RETLW H'66'
    RETLW H'6D'
    RETLW H'7D'
    RETLW H'07'
    RETLW H'7F'
    RETLW H'6F'
    RETLW H'77'
    RETLW H'7C'
    RETLW H'39'
    RETLW H5E''
    RETLW H'79'
    RETLW H'71'
    GECIKME
    MOVLW D'5'
    MOVWF SAYAC1
    DON1
    MOVLW D'250'
    MOVWF SAYAC2
    DON2
    MOVLW D'250'
    MOVWF SAYAC3
    DON3
    DECFSZ SAYAC3, F
    GOTO DON3
    DECFSZ SAYAC2, F

    GOTO DON2
    DECFSZ SAYAC1, F
    GOTO DON1
    RETURN
    END

  8. 8
    serseri_06
    Yeni Üye
    sagol kardeş elinde de varsa 16f84 ile 0 _9999 sayıcı hex veya asm dosyası varsa gondere bilirmisin

  9. 9
    crazyayhan43
    Yeni Üye
    MERHABA ARKADAŞLAR BENIM MIKRODENETLEYİCİLER DERSİMDEN Bİ ÖDEVİM VARYA YARDIMCI OLURMUSUNUZ
    BEN SİZE ŞÖYLE ANLATAYIM
    DENEYSETİMİZ VAR ONUN ÜZERİNDE LED LER VAR
    ORDA
    B7 B6 B5 B4 B3 B2 B1 B0

    B3 B2 B1 B0 BU LEDLER SAĞA VE SOLA DOĞRU GİDİP GELECEK B0 GELİNCE

    B7 B6 B5 B4 BUNLAR YANIP SONECEKMIS BUNUN PROGRAMINI FOR KOMUTU İLE YAPACAKMISIZ
    YARDIMCI OLURMUSUNUZ arkadaşlar 15 saat tim kaldı yardımmmm

  10. 10
    karahilal
    Yeni Üye
    TEŞEKKÜRLER.

  11. 11
    kübi_89
    Yeni Üye

    --->: pic le ilgili bilgileri burada toplıyalım

    Reklam



    arkadaşlar elinizde kronometre ile ilgili herhangi kod ya da proteus uygulaması varsa lütfen paylaşır mısınız?:(çok acill.16f84 le yapılması gerekiyo:(

+ Yorum Gönder
5 üzerinden | Toplam : 0 kişi