keypadla zamanlayıcı

Başlatan hakıkat, 10 Ocak 2013, 18:38:50

hakıkat

#30
Tekrardan merhabalar
Bu sureçte uşğraştığım program çalıştı ama genel bütün işlemler verici üzerinde gerçekleştirmekte onun için programı
değiştirmeyi düşünüyorum.Verici kısmının sadece reset yapmasını ve genel tuş bilgisini göndermesini istiyorum.Alıcı
kısmının ise hem gelen tuş bilgisini okuyup onlar basamağına ve birler basamağına dünüştürerek kare tuşuyla zamanı
devreye koymak istiyorum.Genel bir taslak oluşturdum programın sadece reset kısmı çalışmakta diğer kısmı olmamaktadır
sorunun alıcı kısmındaki gelen tuşları okuma kısmında ve onlar basamağına dönüştürme kısmında kaynaklandığını biliyorum
ama sorun nasıl giderilir onu tam yapamadım yardım eden olursa sevinirim.teşekkürler.

verici kısmı
@ DEVICE pic16F628A 'islemci 16F628A
@ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer kapali
@ DEVICE pic16F628A, PWRT_ON 'Power on timer acik
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullaniliyor.
@ DEVICE pic16F628A, XT_OSC   'Dahili osilator kullanilacak
@ DEVICE pic16F628A, BOD_OFF
@ DEVICE pic16F628A, LVP_OFF

define OSC 4

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1 yuksek hiz
DEFINE HSER_SPBRG 25  '9600 baud @ 4mhz
DEFINE HSER_CLROERR 1
       
TRISB=%00000000
PORTB=0
TRISA =%00000111
PORTA=0
OPTION_REG=%10000101   
CMCON=7

SYMBOL LED=PORTB.6
SYMBOL UYANDIRMA=PORTB.7
SYMBOL SATIR1=PORTB.0
SYMBOL SATIR2=PORTB.3
SYMBOL SATIR3=PORTB.4
SYMBOL SATIR4=PORTB.5
SYMBOL SUTUN1=PORTA.0
SYMBOL SUTUN2=PORTA.1
SYMBOL SUTUN3=PORTA.2
SAYI   VAR WORD
ZAMAN  VAR WORD
TUS    VAR BYTE
VER    VAR byte
TOPLAM VAR BYTE
OB     VAR BYTE
BB     VAR BYTE
A      VAR BYTE
B      VAR BYTE
L      VAR BYTE
R      VAR BYTE
G      VAR BYTE
I     VAR BYTE
CLEAR
PAUSE 200

  BASLA:
  LOW SATIR1
IF SUTUN1=0 THEN
TUS=1:GOSUB GONDER
WHILE SUTUN1=0
LED=1
WEND
ENDIF
IF SUTUN2=0 THEN
TUS=2:GOSUB GONDER
WHILE SUTUN2=0
LED=1
WEND
ENDIF
IF SUTUN3=0 THEN
TUS=3:GOSUB GONDER
WHILE SUTUN3=0
LED=1
WEND
ENDIF
     HIGH SATIR1
  LOW SATIR2
IF SUTUN1=0 THEN
TUS=4:GOSUB GONDER
WHILE SUTUN1=0
LED=1
WEND
ENDIF
IF SUTUN2=0 THEN
TUS=5:GOSUB GONDER
WHILE SUTUN2=0
LED=1
WEND
ENDIF
IF SUTUN3=0 THEN
TUS=6:GOSUB GONDER
WHILE SUTUN3=0
LED=1
WEND
ENDIF
    HIGH SATIR2
   LOW SATIR3
IF SUTUN1=0 THEN
TUS=7:GOSUB GONDER
WHILE SUTUN1=0
LED=1
WEND
ENDIF
IF SUTUN2=0 THEN
TUS=8:GOSUB GONDER
WHILE SUTUN2=0
LED=1
WEND
ENDIF
IF SUTUN3=0 THEN
TUS=9:GOSUB GONDER
WHILE SUTUN3=0
LED=1
WEND
ENDIF
   HIGH SATIR3
  LOW SATIR4
IF SUTUN1=0 THEN
G=1:GOSUB RES
WHILE SUTUN1=0
LED=1
WEND
ENDIF
IF SUTUN2=0 THEN
TUS=0:GOSUB GONDER
WHILE SUTUN2=0
LED=1:pause 300:LED=0
WEND
ENDIF
IF SUTUN3=0 THEN
TUS=12:GOSUB GONDER
WHILE SUTUN3=0
LED=1
WEND
ENDIF
    HIGH SATIR4
    LED=0
