' *********** MASTER ICIN YAZILMIŞ BASIC PROGRAMI *************** ' 1111 clock, 1110 tamamlandi, 1101 gonderme basliyor, 1100 terminal iki, 1011 terminal 1 DEVICE=16F84A CONFIG XT_OSC , WDT_OFF , PWRTE_OFF XTAL = 4 Dim I as Byte Dim CHECKSUM as Byte Symbol LEDS = PORTB TRISA=%11100111 TRISB=%00000000 PORTA.0=1 PORTA.1=1 PORTA.2=1 LEDS=0 I=0 CHECKSUM=0 '-------------------------------------------------------------------------- MAIN: IF PORTA.0=0 THEN GOTO Loop DELAYMS 500 GOSUB KONTROL LEDS=I GOTO MAIN '-------------------------------------------------------------------------- Loop: I=I+1 LEDS = I DELAYMS 500 IF I>%00001001 THEN I=0 ENDIF GOTO MAIN '-------------------------------------------------------------------------- KONTROL: IF PORTA.1=0 THEN 'BUTON 1 KONTROL EDILIYOR GOSUB CLOCK PORTB=%11010000 'GONDERME BASLIYOR CHECKSUM=CHECKSUM+PORTB DELAYMS 10 GOSUB CLOCK PORTB=%10110000 'TERMINAL 1 BASLASIN CHECKSUM=CHECKSUM+PORTB DELAYMS 1 GOSUB CLOCK LEDS=I 'SAYI BILDIR PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 CHECKSUM=CHECKSUM+PORTB DELAYMS 1 GOSUB CLOCK PORTB=%11100000 'GONDERME TAMAMLANDI CHECKSUM=CHECKSUM+PORTB DELAYMS 1 CHECKSUM=CHECKSUM-%00100110 'CHECKSUM HESAPLANDI GOSUB CLOCK PORTB=I PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 DELAYMS 1 PORTB=0 ENDIF IF PORTA.1=0 THEN 'BUTON 1 KONTROL EDILIYOR GOSUB CLOCK PORTB=%11010000 'GONDERME BASLIYOR CHECKSUM=CHECKSUM+PORTB DELAYMS 10 GOSUB CLOCK PORTB=%11000000 'TERMINAL 2 BASLASIN CHECKSUM=CHECKSUM+PORTB DELAYMS 1 GOSUB CLOCK LEDS=I 'SAYI BILDIR PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 CHECKSUM=CHECKSUM+PORTB DELAYMS 1 GOSUB CLOCK PORTB=%11100000 'GONDERME TAMAMLANDI CHECKSUM=CHECKSUM+PORTB DELAYMS 1 CHECKSUM=CHECKSUM-%00100110 'CHECKSUM HESAPLANDI GOSUB CLOCK PORTB=I PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 DELAYMS 1 PORTB=0 ENDIF RETURN '-------------------------------------------------------------------------- CLOCK: LEDS=%11110000 'CLOCK VERIYOR DELAYMS 1 RETURN END '-------------------------------------------------------------------------- ' ********** TERMİNAL1 ICIN YAZILMIŞ BASIC PROGRAMI ************* DEVICE=16F84A CONFIG XT_OSC , WDT_OFF , PWRTE_OFF XTAL = 4 Dim CHECKSUM as Byte Dim LAMBA as Byte Dim SAYAC as Byte TRISB=%00001111 CHECKSUM=0 LAMBA=0 SAYAC=0 portb=0 '-------------------------------------------------------------------------- MAIN: SAYAC=0 IF PORTB=%00001111 THEN GOTO BASLAMA GOTO MAIN BASLAMA: IF PORTB=%00001101 THEN 'GONDERME BASLIYOR CHECKSUM=CHECKSUM+1 GOTO MAIN ELSE IF PORTB=%00001011 THEN 'TERMINAL 1 ALACAK CHECKSUM=CHECKSUM+1 GOSUB OKUMA GOTO MAIN ELSE IF PORTB=%00001110 THEN 'GONDERME TAMAMLANDI GOSUB YAZMA DELAYMS 1000 DELAYMS 1000 'YAZMA TAMAMLANDI DELAYMS 1000 PORTB=0 GOTO MAIN ELSE DELAYMS 1 SAYAC=SAYAC+1 IF SAYAC>100 THEN GOTO MAIN GOTO BASLAMA ENDIF OKUMA: IF PORTB=%00001011 THEN 'SAYI OKUMA DELAYUS 100 GOTO OKUMA ELSE IF PORTB=%00001111 THEN DELAYUS 100 GOTO OKUMA ELSE LAMBA=PORTB CHECKSUM=CHECKSUM+PORTB CHECKSUM=CHECKSUM-%00000010 ENDIF RETURN YAZMA: 'SAYI KONTROL EDILIP YAZILIYOR IF PORTB=%00001110 THEN DELAYUS 100 GOTO YAZMA ELSE IF PORTB=%00001111 THEN DELAYUS 100 GOTO YAZMA ELSE IF PORTB=CHECKSUM THEN 'CHECKSUM KONTROL EDILIYOR PORTB=LAMBA DELAYUS 200 PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 CHECKSUM=0 ENDIF RETURN ' ********** TERMİNAL2 ICIN YAZILMIŞ BASIC PROGRAMI ************* DEVICE=16F84A CONFIG XT_OSC , WDT_OFF , PWRTE_OFF XTAL = 4 Dim CHECKSUM as Byte Dim LAMBA as Byte Dim SAYAC as Byte TRISB=%00001111 CHECKSUM=0 LAMBA=0 SAYAC=0 portb=0 '-------------------------------------------------------------------------- MAIN: SAYAC=0 IF PORTB=%00001111 THEN GOTO BASLAMA GOTO MAIN BASLAMA: IF PORTB=%00001101 THEN 'GONDERME BASLIYOR CHECKSUM=CHECKSUM+1 GOTO MAIN ELSE IF PORTB=%00001100 THEN 'TERMINAL 2 ALACAK CHECKSUM=CHECKSUM+1 GOSUB OKUMA GOTO MAIN ELSE IF PORTB=%00001110 THEN 'GONDERME TAMAMLANDI GOSUB YAZMA DELAYMS 1000 DELAYMS 1000 'YAZMA TAMAMLANDI DELAYMS 1000 PORTB=0 GOTO MAIN ELSE DELAYMS 1 SAYAC=SAYAC+1 IF SAYAC>100 THEN GOTO MAIN GOTO BASLAMA ENDIF OKUMA: IF PORTB=%00001011 THEN 'SAYI OKUMA DELAYUS 100 GOTO OKUMA ELSE IF PORTB=%00001111 THEN DELAYUS 100 GOTO OKUMA ELSE LAMBA=PORTB CHECKSUM=CHECKSUM+PORTB CHECKSUM=CHECKSUM-%00000010 ENDIF RETURN YAZMA: 'SAYI KONTROL EDILIP YAZILIYOR IF PORTB=%00001110 THEN DELAYUS 100 GOTO YAZMA ELSE IF PORTB=%00001111 THEN DELAYUS 100 GOTO YAZMA ELSE IF PORTB=CHECKSUM THEN 'CHECKSUM KONTROL EDILIYOR PORTB=LAMBA DELAYUS 200 PORTB.4=PORTB.0 PORTB.5=PORTB.1 PORTB.6=PORTB.2 PORTB.7=PORTB.3 CHECKSUM=0 ENDIF RETURN END