Programım:
LIST P=16f877
include P16F877.INC
#define SDA PORTC,4
#define SCL PORTC,3
#define DATA 0x2C
CBLOCK 20h
SAYAC1,SAYAC2,OLCUM1H,OLCUM1L,DEGER,SAYAC,TERM
ENDC
ORG 0x0000
GOTO KURULUM
TABLO
ADDWF PCL,F
DT 00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19
DT 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
DT 40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
DT 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79
DT 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
DT 00,01,02,03,04,05,06,07,08,09
KURULUM
movlw 0x0f
movwf PORTD
bsf STATUS,RP0
clrf TRISC
clrf TRISD
CLRF TRISA
CLRF TRISB
CLRF TRISE
movlw b'10001111'
movwf ADCON1
bcf STATUS,RP0
CALL KUR000
CALL LCDKURULUM
CALL SCYAZ
CALL GECIKME
;*****************************
BASLA
MOVLW H'C0'
CALL KOMUTYAZ
CALL OKU000
CALL TERMOSTAT
CALL GOSTER
CALL C0YAZ
CALL GECIKME
GOTO BASLA
;*****************************
TERMOSTAT
BTFSS OLCUM1H,7
GOTO ARTI1
BCF PORTC,0 ;eksili bir değer olduğundan ledi söndür
RETURN
ARTI1
MOVF OLCUM1H,W
MOVWF TERM
BTFSS OLCUM1L,7 ;0,5 ONDALIK var mı?
GOTO TAMAM1
MOVLW H'01' ;varsa değeri bir artiriyoruz
ADDWF TERM,F
TAMAM1 MOVF TERM,W
SUBLW D'21' ;21 ile karsilastiriyoruz
BTFSS STATUS,C
GOTO UST
ALT
BCF PORTC,0 ;LEDi yak
RETURN
UST
BSF PORTC,0 ;Ledi söndür
RETURN
C0YAZ
MOVLW A' '
CALL VERIYAZ
MOVLW A'D'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A'r'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A'c'
CALL VERIYAZ
MOVLW A'e'
CALL VERIYAZ
MOVLW A':'
CALL VERIYAZ
RETURN
SCYAZ
MOVLW H'80'
CALL KOMUTYAZ
MOVLW A'S'
CALL VERIYAZ
MOVLW A'I'
CALL VERIYAZ
MOVLW A'C'
CALL VERIYAZ
MOVLW A'A'
CALL VERIYAZ
MOVLW A'K'
CALL VERIYAZ
MOVLW A'L'
CALL VERIYAZ
MOVLW A'I'
CALL VERIYAZ
MOVLW A'K'
CALL VERIYAZ
MOVLW A':'
CALL VERIYAZ
RETURN
GOSTER
BTFSS OLCUM1H,7
GOTO ARTI
EKSI MOVLW A'-'
CALL VERIYAZ
COMF OLCUM1H,W
ADDLW .1
GOTO TAMAM
ARTI MOVLW A'+'
CALL VERIYAZ
MOVF OLCUM1H,W
TAMAM CALL TABLO
MOVWF OLCUM1H
SWAPF OLCUM1H,W
ANDLW H'0F'
ADDLW H'30'
CALL VERIYAZ
MOVF OLCUM1H,W
ANDLW H'0F'
ADDLW H'30'
CALL VERIYAZ
MOVLW A'.'
CALL VERIYAZ
BTFSS OLCUM1L,7
GOTO SIFIR
BES MOVLW A'5'
CALL VERIYAZ
RETURN
SIFIR MOVLW A'0'
CALL VERIYAZ
RETURN
LCDKURULUM
BSF PORTE,0
BSF PORTE,1
MOVLW H'0F'
CALL KOMUTYAZ
MOVLW H'01'
CALL KOMUTYAZ
MOVLW H'0C'
CALL KOMUTYAZ
MOVLW H'38'
CALL KOMUTYAZ
RETURN
KOMUTYAZ
BCF PORTE,1
MOVWF PORTB
BCF PORTE,0
CALL TIMER1
BSF PORTE,0
RETURN
VERIYAZ
BSF PORTE,1
MOVWF PORTB
BCF PORTE,0
CALL TIMER1
BSF PORTE,0
RETURN
KUR000
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'00100010'
CALL GONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101100'
CALL GONDER
MOVLW B'10011001'
CALL GONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'11101110'
CALL GONDER
CALL PGONDER
RETURN
OKU000
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101100'
CALL GONDER
CALL SGONDER
MOVLW B'10010001'
CALL GONDER
CALL OKU
CALL NGONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'10101010'
CALL GONDER
CALL SGONDER
MOVLW B'10010001'
CALL GONDER
CALL OKU
MOVF DEGER,W
MOVWF OLCUM1H
CALL AGONDER
CALL OKU
MOVF DEGER,W
MOVWF OLCUM1L
CALL NGONDER
CALL PGONDER
CALL SGONDER
MOVLW B'10010000'
CALL GONDER
MOVLW B'11101110'
CALL GONDER
CALL PGONDER
RETURN
AGONDER
BSF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BSF PORTC , 03
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
RETURN
PGONDER BSF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BSF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF STATUS , RP0
RETURN
SGONDER
BCF STATUS , RP0
BCF STATUS , RP1
BSF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
BCF PORTC , 03
BCF STATUS , RP0
RETURN
NGONDER
BSF STATUS , RP0
BCF STATUS , RP1
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF PORTC , 03
BCF STATUS , RP0
RETURN
OKU
BCF STATUS , RP0
BCF STATUS , RP1
CLRF DEGER
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
BCF STATUS,0
MOVLW B'10000000'
MOVWF SAYAC
DEVAM
BTFSS PORTC , 04
GOTO SIFIR0
MOVF SAYAC,W
ADDWF DEGER,F
SIFIR0 BCF STATUS , RP0
BCF STATUS , RP1
BCF PORTC , 03
BTFSS SAYAC,0
BSF PORTC , 03
RRF SAYAC,F
BTFSS STATUS,0
GOTO DEVAM
MOVF DEGER , W
BCF STATUS , RP1
BCF STATUS , RP0
;BCF PORTC , 03
RETURN
GONDER
MOVWF DATA
BCF STATUS , RP1
BCF STATUS , RP0
MOVLW .8
MOVWF SAYAC
GTEKRAR
BCF PORTC , 03
BTFSC DATA , 7
GOTO YEDI11
BSF STATUS , RP0
BCF PORTC , 04
BCF STATUS , RP0
BCF PORTC , 04
GOTO $+3
YEDI11 BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
RLF DATA,F
DECFSZ SAYAC,F
GOTO GTEKRAR
BCF PORTC , 03
BSF STATUS , RP0
BSF PORTC , 04
BCF STATUS , RP0
BSF PORTC , 03
MOVLW 0x00
BTFSC PORTC , 04
MOVLW 0x01
SUBLW 0x01
MOVWF DEGER
BCF PORTC , 03
MOVF DEGER , W
BCF STATUS , RP1
BCF STATUS , RP0
RETURN
GECIKME
MOVLW H'2F'
MOVWF SAYAC1
GECIKME1
MOVLW H'FF'
MOVWF SAYAC2
GECIKME2
DECFSZ SAYAC2,F
GOTO GECIKME2
DECFSZ SAYAC1,F
GOTO GECIKME1
RETURN
TIMER1
MOVLW H'3F'
MOVWF SAYAC1
DONGU1
MOVLW H'1F'
MOVWF SAYAC2
DONGU2
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
------------------------------------------------
Simülasyon hali:
------------------------------------
buna göre çizdiğim devre şeması:
(burada lcd-6'dan pic-8'e gidecek, onu yanlış çizmişim.) gerçi iki türlü de bir şey fark etmedi.
---------------------------
kontrollerim neticesinde:
1: Programı attırdım yazıcıoğlunda hocam.
2: Doğru besleme yaptım.
3: Kristal bağlı, kondansatörler 22pf.
4: MCLR direnci 10k. 1'de 5v var.
5: Pic'in besleme uçları hariç (veya doğrudan 5v gelen uçları hariç) hiç bir uçta bir gerilim göremiyorum. Aynı şekilde sensörde de. Aynı şekilde lcdde de.
6: Simülasyonda pic 16f877, ben 16f877A almışım. Aralarında fark yok neredeyse. Bu acaba çalışmamasına yol açar mı?
7: Assembly dilinde kodum. Simülasyonda falan 16f877 ile yaptığımdan koda da LIST P=16f877
include P16F877.INC ile başlamışım. sizce sorun bu da olabilir mi?
Pic mi çalışmıyor acaba. Ama daha yeni ve programı dün attırdım.
------------------
Gerçekten yardımlarınızı bekliyorum arkadaşlar.