PİC16F877A SERİSİ
Bu örneğimiz de PİC16F877A serisinde seri iletişim(usart) ile LCD ekrana veri göndermeyi göreceğiz.
Örnekte gerçekleştirmek istediğimiz Ternminal Ekranına yazdığımız ifadenin LCD ekranında eş zamanlı olarak gözükmesini sağlayacaz. Bu işlem için öncelikli olarak yapmamız gereken Proteusta INSTRUMENTS sekmesinden VIRTUAL TERMİNAL’i , DEVİCES sekmesinde de PİC16F877A mikcro çipini ve LM016L kodlu LCD ekran kullanacaz.
Gerekli devreyi kurduktan sonra öncelikle seri iletişim için kullanacağımız SPRG değerini alttaki tabloya göre hesaplamasını yapıyoruz.
VIRTUAL TERMINAL için kullanacağımız Baud Rate değerimiz 9600.
FOSC değerimiz işlemcimizin Frenaks değeri.
Bulacağımız X değeride SPBRG değerimiz olacak ve kod kısmında bu değeri SPBRG registerına atayacağız.
Gerekli hesaplamayı yaptıktan sonra kodumuzu yazalım. (Benim yazdığım kod için İşlemcinin hızı 8 MHZ olup X değerimizi decimal olarak 12 bulduk).
INCLUDE<P16F877A.INC>
SAYAC EQU 0X20
SAYAC1 EQU 0X21
TERMINAL EQU 0X22
LCD_DATA EQU 0X23
ORG 0X00
GOTO AYARLAR
AYARLAR
BANKSEL TRISB
CLRF TRISB
MOVLW D’12’
MOVWF SPBRG
MOVLW 0X00
MOVWF TXSTA
BANKSEL PORTB
CLRF PORTB
CALL LCD_AYAR
MOVLW H’90’
MOVWF RCSTA
OKU
BTFSC PIR1,5
CALL TERMINAL_OKU
GOTO OKU
TERMINAL_OKU
MOVF RCREG,W
MOVWF TERMINAL
CALL VERI_YAZ
BCF PIR1,5
RETURN
VERI_YAZ
MOVWF LCD_DATA
SWAPF LCD_DATA,W
CALL VERI_GONDER
MOVF LCD_DATA,W
CALL VERI_GONDER
RETURN
VERI_GONDER
ANDLW 0X0F
MOVWF PORTB
BSF PORTB,5
BSF PORTB,4
CALL GECIKME
BCF PORTB,5
RETURN
LCD_AYAR
MOVLW H’80’
CALL KOMUT_YAZ
MOVLW H’02’
CALL KOMUT_YAZ
MOVLW H’0C’
CALL KOMUT_YAZ
MOVLW H’28’
CALL KOMUT_YAZ
RETURN
KOMUT_YAZ
MOVWF LCD_DATA
SWAPF LCD_DATA,W
CALL KOMUT_GONDER
MOVF LCD_DATA,W
CALL KOMUT_GONDER
RETURN
KOMUT_GONDER
ANDLW 0X0F
MOVWF PORTB
BCF PORTB,4
BSF PORTB,5
CALL GECIKME
BCF PORTB,5
RETURN
GECIKME
MOVLW H’60’
MOVWF SAYAC
D1
MOVLW H’60’
MOVWF SAYAC1
D2
DECFSZ SAYAC1,F
GOTO D2
DECFSZ SAYAC,F
GOTO D1
RETURN
END
Kodu kısaca anlatacak olursak AYARLAR kısmında hesaplama sonucu bulduğumuz X değerimizi SPBRG registerına atıyoruz ve programlar için gerekli olan TXSTA ve RCSTA registerları için değerleri Datasheetten bakarak giriyoruz. Ayrıca LCD için gerekli olan ayarlarıda bu bölümde gerçekleştiriyoruz.Daha sonra PIR1 registerın 5. Biti ile veri gelip gelmediğini kontrol edip eğer veri geliyorsa veriyi okuyup LCD ekrana yazmasını sağlıyoruz.
Pic 16F877A serisinde 8 Bit İleri/Geri sayaç deneyini görmek istiyorsanız tıklayınız…
Bilgisayar Mühendisliği ile ilgili diğer yazıları incelemek istiyorsanız tıklayınız…