of 24 /24
2.HAFTA Mikroişlemci Laboratuvarı PIC ASSEMBLY KOMUTLARI

2.HAFTA Mikroişlemci Laboratuvarı

Embed Size (px)

DESCRIPTION

2.HAFTA Mikroişlemci Laboratuvarı. PIC ASSEMBLY KOMUTLARI. PIC BELLE K YAPISI. PIC mikrodenetleyicisinin belleği, program ve RAM belleği olmak üzere iki ayrı bellek bloğundan oluşur . Program Belleği = Her bir bellek hücresi içerisine 14 bit uzunluğundaki program komutları saklanır . - PowerPoint PPT Presentation

Text of 2.HAFTA Mikroişlemci Laboratuvarı

2.HAFTA Mikroilemci Laboratuvar

2.HAFTA Mikroilemci Laboratuvar

PIC ASSEMBLY KOMUTLARI

PIC BELLEK YAPISIPIC mikrodenetleyicisinin bellei, program ve RAM bellei olmak zere iki ayr bellek bloundan oluur.

Program Bellei=Her bir bellek hcresi ierisine 14 bit uzunluundaki program komutlar saklanr.

RAM Bellek=Bu bellek ierisindeki file registerleri ierisine yerletirilen veriler PIC CPU'sunun almasn kontrol ederler. File registerlerin bellek uzunluu 8 bit'tir.

W registerBir PIC'te gerekleen tm aritmetik ilemler ve atama ilemleri iin W register kullanma zorunluluu vardr. rnein iki register iindeki veriler toplanmak istendiinde, ilk olarak registerlerden birinin ierii W registere aktarlr. Daha sonra da dier registerin ierisindeki veri W registeri ierindekiyle toplanr.

PIC ASSEMBLY TALMATLARIDaha nce ortalama bir PIC mikro denetleyici (PIC16F84, PIC16F877 gibi) komut setinde 35 adet komut bulunur. Program yazarken bu komutlar haricinde baz assembler derleyici talimatlarn da kullanmamz gerekir. Bunlar;Assembler KomutuAklamaLISTPIC Mikro denetleyici seme komutudur. Program, hangi PIC iin yazld ise programn banda LIST P=16F877 komutuyla mutlaka belirtilmelidir#INCLUDENormalde program yazmaya balamadan nce program iinde tm kaydedicileri tek tek tantmamz gerekir. Bunu her seferinde yapmak yerine tm bu tanmlamalarn yapld ve .inc uzants ile kaydedilmi dosyalar programmz iinden arabiliriz. Bylece her program iin bu zahmetten kurtulmu oluruz. Bu dosyalarda ayrca kaydedicilerin bitlerinin isimleri gibi bilgiler de yer almaktadr. Dolaysyla dosyay programmza ekledikten sonra bitleri numaralar ile deil, isimleri ile belirtebiliriz. Kullanm ekli: INCLUDE "P16F877.INCORGHangi programn MCU belleinde hangi adreste tutulacan tanmlar. Origin kelimesinden tretilen ORG komutu iki ama iin kullanlr;1.Program komutlarnn hangi adresten itibaren balayacan belirtmek iin kullanlr. Reset vektrnn 0000h adresinde olduunu daha nce sylemitik. { ORG 0x00; burada program balangcn belirledik }2. Eer donanm kesmesi (interrupt) kullanlacaksa, ORG komutu ile donanm kesmesi ile altrlacak program paracnn adresi de belirtilmelidir. Kesme vektr de 0004h adresinde yer alyordu. { ORG 0x04; burada ise kesme programc balangcn belirledik}. EQUAtama komutudur. Bu komut ngilizce EQUAL kelimesinden tretilmitir. Assembler sabitlerini veya RAM adreslerini tanmlar. Kullanm ekli:

