;PROGRAM-3) PIC16F628A’nın 16 ucunu I/O ucu olarak kullanmaya örnek program. ;A port’unun tüm uçlarından (RA3 hariç) girilen gerilim “0” olduğu (butonlar ; basılı tutulduğunda) sürece, B port’unda o butona karşılık gelen LED'i ; söndüren program. B port’unun RB3 ucuna bağlı buton basılı tutulduğu ;sürece de RA3’e bağlı LED’i yakar. ;PROG2.ASM’de A port’unu devamlı olarak okumak için programı yeniden başlatmak ;amacıyla RESET butonuna basmak gerekiyordu. Programın bu eksikliğini gidermek ;için programın akışını "BASLA" etiketine gönderip, sonsuz döngüyü buraya kurmak ; gerekiyor. Akış diyagramını yeniden çizelim. ;===PROG3.ASM====29/04/2005================================= LIST P=16F628A INCLUDE "P16F628A.INC" __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF ;----------------------------------------------------------- ORG h'0000' CLRF PORTB ;PORTB'ye bağlı LED'leri söndür BANKSEL TRISB ;BANK1'e geç MOVLW b'00001000' ;W saklayıcıya h'08' yükle MOVWF TRISB ;RB3 giriş diğerleri çıkış MOVLW b'11110111' ;W saklayıcıya h'A7' yükle MOVWF TRISA ;RA3 çıkış diğerleri giriş BANKSEL PORTB ;BANK0'a geç MOVLW h'07' ;W saklayıcıya h’07’ yükle MOVWF CMCON ;PORTA girişleri dijital I/O BASLA MOVF PORTA,W ;PortA'yı oku, sonucu W'ye yaz MOVWF PORTB ;Butonların durumunu PortB'de göster MOVF PORTB,W ;PortB'yi oku, sonucu W'ye yaz MOVWF PORTA ;Butonların durumunu PortA'da göster GOTO BASLA ;Port’ları tekrar okumaya git. END ;Program sonu ;-----------------------------------------------------------