küçük bi problem assembly+proteus

Başlatan annubiss67, 06 Mayıs 2005, 02:06:28

annubiss67

slm arkadaşlar
ben cosq bilgisini displayde göstermeye çalışıyorum.programı yazdım ve simulasyon için proteusda kurdum fakat programda ilk verdiğim derece de sabitleniyo ve pic dereceyi değiştirsem bile aynı sonucu veriyo.program basit ama bi püf noktası var sanırım .assembly dilinde iyi olan arkadaşlar programıma bakabilirmisiniz .nerde hatalı olduğumu bi tğrlü bulamadım.programı aşağıya yazdım. program basit ,porta 0 a sıfır geçiş devresinde gerilim sıfır olduğunda tmr0'ı başlatıyo porta1 akım bilgisi sıfırdan geçtiği anda lojik 1 veriyo ve tmr0 içeriği count'a alıp tablo dan karşılığını alıp portb den çıkış olarak vermeye çalışıyorum

list p=16f84
#include "p16f84.inc"

count equ 0x0C
out equ 0x0D

org 0x00
goto basla

basla
call portkur
basla1
call timerset
call tablo
call displayout
goto basla1

portkur;--------------------------------------------

   bsf status,5
   clrf trisb
   movlw b'00000011'
   movwf trisa  
   movlw b'00010011'
  movwf tmr0  
   bcf status,5
   
   return

timerset;---------------------------------------------
 clrf count
one
     
   btfss porta,0
   goto one
   movlw h'00'
   movwf tmr0
two
   btfss porta,1
   goto two
   movf tmr0,w
   movwf count
   goto timer_low
   movf count,0
   return
displayout
    clrf out
    movwf out
    call timer_low
    movf out,W
   
    movwf portb
    call timer_low
    return
timer_low
  movlw b'00111111'
   movwf count
 next
   decfsz count,1
   goto next
   return  
     
tablo;----------------------------------------
   addwf PCL,F
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'    
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'    
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'    
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'
  retlw  h'99'    
  retlw  h'99'
  retlw  h'99'
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'    
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'
  retlw  h'98'
  retlw  h'97'
  retlw  h'97'
  retlw  h'97'
  retlw  h'97'
  retlw  h'97'
  retlw  h'97'
  retlw  h'97'    
  retlw  h'97'
  retlw  h'96'
  retlw  h'96'
  retlw  h'96'
  retlw  h'96'    
  retlw  h'96'
  retlw  h'96'
  retlw  h'96'
  retlw  h'96'
  retlw  h'95'
  retlw  h'95'
  retlw  h'95'
  retlw  h'95'
  retlw  h'95'
  retlw  h'95'
  retlw  h'94'
  retlw  h'94'    
  retlw  h'94'
  retlw  h'94'
  retlw  h'94'
  retlw  h'94'
  retlw  h'93'    
  retlw  h'93'
  retlw  h'93'
  retlw  h'93'
  retlw  h'93'
  retlw  h'92'
  retlw  h'92'
  retlw  h'92'
  retlw  h'92'
  retlw  h'92'
  retlw  h'91'
  retlw  h'91'
  retlw  h'91'    
  retlw  h'91'
  retlw  h'91'
  retlw  h'90'
  retlw  h'90'
  retlw  h'90'    
  retlw  h'90'
  retlw  h'90'
  retlw  h'89'
  retlw  h'89'
  retlw  h'89'
  retlw  h'89'
  retlw  h'88'
  retlw  h'88'
  retlw  h'88'
  retlw  h'88'
  retlw  h'87'
  retlw  h'87'    
  retlw  h'87'
  retlw  h'87'
  retlw  h'86'
  retlw  h'86'
  retlw  h'86'
  retlw  h'86'
  retlw  h'85'
  retlw  h'85'
  retlw  h'85'
  retlw  h'85'    
  retlw  h'84'
  retlw  h'84'
  retlw  h'84'    
  retlw  h'84'
  retlw  h'83'
  retlw  h'83'
  retlw  h'83'
  retlw  h'82'
  retlw  h'82'
  retlw  h'82'
  retlw  h'81'
  retlw  h'81'
  retlw  h'81'    
  retlw  h'81'
  retlw  h'80'
  retlw  h'80'
  retlw  h'80'    
  retlw  h'79'
  retlw  h'79'
  retlw  h'79'
  retlw  h'78'
  retlw  h'78'
  retlw  h'78'
  retlw  h'78'
  retlw  h'77'
  retlw  h'77'
  retlw  h'77'
  retlw  h'76'
  retlw  h'76'    
  retlw  h'76'
  retlw  h'75'
  retlw  h'75'
  retlw  h'75'
  retlw  h'74'
  retlw  h'74'
  retlw  h'74'
  retlw  h'73'
  retlw  h'73'
  retlw  h'73'    
  retlw  h'72'
  retlw  h'72'
  retlw  h'72'    
  retlw  h'71'
  retlw  h'71'
  retlw  h'71'
  retlw  h'70'
  retlw  h'70'
  retlw  h'70'
  retlw  h'69'
  retlw  h'69'
  retlw  h'68'
  retlw  h'68'    
  retlw  h'68'
  retlw  h'67'
  retlw  h'67'
  retlw  h'66'
  retlw  h'66'    
  retlw  h'66'
  retlw  h'65'
  retlw  h'65'    
  retlw  h'65'
  retlw  h'64'
  retlw  h'64'
  retlw  h'63'
  retlw  h'63'
  retlw  h'63'
  retlw  h'62'
  retlw  h'62'
  retlw  h'61'
  retlw  h'61'    
  retlw  h'61'
  retlw  h'60'
  retlw  h'60'    
  retlw  h'60'
  end

bsivgin

movlw b'00000011'
movwf trisa
movlw b'00010011'
movwf tmr0
bcf status,5



sanırım tmr0 1:16 oranında artacak. sen option registeri yerine tmr0'a yazmışsın sanırım.
Programın aşağıdaki kısımlarındada bi yanlışlık var sanırım

btfss porta,1
goto two
movf tmr0,w
movwf count
goto timer_low
movf count,0.....<<<Program buraya hiç dönmez sanırım :D
return



Ayrıca rertlw komutlarını aşağıdaki gibi yazarsan programın daha okunaklı olur. DT komutu senin yerine retlw üretir.

addwf pcl
DT h'12',h'23',h'18',...........

Saygılarımla
Bülent ŞIVGIN
www.diyot.com

annubiss67

haklısınız tmro yerine option_reg olacak,sanırım 4-5 tane değiştirip yazmıştım yanlış olanı gönderdim.programı en sade hale getirdim.mplab da simulasyon yapıyorum herşey normal görünüyor.girişe göre çıkışdan istediğim değer portb den gönderiliyo gibi fakat proteusda kuruyorum.bi değerde sabitlenip kalıyo .açıyı değiştirmeme rağmen ghep aynı çıkışı veriyo .proteus'un düzgün simulasyon yapmama ihtimali varmı.

bsivgin

MPLAB ile Proteus'u aynı anda kullanabilirsin. Böylece hem komut satırını hamde simülasyonu, hemde registerlarıın içeriğini takip edebilirisn.


Saygılarımla
Bülent ŞIVGIN
www.diyot.com