picbasic kodunu asm ye çevirmek için yardım ihtiyacı

Başlatan nofearkartal, 15 Mayıs 2011, 22:00:14

nofearkartal

herkese selam.internette bulduğum(tübitak) ultrasonik sensörle ilgili bi kodu asm ile yazıp denemek istiyorum da picbasic bilmediğimden kodun mantığını tam anlayamadım.şimdi önce portb.1 den 250us boyunca HIGH göndermiş ama yanına 40kHZ lik sinyal diye açıklama yapmış. sonra while 1=1 ile neyi kontol ediyo ki.Yani orda bişey 1 olduğu sürece döngü demiş ama o bi şey ne ? kodu anlamam için biraz yardımıcı olursanız sevinirim.


PAUSE 250
TRISB = %00100000
SURE VAR WORD;DEğişKENLER TANIMLANIYOR
VERICI VAR PORTB.1
ALICI VAR PORTB.2
LCDOUT $FE,1;EKRANI TEMIZLE
T1CON = %00000001;TIMER1 ÖLÇEKLEME 1/1
PIE1.0=1  ;TIMER1'‹ ETKiNLeştiR
PIR1.0=0                 ; TIMER1 TAşMASINI TEMiZLE
INTCON = %11000000;DIfi KESMELERI ETKiNLEşTR
ANADONGU:
PAUSE 50;FARKLI ÖLÇÜMLER ARASINDAK‹ BEKLEME
SURE = 0
PIR1.0 = 0
HIGH    VERICI;40 KHZ LIK SINYALI GÖNDER
PAUSEUS 250
LOW     VERICI
TMR1L = 0;TIMER1'‹ SIFIRLA
TMR1H = 0                                                   
WHILE 1=1 ;YANSIMAYI D‹NLE
IF ALICI = 0 THEN
SURE.LOWBYTE = TMR1L;YANSIMA ALINIRSA O ANK‹ TIMER DEğERiNi TUT
SURE.HIGHBYTE = TMR1H
GOTO GOSTER
ENDIF
IF PIR1.0=1 THEN ANADONGU
WEND 
GOTO ANADONGU
GOSTER:
LCDOUT $FE,1,"UZAKLIK";ÖLÇÜLEN UZAKLI⁄I EKRANA YAZ
LCDOUT $FE,$C0,#((SURE)/58), " cm"   
PAUSE 25
GOTO ANADONGU

Ruzgarbey

merhaba.
kodda while döngüsü uzaklığın ölçülmesi için oluşturulmuş. 1=1 olacağı için sürekli döngü halinde tutulup timer1 in taşması kontrol edilip,taşma oluşması durumunda anadöngüye dönülmektedir.
while döngüsünü şu şekilde oluşturursak daha iyi anlarsınız.
a var bit

while a <> 1
IF ALICI = 0 THEN 
SURE.LOWBYTE = TMR1L;YANSIMA ALINIRSA O ANK‹ TIMER DEğERiNi TUT
SURE.HIGHBYTE = TMR1H 
GOTO GOSTER
ENDIF
IF PIR1.0=1 THEN
a=1
ENDIF
WEND 
A=0 
GOTO ANADONGU

kolay gelsin
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK

nofearkartal

şimdi anladım olayı , çok teşekkür ettim açıklamanız için.