asm programlama brne sonra kod devam etmiyor

Başlatan caner007, 17 Kasım 2012, 23:50:18

caner007


#include "m128def.inc"      

.ORG 0x000      ;  yapmak  istededigim  olay çıkışların degistirilmesi  fakat  mantık  hatasımı  yapıyorum  yada baska birseymi eksik    

LDI R20,0xFF        ; anlayamadım Register R25 sonra program devam etmiyor.    farklı sekilerde bu islemi yapabilirim fakat burdaki
                             ;hatayıda anlamak istiyorum yardımcı olursanız memun olurum.   
OUT DDRA,R20      

LDI R21,0xFF         
OUT SPL,R21
OUT SPH,R22      

LDI R23,0b01010101      
LDI R24,0b10101010

MAIN:            
   OUT PORTA,R23      
   CALL DELAY      
   OUT PORTA,R24      
   CALL DELAY      
   JMP MAIN      

DELAY:            
   CALL DELAYINT      
   CALL DELAYLOOP      
        RET
         
DELAYINT:         
   LDI R25,0x00      
   LDI R26,0x00      
   LDI R27,0x00      
   RET         

DELAYLOOP:         
   INC R25         
   CPI R25,0xFF      
   BRNE DELAY         ;burdan   sonra  aşagıya gecemiyorum
   LDI R25,0x00      
   INC R26         
   CPI R26,0xFF      
   BRNE DELAY      
   LDI R26,0x00      
   INC R27         
   CPI R27,0x0E      
   BRNE DELAY      
   LDI R27,0x00      
   RET         

sadogan



DELAYLOOP:         
   INC R25         
   CPI R25,0xFF     
   BRNE DELAY  -> burda delaya gidiyorsun


DELAY:           
   CALL DELAYINT     
   CALL DELAYLOOP  - > burda tekrar dallandıgın rutine dallanıyorsun   
        RET
ve bu döngü boyle devam ediyor takii stack taşana kadar.
bu kısır döngüyü düzetmen gerek