;PROGRAM-5) DECFSZ kullanılarak döngü düzenlemeye örnek program. ; A port’unun 0. bit’ine bağlı butona 10 defa bastıktan sonra ; B port’unun 0. bit'ine bağlı olan LED'i yakan program. ;NOT: PIC’e uygulanan saat frekansı çok yüksek olursa bu program ; istenilen biçimde çalışmayacaktır. Bunun nedeni işlem basamaklarında açıklanmıştır. ;Şekil 7 – 2 : PROG5.ASM programını deneme devresi. ;===PROG5.ASM====02/05/2005================================ LIST P=16F628A INCLUDE "P16F628A.INC" __CONFIG _RC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ;---------------------------------------------------------- CLRF PORTB SAYAC EQU h'20' ;SAYAC saklayıcısının adresi BANKSEL TRISB ;BANK1'e geç MOVLW b'11111110' ;W saklayıcıya h'08' yükle MOVWF TRISB ;RB0 çıkış diğerleri giriş MOVLW b'11111111' ;W saklayıcıya h'FF' yükle MOVWF TRISA ;PORTA uçlarının tümü giriş BANKSEL PORTB ;BANK0'a geç MOVLW h'07' ;W saklayıcıya b’00000111’ yükle MOVWF CMCON ;PORTA girişleri dijital I/O BASLA MOVLW d'10' ;W'ye desimal 10 sayısını yükle MOVWF SAYAC ;W'deki 10 sayısını SAYAC'a yükle TEST BTFSC PORTA, 0 ;RA0 butonuna basıldı mı? GOTO TEST ;Hayır, tekrar test et NOP ;Evet, bir komut çevrimi bekle NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " NOP ; " DECFSZ SAYAC, F ;SAYAC=SAYAC-1, SAYAC=0 mı? GOTO TEST ;Hayır, PortA'yı test et BSF PORTB, 0 ;RB0'daki LED'i yak. DONGU GOTO DONGU END ;----------------------------------------------------------