SAYAC EQU 48h; SAYAC isimli GPR kaydedicisi 48 nolu adrese atar.ENDProgramn sonu. Programn nerede bittii END komutu ile mutlaka belirtilmelidir. Derleyici END komutunu bulamad zaman program derleyemez ve hata verir. PIC16F84 / PIC16F877 KOMUT SET SembolAklamab8 bitlik kaydedicinin ilgili bitini gsteren tanmlaycdHedef seici;d = 0 veya W ise Sonu W kaydedicisinde tutulur d = 1 veya F iseSonu f kaydedicisinde tutulurVarsaylan deer d = 1 dir.fKaydedici (file register) {rnein PORTB, STATUS gibi}kSabit bir say veya etiketWW kaydedicisi (akmlatr)PCProgram Sayc (Program Counter)__CONFIG _XT_OSC & _PWRTE_ON & _BODEN_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _CPD_OFF

__CONFIG h3F31 ;__CONFIG b11111100110001

Not: Program belleinin 2007h adresinde olup 14 bittir. Bu bitlere sadece PIC programlama aamasnda eriilebilmektedir.

SAYILARIN GSTERMYazm formatnda bir nemli konu da saylarn gsterim eklidir. Assembly iinde aksi belirtilmedike her say onaltlk tabanda kabul edilir. Aadaki tabloda hangi tabandaki saynn nasl gsterildii yer almaktadrKullanm Say Taban 0x23Onaltlk (hexadecimal) say sistemi23hOnaltlk (hexadecimal) say sistemih'23'Onaltlk (hexadecimal) say sistemid'12'Onluk(Decimal) say sistemib'1011'kili(Binary) say sistemiO574Octal(Sekizli) say sistemi Yer Deitirme veya Ykleme KomutlarKomut ve rnekngilizce tanmTrke aklamas1-MOVLW kMove Literal to WK sabit deerini W registerine ykler.MOVLW h 0F'WOF2-MOVF f,dMove ff registerinin ieriini W veya fe ykler.MOVF TEST,0d=0 WTEST d=1 TESTTEST3-MOVWF fMove W to fW registerin ieriini f registerine ykler.MOVWF PORTAPORTAWRegister eriini Deitirme Komutlar4-CLRFFClear ff registerinin ieriini siler (sfrlar).CLRFTRISATRISA000000005-CLRWClear WW registerin ieriini siler (sfrlar).CLRWW000000006-COMFF,dComplement fF registerinin iindeki say terslenir. Yani tm 1'ler 0, 0'lar 1 olur. Sonu W veya f registerine yklenir.COMFSAY, 0SAY= 0011011 ise, d=0 W11001010 d=1 olsayd SAY11001010Register eriini Deitirme Komutlar7-DECFf,dDecrement fF registerinin ierisindeki sayy "1" eksiltir. Registerin ierii h'00' ise, "1" eksiltildiinde h'FF' olur. Sonu W veya f registerine yazlr.DECFGIT,1GIT=h' 2C" ise 2C-1=2B d=1 GIT2B d=0 olsayd W2B8-INCFf,dIncrement fF registerinin ierisindeki sayy "1" artrr. Registerin ierii h' FF' ise, "1" arttrldnda h' 00' olur. Sonu W veya f registerine yazlr.INCFGIT, 0GIT=h' 2C' ise 2C+1=2D d=0 W2D d=1 olsayd GIT2DRegister eriini Deitirme Komutlar9-BCFf,bBit Clear ff registerinin ierisindeki saynn b.ninci bitini sfrlar.BCFPORTB,5PORTB = b'11111111' ise, PORTBb' 1101111110-BSFf,bBit Set fF registerinin ierisinde saynn b.ninci bitini 1 yapar.BSFPORTA,3PORTA = b 00000000' ise, PORTAb' 0000100011-RLFf,dRotate Left ff registeri ierisindeki sayy bir pozisyon sola kaydrr. Registerden taarak Carry bayrana yazlan bit, LSB'ye yazlr. Sonu W veya f registerine yklenir.RLFKAY,0 KAY=b'10110110' ise,

