sayıcı limit uyarısı

Başlatan onurinci, 20 Ağustos 2017, 05:28:53

onurinci

hocam netten bulduğum sizinde daha evvel müdahele ettiniz bir programa  5'in altına düşünce ve 30'un üstüne çıkınca GPIO.5 'i HIGH yap dedim ama olduramadım,
birde piyasadan hazır MAX7219 display kit aldım 595'leri atayım temiz bir şey olsun diye data,clock,enable aynen bağladım reaksiyon alamadım,sonuçta MAX7219 iç yapısıda shift register değilmi ?

@ DEVICE pic12F675, WDT_OFF, PWRT_ON, PROTECT_OFF, MCLR_OFF, INTRC_OSC_NOCLKOUT 
DEFINE OSCCAL_1K 1
DEFINE OSC 4

TRISIO= %011000 : GPIO= 0
CMCON= 7 : ANSEL= 0

SYMBOL dta= GPIO.1
SYMBOL clk= GPIO.0
SYMBOL aktar= GPIO.2

SYMBOL but2= GPIO.3
SYMBOL but3= GPIO.4
symbol alarm= GPIO.5

SAYAC  VAR WORD
Birler VAR BYTE
Onlar  VAR BYTE
Yuzler VAR BYTE
SAYI   VAR BYTE
X      VAR BYTE
I      VAR BYTE

'**********************
      PAUSE 200

      READ 0,sayac.BYTE1,sayac.BYTE0
IF SAYAC= 65535 THEN SAYAC= 0
      GOSUB AYARLA
     
   
     
Start:
' ALARM kontrol--------------------------------------------------------------- 
    IF SAYAC >30 And SAYAC <5 THEN
  PAUSE 500 :  high  alarm
   ENDIF     
'-----------------------------------------------------------------------------     


'     GOSUB rakamal
      GOSUB ekran
     
IF but2= 0 THEN
      GOSUB artir
ENDIF

IF but3= 0 THEN
      GOSUB eksilt
ENDIF
     
      goTO Start   





ekran:
      SHIFTOUT DTA,CLK,1,[Birler,Onlar,Yuzler]        'sayac
      HIGH aktar : PAUSEUS 2 : LOW aktar
      PAUSEUS 2
      RETURN

EKSILT:
SAYAC= SAYAC-1
IF SAYAC= 65535 THEN SAYAC= 0
      GOSUB AYARLA
      RETURN
     
     
ARTIR:
SAYAC= SAYAC+1                                                     
IF SAYAC= 1000 THEN SAYAC= 999
      GOSUB AYARLA
      RETURN
     
   
     

AYARLA:
X= SAYAC DIG 0
      GOSUB RAKAMAL
BIRLER= SAYI

X= SAYAC DIG 1
      GOSUB RAKAMAL
Onlar= SAYI

X= SAYAC DIG 2
      GOSUB RAKAMAL
Yuzler= SAYI
      WRITE 0,sayac.BYTE1,sayac.BYTE0 : GOSUB delay
delay:
FOR  I=0  TO 250
      PAUSE 1
NEXT
      RETURN
     
     
       
     
RAKAMAL:
      LOOKUP x,[63,6,91,79,102,109,125,7,127,111],SAYI
      RETURN
END




ete

Yazdığın karşılaştırma bence yanlış.
2 alternatifin var. Bunlar;
- SAYAC>5 and SAYAC<30 THEN ALARM=0 (ELSE ALARM=1)
- SAYAC<5 or SAYAC>30 THEN ALARM=1 (ELSE ALARM=0)
Bu şekilde olmalı. Bunlardanbirisini kullanmalısın.
Max7219 bir shift register gibi çalışıyor ama kendi iç registerleri var ve onalar data yazarak bu entegreyi çalıştırıyorsun Detayları hatırlamıyorum. Aşağıdaki linkte açıklamalar var incelemeni öneririm.
http://etepic.com/index.php/topic,2258.msg22189.html#msg22189
Ete

onurinci

hocam bad expresion uyarısı alıyorum,rica etsem üstteki yazılıma uygun bir şekilde yazarmısınız ? onu derleyeyim..

ete

#3
IF SAYAC>5 and SAYAC<30 THEN
   ALARM=0
ELSE
  ALARM=1
ENDIF


veya

IF SAYAC<5 OR SAYAC>30 THEN
   ALARM=1
ELSE
   ALARM=0
ENDIF

Ete

onurinci

hocam çok teşekkür ederim...

Powered by EzPortal