;PROGRAM-10) RA0 ucuna bağlı butona basınca PORTB saklayıcısındaki ;sayıyı “1” arttıran, RA7 ucundaki butona basınca da “1” azaltan program. ;Program ilk çalışmaya başladığında PORTB’deki hiçbir LED yanmayacaktır. ;Butonlara bastıkça değişen sayılar PORTB’ye bağlı olan LED’lerde binary ;sayısal düzeninde yanacaktır. Bu programda gecikme alt programı buton ;arkını elemek ve butona basılma süresini kontrol etmek amacıyla kullanılmıştır. ;Şekil 8 – 8 : PROG10.ASM programının akış diyagramı. ;===PROG10.ASM====06/05/2005============================== LIST P=16F628A INCLUDE "P16F628A.INC" __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ;---------------------------------------------------------- SAYAC1 EQU H'20' ;SAYAC1 saklayıcısının adresi SAYAC2 EQU H'21' ;SAYAC2 saklayıcısının adresi ORG h'00' ;Program kodlarının başlangıcı CLRF PORTB ;PortB'yi sıfırla BANKSEL TRISB ;BANK1'e geç CLRF TRISB ;PortB'nin tüm uçları çıkış MOVLW H'FF' ;W ? h'FF' MOVWF TRISA ;PortA'nın tüm uçları giriş BANKSEL PORTB ;BANK0'a geç MOVLW h'07' ;W saklayıcıya h’07’ yükle MOVWF CMCON ;CMCON?W,PORTA girişleri dijital RA0_TEST BTFSC PORTA,0 ;RA0 butonuna basıldı mı? GOTO RA7_TEST ;Hayır, RA7 butonunu test et. ARTIR MOVLW h'FF' ;W? d'255' SUBWF PORTB,W ;W=PORTB-W BTFSS STATUS,Z ;W=PORTB=255 mi? INCF PORTB,F ;Hayır, PORTB=PORTB+1 CALL GECIKME ;Buton arkını ele GOTO RA0_TEST ;RA0 butonunu test et. RA7_TEST BTFSC PORTA,7 ;RA7 butonuna basıldı mı? GOTO RA0_TEST ;Hayır, RA0 butonunu test et. AZALT MOVF PORTB,W ;W?PORTB BTFSS STATUS,Z ;PORTB=0 mı? DECF PORTB,F ;Hayır, PORTB=PORTB-1 CALL GECIKME ;Buton arkını ele GOTO RA0_TEST ;RA0 butonunu test et. GECIKME ;Gecikme alt programı başlangıcı MOVLW h'FF' ;Dış döngü (M sayısı) MOVWF SAYAC1 DONGU1 MOVLW h'FF' ;İç döngü (N sayısı) MOVWF SAYAC2 DONGU2 DECFSZ SAYAC2, F GOTO DONGU2 DECFSZ SAYAC1, F GOTO DONGU1 RETURN END ;-----------------------------------------------------------