d=0 olduundan W01101101d=1 olsayd KAY01101101

Register eriini Deitirme Komutlar12-RRFF,dRotate Right fF registeri iersindeki sayy bir pozisyon saa kaydrr. Registerden taarak Carry bayrana yazlan bit, MSB'ye yazlr. Sonu W veya f registerine yklenir.RRFKAY,1KAY=b'10110111' ise,d=1 olduundan KAY11011011d=0 olsayd W1101101113-SWAPFf,dSwap nibbles inff registerinin ierisindeki ilk drt bit ile son drt biti yer deitirir. Sonu W veya f registerine yklenir.SWAPFDEG,1DEG = b' 00101111' ise, d=1 olduundan DEG11110010 d=0 olsayd W11110010

Program Akn Kontrol Etme Komutlar14-GOTOkGo to addressProgram ak k adresine dallanr.GOTODONGUProgram, DONGU etiketinin yazld yere dallanr ve buradan itibaren devam eder.15-CALLkCall subroutineProgram ak k etiketinin bulunduu yerdeki alt programa dallanr.CALLTIMERProgram TIMER etiketinin yazld alt program satrlarnn balangcna dallanr ve buradan itibaren devam eder.16-RETURNReturn from subrouitineAlt program komutlarnn en sonuna yazlan bu komut, program akn ana programa geri dndrr.17-RETLWReturn with Literal in WProgram akn alt programdan ana programa dndrr ve W registerine k sabitini ykler.RETLWH'2F'Alt programdan ana programa dndrr ve W registerine 2F yklenir.Program Akn Kontrol Etme Komutlar18-RETFIEReturn From InterruptProgram akn interrupt alt programndan ana programa dndrr.19-BTFSCf,bBit Test F, Skip if ClearF registerinin b.inci bit'ini test eder. Eer bu bit "0"sa program ak bir sonraki komuta geer.BTFSCPORTA,2PORTA=b00000100ise,1PORTA=b00000000ise,2 BTFSC PORTA,2 1 2 GOTO START MOVLW hFF20-BTFSSf,bBit Test F, Skip if SetF registerinin b.inci bit'ini test eder. Eer bu bit "1"se program ak bir sonraki komuta geer.BTFSSPORTA,0PORTA=b00000001ise,1PORTA=b00000000ise,2 BTFSC PORTA,2 2 1 GOTO START MOVLW hFF

