tus takımında ıkı hanelı sayı oluşturmakta sıfırlı bırsorun

Başlatan toprak, 02 Ağustos 2013, 21:10:37

toprak

tus takımıyla bır basamaklı ve ıkı basamaklı sayılar oluşturup alıcıya gonderıp  alıcıda bunu degerlendırmek ıstıyorum fakat bır basamaklı sayıları basına (0) koyarak yapmak zorunda kalıyorum şöyle 01  02  03 gıbı ıkı basamaklıda sorun olmuyor.fakat ben (0) sıfır kullanmadan yapmak ıstıyorum  1   2  3  gıbı fakat  bunu yapabıldıgım zaman ıkı basamaklı sayıyı olusturup gondermede sorun oluyor.farklı farklı sorunlar oluyor. acaba bunu nasıl halledılır?

papsukkal

Gönderme sırasında yazdığın sayıyı kontrol et. Eğer tek rakam varsa başına 0  otomatik gelsin

Yada gönder dediğinde onlar basamağı boş ise direk sıfır yazsın.  Bunun için iki basamaklı sayı yazdığın değişkenin içeriğini default olarak "ff" tanımlarsın. Gönderme sırasında onlar basamağı "ff" ise sıfır yazarsın.

burak_489

ONLAR VAR BYTE
BIRLER VAR BYTE


IF ONLAR=0 THEN
  SEROUT .....,"SAYI",BIRLER 
ELSE
  SEROUT .....,"SAYI",ONLAR,BIRLER
ENDIF


ete

Yollanan değişkenin başına dec2 koyarsan hep iki hane yollanır. Tek basamaklı sayılarda sıfır otomatik ilave edilir.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

toprak

verıcıde yazdığım kod şöyle hesap kısmında sorun nedırkı.bu kodla tek hanelı olunca sorun olmuyor fakat ıkı hane gırınce ılk rakamı alıp ışliyor  tek hanelı gıbı davranıyor.
@ DEVICE pic16F688 'islemci 16F688
@ DEVICE pic16F688, WDT_OFF 'Watch Dog timer kapali 
@ DEVICE pic16F688, PWRT_ON 'Power on timer acik 
@ DEVICE pic16F688, PROTECT_OFF 'Kod Protek kapali
@ DEVICE pic16F688, MCLR_OFF 'MCLR pini kullaniliyor. 
@ DEVICE pic16F688, INTRC_OSC_NOCLKOUT  'Dahili osilator kullanilacak
@ DEVICE pic16F688, BOD_OFF
CMCON0=7     
ADCON0=0
ADCON1=0
ANSEL=0 
'DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
 DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
 DEFINE HSER_SPBRG 25  '9600 baud @ 4mhz
 DEFINE HSER_CLROERR 1
 define OSC 4
 OSCCON=%01100111
 WPUA=%00110111
 TRISC=%00000111
 TRISA =%00000000
 OPTION_REG=%11000101
 INTCON=%10000000
 SYMBOL UYANDIRMA=PORTA.5
 SYMBOL LED=PORTC.3
 SYMBOL STUN1=PORTC.0
 SYMBOL STUN2=PORTC.2
 SYMBOL STUN3=PORTC.1
 SYMBOL SATIRA=PORTA.0
 SYMBOL SATIRB=PORTA.1
 SYMBOL SATIRC=PORTA.2
 SYMBOL SATIRD=PORTA.4
 TUS   VAR BYTE
 ZAMAN VAR BYTE
 VER   VAR BYTE
 A     VAR BYTE
 B     VAR BYTE
 BB    VAR BYTE
 G     VAR BIT
 R     VAR BIT
 OB    VAR BIT
 BS    VAR BYTE
 I     VAR BYTE
 CLEAR
 PAUSE 100
 BASLA:
 PORTA.0=1
 PORTA.1=1
 PORTA.2=1
 PORTA.4=1
 PORTC.0=1
 PORTC.1=1
 PORTC.2=1
 
 UYANDIRMA=0
  LOW SATIRA
 IF STUN1=0 THEN 
 TUS=1:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=2:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=3:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
     HIGH SATIRA
  LOW SATIRB
 IF STUN1=0 THEN 
 TUS=4:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=5:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=6:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
    HIGH SATIRB
   LOW SATIRC
 IF STUN1=0 THEN 
 TUS=7:GOSUB HESAP
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=8:GOSUB HESAP
 WHILE STUN2=0
 LED=1
 WEND
 ENDIF
 IF STUN3=0 THEN 
 TUS=9:GOSUB HESAP
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
   HIGH SATIRC
  LOW SATIRD
 IF STUN1=0 THEN 
 R=1:GOSUB RES
 WHILE STUN1=0
 LED=1
 WEND
 ENDIF
 IF STUN2=0 THEN 
 TUS=0:GOSUB HESAP
 WHILE STUN2=0
 LED=1:pause 300:LED=0
 WEND
 ENDIF
 IF STUN3=0 THEN 
 G=1:GOSUB GONDER
 WHILE STUN3=0
 LED=1
 WEND
 ENDIF
    HIGH SATIRD
    LED=0
 pause 100
 GOTO BASLA
'*******************************************************************************
 HESAP:
 IF OB=1 THEN
 A=TUS
 A=A*10:TUS=0:BB=1:OB=0:BS=BS+1
 ENDIF
 IF BB=1 and tus<>0 THEN
  B=TUS:TUS=0:BB=0:BS=BS+1
 ENDIF
 IF  A<>0 AND BS=1 THEN
   ZAMAN=a/10:BB=0:OB=0
   ENDIF
 IF (A<>0 OR B<>0) AND BS=2 THEN
  ZAMAN=A*10+B
  BS=0:b=0:a=0:BB=0:OB=0
  ENDIF
  
RETURN
'******************************************************************************* 
 RES:
 IF R=1 THEN
  UYANDIRMA=0:TUS=0:ZAMAN=0:R=0:G=0:LED=0:B=0:A=0:BB=0:OB=1
  VER=255
  UYANDIRMA=1:PAUSE 200
 GOSUB GIT
 UYANDIRMA=0:TUS=0:ZAMAN=0:LED=1:pause 300:LED=0:VER=0
 ENDIF 
  RETURN
 
'*******************************************************************************
 GONDER:
  IF ZAMAN<>0 AND G=1 THEN   
 VER=zaman
 UYANDIRMA=1:PAUSE 200
 GOSUB GIT
 UYANDIRMA=0:TUS=0:ZAMAN=0:LED=1:pause 300:LED=0:VER=0
 ENDIF 
  RETURN
'*******************************************************************************
 GIT:
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT [REP$AA\5,REP$00\5,REP$FF\5]'uyandirma sinyali preambl
HSEROUT ["A","R","A",VER]  
HSEROUT ["A","R","A",VER]
HSEROUT ["A","R","A",VER]  
 RETURN
'*******************************************************************************
 END