pause 100
GOTO BASLA


  RES:
     IF G=1 THEN
      TUS=0:G=0:LED=0
      VER=255
      UYANDIRMA=1
     GOSUB GONDER
     UYANDIRMA=0
LED=1:pause 200:LED=0:TUS=0:VER=0
     ENDIF
RETURN

GONDER:
    HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
    HSEROUT ["B","U","L",VER,10,13]
 
RETURN
END

'*******************************************************************************

alıcı kısmı
@ DEVICE pic16F628A 'islemci 16F628A
@ DEVICE pic16F628A, WDT_OFF 'Watch Dog timer kapali
@ DEVICE pic16F628A, PWRT_ON 'Power on timer acik
@ DEVICE pic16F628A, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F628A, MCLR_OFF 'MCLR pini kullaniliyor.
@ DEVICE pic16F628A, XT_OSC   'Dahili osilator kullanilacak
@ DEVICE pic16F628A, BOD_OFF
@ DEVICE pic16F628A, LVP_OFF

define OSC 4

TRISB=%00000010
PORTB=0
TRISA =%00000000
PORTA=0
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1 yuksek hiz
DEFINE HSER_SPBRG 25  '9600 baud @ 4mhz
DEFINE HSER_CLROERR 1

SYMBOL GIE  =INTCON.7   'genel interruptlarý açýyor
SYMBOL PEIE =INTCON.6   'peripheral interruptlarý açýyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit
SYMBOL T0IE =INTCON.5    'TMR0  interrupt enable bit
SYMBOL T0IF =INTCON.2    'TMR0  interrupt flag bit


OPTION_REG=%10000101
CMCON=7 
RCIE=1:PEIE=1:T0IE=0:GIE=1
ON INTERRUPT GOTO KESME
AL1   VAR BYTE
SURE  VAR BYTE
DAK   VAR BYTE
TUS   VAR BYTE
SN    VAR BYTE
SAYAC VAR BYTE
TEMP  VAR BYTE
OB     VAR BYTE
TOPLAM     VAR BYTE
I     VAR WORD
A     VAR BYTE
B     VAR BYTE
BB     VAR BYTE
US    VAR BIT
K     VAR WORD
ARA   VAR WORD   

SYMBOL ROLE=PORTB.0
SYMBOL LED=PORTB.4
CLEAR
PAUSE 200 
BASLA:
TUS=AL1:LED=0:ROLE=0
        IF US=1 THEN
          IF TUS=255 THEN
            LED=1:B=1:ROLE=0
            FOR I=0 to 5000
              PAUSEUS 5
            Next
            LED=0:DAK=0:SN=0:SAYAC=0:SURE=0
            AL1=0:TMR0=0:TUS=0:T0IE=0:T0IF=0
          else
           ENDIF 
         
             IF TUS=12 AND B=1 THEN
             tus=A
              A=A*10+TUS
              SURE=A
              LED=1
    FOR I=0 TO 5000
      PAUSEUS 5
      NEXT
      LED=0
           TUS=0:T0IE=1:AL1=0:TMR0=0:DAK=0:SN=0:SAYAC=0
           
          ENDIF         
        ENDIF       

GOTO BASLA 
DISABLE
KESME:
'led=0
GIE=0 'tüm interruptlar? kapat yani INTCON.7=0
IF T0IF=1 THEN
    SAYAC=SAYAC+1      'kesme sayac?  1 sn= 61(sayac) x 256 (Tmr0) x 64 (bölme)
    IF SAYAC=61 then      '61 adet kesme olunca 1 sn. süre geçiyor.(999424 us)
       SAYAC=0             'sayaç s?f?rlan?yor
       SN=SN+1            'saniye de?eri bir art?r?l?yor
         IF SN=60 THEN     'saniye 60 olmu? ise 1 dakika süre geçti o halde
            SN=0           ' saniye s?f?rlan?yor
            DAK=DAK+1       ' dakika de?eri bir art?r?l?yor             
           ENDIF
    ENDIF
    IF  SN=0 AND  DAK=0 THEN  BAK
    IF SURE<>0 AND DAK=SURE THEN
      INTCON.5=0:ROLE=1:LED=1
       FOR I=0 TO 10000
     PAUSEUS 5
      NEXT
      SURE=0:DAK=0:SN=0:DAK=0:SAYAC=0 :ROLE=0:LED=0
    endif
       
BAK:               
    T0IF=0 'kesme bayragi sifirlanacak                           
    GOTO CIK       
ENDIF
HSERIN 5,BIR,[WAIT("BUL"),AL1]
TEMP=RCREG
US=1
GOTO CIK
BIR:US=0
CIK:
GIE=1 'Yani INTCON.7=1 kesmeleri açt?k.
RESUME
ENABLE
END

Powered by EzPortal