Vous êtes sur la page 1sur 36

PIC ASSEMBLY

DNG DZENLEMEK: 1. SAYA KULLANARAK DNG DZENLEMEK (DECFSZ(Decrement File Register Skip if Zero) KOMUTU) Baz ilemlerin nceden belirlenen sayda tekrarlanmas gerekir. Belirlenen saya deeri (yani tekrar says) bir registera aktarlr ve her dngde registerin (yani sayacn) ii 1 azaltlr (DECFSZ komutu ile). Saya=0 olunca dng biter.

PIC ASSEMBLY Baz ilemlerin nceden belirlenen sayda tekrarlanmas gerekebilir. Bu durumda programc tarafndan belirlenen bir kayt saya olarak kullanabilir. Saya u ekilde hazrlanr:
nce saya ierisine tekrar saysn belirleyen say yklenir. Her ilem tekrarnda saya 1 azaltlr. (DECFSZ komutu kullanlr.) Saya 0 olduunda program ya bitirilir ya da baka bir yere dallandrlr.

PIC ASSEMBLY
2. KARILATIRMA YAPARAK DNG DZENLEMEK KOMUTLARI) (SUBLW , SUBWF , INCF , DECF

Baz ilemlerin nceden belirlenen sayda tekrarlanmas gerekir. Bir register saya olarak belirlenir. Her dnte saya bir arttrlr. Arttrma ilemi INCF komutuyla yaplr. Saya deerine ulanca dngden klr. Dngnn tekrar says register ierisine yklenen say ile belirlenir. Saya deikeni ierisindeki say dngnn her tekrarnda bir arttrlr ve SUBLW komutuyla sayatan W nin ierii karlr. karma ilemi neticesinde STATUS registerinin 0. ve 2. bitleri etkilenir. Bu bitler BTFSC komutu ile test edilir. Test sonucunda istenilen deere ulanca dngye son verilir.

PIC ASSEMBLY

SUBWF Komutu: karma yapan komuttur. karma ilemi sonucunda etkilenen C ve Z bitleri ierisindeki deer, W ve F registerlerinin byklne baldr. F>W Z= 0 ve C= 1 ; F=WZ= 1 ve C= 1 ; F<W Z= 0 ve C= 0 SUBLW Sbt durumunda ise Sbt >W Z= 0 ve C= 1 ; Sbt =WZ= 1 ve C= 1 ; Sbt <WZ= 0 ve C= 0

PIC ASSEMBLY

SUBWF Komutu: karma yapan komuttur. karma ilemi sonucunda etkilenen C ve Z bitleri ierisindeki deer, W ve F registerlerinin byklne baldr.

F>W Z= 0 ve C= 1 ; F=W Z= 1 ve C= 1 ; F<W Z= 0 ve C= 0

SUBLW Sbt durumunda ise Sbt >W Z= 0 ve C= 1 ; Sbt =WZ= 1 ve C= 1 ; Sbt <WZ= 0 ve C= 0

PIC ASSEMBLY
rnek:A port unun 1. bitine bal butona 10 defa bastktan sonra B port unun 0. bitine bal LEDi yakan program yaznz.

PIC ASSEMBLY
LIST INCLUDE EQU CLRF BSF CLRF MOVLW MOVWF BCF MOVLW MOVWF TEST BTFSC GOTO NOP NOP NOP . . . . NOP DECFSZ GOTO BSF END PORTA,1 TEST ;PORTAnn 1.biti o m?(yani butona basldm) Hayr ise TEST etiketine git.Evetse bir sonraki komuttan devam et P=16F84A PIC16F84.INC h0C PORTB STATUS,5 TRISB HFF TRISA STATUS,5 d10 SAYAC ;Wya 10 deeri yklenir SAYAC reg. Na W nun ierii yklenir

SAYAC

BASLA

;15 adet NOP komutu koymamzn sebebi PICe ksa bir sre gecikme salayarak butona baslma ileminin alglatlmasdr. Sizin bir kere butona basmanz PIC iin birden fazla basmanz anlamna gelebilir. Bu yzden 1 defa baslmas iin ksa bir gecikme saladk

SAYAC, F TEST PORTB, 0

;Sayacn deerini 1 azalt sonucu sayaca yaz ;Eer sayac=0 deilse TEST etiketine git. Eer sayac=0 ise bir sonraki komuttan devam et. PORTBnin 0. bitini 1 yap (yani LEDi yak) ;Son

PIC ASSEMBLY
ZAMAN GEKTRME Baz ilemlerin yaplmas esnasnda belirli bir zaman hibir ey yaplmadan beklenmesi gerekir. PIC16F84e uygulanan 4 Mhzlik osilatr sinyalinin 1 komutu icras iin 4 pals gerekir. Dolaysyla PICin 1 komutu icra etmek iin kulland frekans, dardan uygulanan sinyalin ne der ve 1 Mhz olur. te Fosc/4 deerindeki bu deere dhil komut saykl denir. 1Mhzlik sinyalin dhil komut peryotu da 1S olacaktr. Baz komutlarn icras ise 2 komut saykllk zaman alr.

1MHz lik dahili frekans n bir saykl (peryodu);

PIC ASSEMBLY

CLRF PORTB 0,4 sn BSF STATUS,5 0,4 sn olarak bulunur.

PIC ASSEMBLY

PIC ASSEMBLY
Tek Dng ile Minimum Zaman Geciktirme Bir geciktirme dngs hazrlanrken saya olarak kullanlacak bir file register tanmlanr. Bu registerin ierisine dngnn tekrar says yklendikten sonra DECFSZ komutu ile tekrar saysndan her defasnda 1 kartlr. karma sonucu 0 olunca dng sona erdirilir.
KOMUT MOVLW MOVWF DONGU DECFSZ GOTO SAYAC,F DONGU 1*0 +2 2*0 TOPLAM 4 saykl H01 SAYAC KOMUT SAYKILI 1 1

PIC ASSEMBLY
Tek Dng ile Maksimum Zaman Geciktirme Saya ierisine yklediiniz sayy HFF (desimal 255) yaparsanz yukarda verilen gecikme dngsnden maksimum gecikmeyi elde ederiz.
KOMUT MOVLW MOVWF DONGU DECFSZ GOTO SAYAC,F DONGU 1*254 +2 2*254 TOPLAM 766 saykl HFF SAYAC KOMUT SAYKIL 1 1

PIC ASSEMBLY
KOMUT SAYKIL SAYISININ BULUNMASI Dngdeki saykl says programn banda saya adl registere atanan sayya (N) bal olduu grlmektedir. yleyse bir dngnn ka saykllk gecikme oluturacan bulan bir forml oluturacak olursak
KOMUT MOVLW MOVWF DONGU DECFSZ GOTO SAYAC,F DONGU TOPLAM 1*(N-1) +2 2*(N-1) 1+1+N-1+2+2N-2=3N+1 HN SAYAC 1 1 KOMUT SAYKIL

KSS =3N+1 N ok bykse KSS=3N diyebiliriz.

PIC ASSEMBLY
KOMUT SAYKIL SAYISININ BULUNMASI

PIC ASSEMBLY
FT DNGL ZAMAN GECKTRME Tek dngl gecikme programyla oluan maksimum gecikme (766 evrimlik sre) baz uygulamalar iin az gelebilir. Bu durumda i ie iki veya daha fazla dng kullanlabilir.

PIC ASSEMBLY

TSS=3x255x255+5x255+4=196.354 Yaklak olarak KSS KSS=3XMXN le hesaplanabilir.

PIC ASSEMBLY

3 dngl bir gecikme altprogram yazalm. Fosc=4 Mhz iin toplam 50.070.529 mikrosaniye ve yaklak 50 saniye eder

PIC ASSEMBLY
RNEK: ift dngl bir zaman geciktirme programnda 12 ms lik bir gecikme isteniyorsa M ve N saylar ne olmaldr. (PICe 4MHz lik bir frekans uygulanmaktadr).

12ms=12000sn eder. Dahili clock frekans 1MHz olduundan 12000 komut saykl gerekir. 12000=3*M*N dir. M=N olarak dnlrse 12000=30M2 M2=4000 M=63,2 dir. Yaklak 63 desimal dir. Yani H3F M=H3F N=H3F

PIC ASSEMBLY

ALT PROGRAMLAR Program ierisinde defalarca tekrar edilmesi gereken komut dizilerini srekli yazmak yerine, bu komut dizilerini altprogramlar eklinde yazarak hem bellek alanndan tasarruf edilmi olur, hem de program sadelik kazanr. Altprogramlar ana programdan CALL komutu ile arlr ve altprogramn almas bittikten sonra ana programa RETURN komutu ile dn salanr.

PIC ASSEMBLY

PIC ASSEMBLY

PIC ASSEMBLY
rnek: Port B ye bal olan tm ledleri belirli zaman aralklarnda yakp sndren program.

LIST P=16F84 INCLUDE "P16F84.INC" SAYAC1 EQU H'20' SYACA2 EQU H'21' CLRF PORTB BANKSEL TRISB CLRF TRISB BANKSEL PORTB TEKRAR MOVLW h'00' MOVWF PORTB CALL GECIKME MOVLW h'FF' MOVWF PORTB CALL GECIKME GOTO TEKRAR GECIKME MOVLW h'FF' MOVWF SAYAC1 DONGU1 MOVLW h'FF' MOVWF SAYAC2 DONGU2 DECFSZ SAYAC2,F GOTO DONGU2 DECFSZ SAYAC1,F GOTO DONGU1 RETURN END

rnek
RA0 ucuna bal butona basnca PortB saklayacsndaki sayy 1 artran RA7 ucundaki butona basnca 1 azaltan program Program ilk altndaki Portb deki ledler yanmayacaktr.

Bit Kaydrma
SOLA KAYDIRMA : RLF komutu, belirlenen bir saklayc ierisindeki bit lerin pozisyonunu defasnda bir sola kaydrmak iin kullanlr. Saklayc ierisindeki bitler sola kaydnda MSB bit i , STATUS saklaycda bulunan cary (tama ) bayra ierisine yazlr. Cary bayra ierii ise saklaycnn LSB bit ine yazlr. MSB (Most Significant Bit en soldaki bit ) LSB( Least Signicificant Bit - en sadaki bit) RLF Saklayc d

Hedef olarak W belirtilmise kaydrma sonucu elde edilen bit paterni W saklaycya, F ise genel amal saklaycya yazlr. MOVLW h86 MOVWF MEM RLF MEM , F

RlF
CARRY TAIMA 1 MSB LSB

RNEK:
PortB , ye bal 8 LED zerindeki bir LED nin yann belirli aralklarla kaydran ve kayan LED en sone geldiinde tm LEDler snk kalan program yaznz.
SAYAC1 SAYAC2 CLRF BCF BAKSEL CLRF BAKSEL MOVLW MOVWF TEKRAR CALL GECKME RLF PORTB,F BTFSS STATUS,O GOTO TEKRAR ; Gecikme Yao ; PortB deki sola kaydr ; Cary bayra 1 mi ;Hayr EQU EQU PORTB STATUS,0 TRISB TRISB PORTB H01 PORTB H20 H21

DONGU GOTO DONGU GECKME MOVLW hFF MOVWF SAYAC1 DONGU1 MOVLW hFF SAYAC2 DONGU2 DECFSZ SAYAC2,F GOTO DONGU2 DECFSZ SAYAC1,F GOTO DONGU1 RETURN END

Bit Kaydrma
SAA KAYDIRMA : RRF komutu, belirlenen bir saklayc ierisindeki bit lerin pozisyonunu defasnda birsaakaydrmak iin kullanlr. Saklayc ierisindeki bitler saa kaydnda LSB bit i , STATUS saklaycda bulunan cary (tama ) bayra ierisine yazlr. Cary bayra ierii ise saklaycnn MSB bit ine yazlr. MSB (Most Significant Bit en soldaki bit ) LSB( Least Signicificant Bit - en sadaki bit)

PIC ASSEMBLY

PIC ASSEMBLY

PIC ASSEMBLY

PIC ASSEMBLY
RETLW : Altprogramndan W ye bir say / sabit ykle ve geri dn

CALL : Alt program arr. ADDWF : W ve f kaytlarn topla.

PCL (Program Counter Low Byte): bir sonra altrlacak komutun program belleindeki adresini tutar.

PIC ASSEMBLY

PIC ASSEMBLY

A port un 0.nci bitine bal butona 10 defa bastktan sonra B port unun 0.nci bitine bal led i yakan program yaznz.

Vous aimerez peut-être aussi