değişkene değr atayıp okumak

Başlatan f1varol, 26 Temmuz 2007, 12:06:47

f1varol

merhaba
byte tipinde bir değişken tanımlamak için komut şu;
X var byte

peki ben x değişkenine değer atamak ve bu değri ardından okumak için hangi komutları ve nasıl kullancağım.
mesela
_______________________________________________
porta.0 hıgh ise x değişkenine "a" değerini ata
porta.1 hıgh ise x değişkenine "b" değerine ata
.......
.......
 x değişkeni "a" ise portb.0 hıgh olsun
 x değişkeni "b" ise portb.1 hıgh olsun
......
.....
......

________________________
 ben  değer atamak için

if porta.0=1 then ' buton1 basılı ise
x="1" '1 değerini x değişkenine ata
.....
.....

  değeri okuyup iş yaptırmak içinse
if x="1" then 'x değişkeni 1 ise
high PORTB.0
......
....

gibi satırlar yazdım ama isiste programı koşturamadım.
saygılar

e3

Alıntı yapılan: "OG"HRSIN deki deklarasyona bak oradakiler gibi yapman gerekiyormuş. Ve usart için gereken ayarları ilgili PIC e göre yapman gerekiyor.

Ayrıca CHAR.0="H" gibi değilde önce bir byte seviyesinde array değişken oluşturman gerekir.

DIM MYARRAY[10] AS BYTE ' Create a 10-byte array.
MYARRAY
  • = "H" ' Load the first 5 bytes of the array
    MYARRAY [1] = "E" ' With the data to send
    MYARRAY [2] = "L"
    MYARRAY [3] = "L"
    MYARRAY [4] = "O"
Alıntı yapılan: "Katana"Bir diğer kullanım şeklide;Kod:

DIM DIZI[7] AS BYTE
STR DIZI="DENEME"
HSEROUT [STR DIZI \3]


OG Üstadımın verdiği örnekle aynı işi yapmakla beraber yazım kolaylığı sağlamakta. Burada 7 paket değil, sadece \ ardından vermiş olduğumuz parametre değeri kadar paket gönderilir, yukarıda ki örnekte "DEN" gönderilecektir.

Benim benzer bir sorunumda üstadların verdiği cevaplar, tabi Proton için, ama PBP'nin abisidir :D artık Help'ten bakar PBP'ye uyarlarsınız.Kolay gelsin.
.eem.

Gerok

şu şekilde yapabilirsin.

if portb.0=1 then  ' eğer buton 1 basılı ise
x="a"                  ' x = a
endif
 if portb.1=1 then ' eğer buton 2 basılı ise 
 x="b"                 ' x=b
  endif


if x="a" then       ' eğer x=a ise  
high portb.2        
endif
 if x="b" then     ' eğer x=b ise
 high portb.3
 endif
Mum başka bir mumu yakmakla ışığından birşey kaybetmez...

f1varol

gerok dostum bende öle yaptım. Aşağıda programı bir incelemeni rica etcem. Nerde yanlış yapıyom. Eğer biliyorsan yardımlarını bekliyorum. tıkandım kaldım. program derleniyor ama istediğim şekilde çalışmıyor. Saygılar

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2007 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 19.07.2007                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************



TRISA=%11111111 ' portA giriş olarak ayarlandı 
TRISB=%00000000 ' portB çıkış olarak ayarlandı 
PORTA=0 ' başlangıçta pinler low olarak ayarlandı 
PORTB=0 ' başlangıçta pinler low olarak ayarlandı 
CMCON=7 ' porta'nın pinleri digital input/output 

x var byte 
x=0 
ana_program: 

if porta.6=1 then 'buton oku 1 ise 
goto basla 
else 
goto ana_program 
ENDIF 


basla: 
if porta.0=1 then ' buton1 basılı ise 
x="1" '1 değerini x değişkenine ata 
else 
x=0 
endif 

if porta.1=1 then 'buton2 basılı ise 
x="2" '2 değerini x değişkenine ata 
else 
x=0 
endif 

if porta.2=1 then 'buton3 basılı ise 
x="3" '3 değerini x değişkenine ata 
else 
x=0 
endif 


if porta.3=1 then 'buton4 basılı ise 
x="4" '4 değerini x değişkenine ata 
else 
x=0 
endif 

IF PORTA.7=1 THEN 'porta.7- çıkış_ver butonuna basıldığında 
GOTO buton_deger_oku 
else
goto ana_program 
endif 

buton_deger_oku: 
if x="1" then 'x değişkeni 1 ise 
high PORTB.0 
pause 500 
low portb.0 
endif 
if x="2" then 'x değişkeni 2 ise 
high portb.1 
pause 500 
low portb.1 
endif 
if x="3" then 'x değişkeni 3 ise 
high portb.2 
pause 500 
low portb.2 
endif 
if x="4" then ' x değişkeni 4 ise 
high portb.3 
pause 500 
low portb.3 
endif 
X="0" 'x değişkenini sıfırla 
end
goto ana_program


f1varol
, Code Tag İle daha anlaşılır.

mustaphaerdem

ben basicte yazarken böyle yapıyorum ve çalışıyor.

x var byte

if porta.0=1 then
x=1
else
x=0
endif

if x=1 then
high portb.0
pause 500
low portb.0
endif

çift tırnak arasına alırsan derleyici ascII karşılığı olarak anlar.

eğer ascII sayı olarak kullanacaksan şöyle olmalı;

x var byte

if porta.0=1 then
x="3"
else
x=0
endif

if x=("3") then
high portb.0
pause 500
low portb.0
endif

kolay gelsin.
Korkarak yaşıyorsan sadece hayatı seyredersin.

f1varol

evet dostum, çalışmamamsını anlamdım ama yeniden yazdım. Çalışıyo.
Şu şekilde. Teşekkür ederim

TRISA=%11111111 ' portA giriş olarak ayarlandı
TRISB=%00000000 ' portB çıkış olarak ayarlandı
PORTA=0 ' başlangıçta pinler low olarak ayarlandı
PORTB=0 ' başlangıçta pinler low olarak ayarlandı
CMCON=7 ' porta'nın pinleri digital input/output

X var byte

X=0
main:
if porta.6=1 then 'buton okulu basılı ise
goto degisken
else
goto main
endif

degisken: 'basılan yanıtı hafızaya kaydet

if porta.0=1 then
X="a"
endif
if porta.1=1 then
X="b"
endif
if porta.2=1 then
X="c"
endif
if porta.3=1 then
X="d"
endif
IF porta.4=1 then
x="e"
endif
'kullanıcıdan dolayı gecikme oluyor ama program koşuyor
if porta.7=1 then 'gönder butonu aktifse oku ya dallan
goto oku
else
goto main
endif

Oku:  'hafızadaki yanıtı çıkışa ver
if X="a" then
high portb.0
PAUSE 500
LOW PORTB.0
endif
if X="b" then
high portb.1
PAUSE 500
LOW portb.1
endif
if X="c" then
high portb.2
pause 500
low portb.2
endif
if X="d" then
high portb.3
pause 500
low portb.3
endif
if x="e" then
low portb.4
pause 500

endif
X=0
goto main
end