Program Akn Kontrol Etme Komutlar21-DECFSZf,dDecrement f, Skip if ZeroF registerinin ieriini "1" azaltr. Register ierii 0'sa bir sonraki komuta atlar. Sonu W veya f registere yazlr.DECFSZSAYAC,1SAYAC=h' 2F ise 2F-1=2E d=0 olsayd Wh' 2E d=1 olduundan SAYACh'2E'22-INCFSZF,dIncrement f, Skip if ZeroF registerinin ieriini "1" arttrr. register ierii "0"sa bir sonraki komuta atlar. Sonu W veya f registere yazlr.INCFSZSAYAC, 1SAYAC=h' 2F ise 2F+1=30 d=1 SAYACh' 30' d=0 Wh'30"Mikro denetleyici Kontrol Komutlar23-CLRWDTClear VVatchdogTimerWatchdog timer' sfrlar. Aynca vvatchdog timer'n prescalar deerini de sfrlar. Status bitlerinden TO ve PD'yi "1"yapar.24-SLEEPGo into standby modeMikro denetleyiciyi uyuma moduna geirerek g harcamasn azaltr. Mikrodenetleyici uyuma modundan reset, watchdog timer ve TOCKI girii vastasyla kar.lem Yapmayan Komut25-NOPNo OperationBir komut saykl sresince hibir ilem yapmayan bir komuttur. Bir dahili komut sresinde alr. Bu nedenle zaman geciktirme ilemlerinde kullanlr.Mantksal Komutlar26-ANDLWKAND Literal with WW registerin ierii ile k sabitine AND ilemini uygular. Sonu W registerine yazlr.ANDLWb 0110001'W = b' 10011101' ise, b' 00110001' sabitin deeri b 00010001' AND ilemi sonucu Wb 00010001'27-ANDWFf,dAND W with fW registeri ile file register ieriine AND ilemini uygular. Sonu W veya f registerine yazlr.ANDWFTEST,1 W=b' 11111111' ise, TEST=b11011110 ise, b' 11011110' AND ilemi sonucud=0 ise Wb' 11011110' d=1 olduundan TESTb' 11011110 Mantksal Komutlar28-IORLWkInclusive OR Literal with WW registerin ierii ile k sabitine OR ilemini uygular. Sonu W registerine yazlr.IORLWB 00101000W =b' 10000100' ise b' 00101000' sabitin deeri b' 10101100' OR sonucu , W b' 1010110029-IORWFf,dW registeri ierii ile file registerin ieriine OR ilemini uygular. Sonu W veya f registerine yazlr.IORWFTEST,1 W = b' 10000100" ise, TEST = b' 00101000 ise, b' 10101100 OR sonucud=0 ise Wb' 10101100" d=1 olursa TESTb 0101100 'Mantksal Komutlar30-XORLWkExclusive OR Literal withWW registerin ierii ile k sabitine XOR ilemini uygular. Sonu W registerine yazlr.XORLWb'00101000W = b 00000000 ise b' 00101000 sabitin deeri b' 11010111" XOR sonucuWb' 11010111'31-XORWFf,dExclusive OR W with fW register ile file register ieriine XOR ilemini uygular. Sonu W veya f registerine yazlr.XORWFTEST,1 W = b' 00000000' ise, TEST = b' 00101000' ise, b' 11010111" XOR sonucud=0 ise Wb' 11010111 d=1 olursa TESTb'11010111Aritmetik lem Komutlar32-ADDWFf,dAdd W with fW registerinin ieriini f registeri ile toplar. Sonu W veya f registerine yazlr.ADDWFTOPLA,0W=h' 2A' ise,TOPLA=h ' 31' ise, h' 2A'+h' 31'=b' 5B'd=1 ise TOPLAh' 5B' d=0 olduundan Wh' 5B'33-ADDLWkAdd Literal andWW registerinin ieriini k sabit deeri ile toplar. Sonu W registerine yazlr.ADDLWH' 2F'W=h' B0 ise,h' B0'+h' 2F'=h' DF'Wh' DF'Aritmetik lem Komutlar34-SUBLNkSubtract W from LiteralK sabit deerinden W registeri ieriini karr. Sonu W registerine yazlr.SUBLWH' 90'W=h' 83 iseh' 90'-h' 83' = h' 07Wh' 0735-SUBWFf,dSubtract W from file registerf registerinin ieriinden W registerinin ieriini karr. Sonu W veya f registerine yazlr.SUBWFCIK,1W=h' 83' ise, CIK=h' 90' ise, h' 90'-h' 83'=h' 07d=0 ise Wh' 07 d=1 olduundan CIKh07'rnek 1: PORB nin 7. bitine bal ledi yakp sndren program

;==LED.ASM === LIST P=16F84#INCLUDEBSF STATUS,5 CLRF TRISB ; PORTB nin tm ular k yapld BCF STATUS,5 CLRF PORTB; PORTB ye b0000 0000 deeri yklendiDON:BSF PORTB,7 ; PORTB nin 7.bitini yakBCF PORTB,7 ; PORTB nin 7. bitini sndrGOTO DONENDrnek 2: PORTB ye bal 8 ledi drtl olarak (ilk nce LSB taraf daha sonra MSB taraf olacak ekilde) yakp, sndren sndren bir flashr devresi ve program:

Hazrlayan:r.Gr.Blent OBANOLU23RNEK 3. YURUYEN IIK UYGULAMASI