Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

asm de çözemediğim sorun

Başlatan kemalguler, 13 Mayıs 2008, 15:43:36

kemalguler

Değerli arkadaşlar,
aşağıdaki programda porta.0(but1) basılıp bırakıldığında portb.0(led1) 30 sn aktif olup sönüyor.Portb.0(led1) aktif iken porta.1 e(but1)basılıp  bırakıldığında 5 sn boyunca portb.1(Led2) aktif olup sönüyor.Program kaldığı yerden devam ediyor.Sorunum şu:Led2 aktif iken 30 sn lik süre işlemez oluyor.Dallanmalarda bir yanlışlığım mı var?

          
           list  P=16F84A
           include "P16F84A.inc"
  
SAYAC1 EQU H'29'
SAYAC2 EQU H'2A'
SAYAC3 EQU H'2B'
SAYAC4 EQU H'2C'
SAYAC5 EQU H'2D'
SAYAC6 EQU H'2E'
ARTIR5 EQU H'3D'
ARTIR7 EQU H'3E'
ARTIR1 EQU H'3F'
ARTIR2 EQU H'40'
ARTIR3 EQU H'41'
ARTIR4 EQU H'42'
SAYACO EQU H'43'
ARTIR23 EQU H'44'
;****************
  	#define BUT1 PORTA,0
  	#define LED1 PORTB,0
        	#define BUT2 PORTA,1
  	#define LED2 PORTB,1
	
 ;***********
 	org  01h 
 	goto ilk_Degerler
 	org  04h 
 	goto ilk_Degerler
 ;************

ilk_Degerler
 	clrf    PORTA
 	clrf   PORTB
	
 	bsf	STATUS,5

 	movlw	B'11111'
 	movwf	TRISA
 	movlw	B'00000000'
 	movwf	TRISB

 	bcf	STATUS,5

        	clrf	ARTIR7
        	clrf	ARTIR5

 ;********************************* 
 	 btfss 	BUT1
 	goto  	ilk_Degerler
 	bsf	LED1
	 
DONGU_1

        	btfsc 	BUT2
 	goto  	DONGU_2
 	 call	GEC200MS
	incf	ARTIR7,1
	movf	ARTIR7,0
	xorlw	h'64'
	btfss	STATUS,2
	goto	DONGU_1

goto ilk_Degerler
   
DONGU_2 
       	
	
       	bsf	LED2
	clrf	ARTIR5 	
DONGU_3	 	

       	call     GEC5S    
             	bsf	LED1

DONGU_4
       	 incf	ARTIR7,1
       	movf	ARTIR7,0
       	 btfsc 	BUT2  
 	goto  	DONGU_2

        call	GEC200MS
	incf	ARTIR5,1
	movf	ARTIR5,0
	xorlw	h'17'
	btfss	STATUS,2
	goto	DONGU_4
       	 bcf	LED1
               goto   ilk_Degerler

 GEC200MS
     	movlw	H'FF'
     	movwf	 SAYAC3
DONGU11
     	movlw	H'FF'
     	movwf	 SAYAC4
DONGU12
     	decfsz SAYAC4,F
     	goto DONGU12
     	decfsz SAYAC3,F
     	goto DONGU11
     	return 
GEC5S              
     	movlw	 H'11'   
     	movwf	SAYAC6
DONGU31
     	call 	GEC200MS
     	decfsz 	SAYAC6,F
     	goto 	DONGU31
     	return

GEC41MS
     	movlw	H'99'
     	movwf	SAYAC1
DONGU01
     	movlw	H'59'
     	movwf 	SAYAC2
DONGU02
     	decfsz 	SAYAC2,F
     	goto 	DONGU02
     	decfsz 	SAYAC1,F
     	goto 	DONGU01
     	return
STOP
	END

avignon

Birde bunu dene istersen belki işine yarar.Gecikmeler 4MH için istediğine yakın gecikmeleri veriyor.
LIST P=16F628A
INCLUDE "P16F628A.INC"
ORG H'00'
BASLA
CBLOCK 20H
SAYAC,SAYAC1,SAYAC2,SAYAC3,SAYAC4,SAYAC5,SAYAC6
ENDC
BANKSEL TRISB
CLRF TRISB
MOVLW H'FF'
MOVWF TRISA
BANKSEL PORTB
CLRF PORTB
MOVLW H'07'
MOVWF CMCON
TEST_PORTA0
	BTFSC PORTA,0
	GOTO TEST_PORTA0
YAK
	BSF PORTB,0
	CALL GECIKME1
	BCF PORTB,0
	GOTO TEST_PORTA0
GECIKME1
	MOVLW D'150'
	MOVWF SAYAC
DONGU1
	MOVLW H'FF'
	MOVWF SAYAC1
DONGU2
	MOVLW H'FF'
	MOVWF SAYAC2
DONGU3
	BTFSC PORTA,1
	GOTO DEVAM
	CALL YAK2
DEVAM
	DECFSZ SAYAC2
	GOTO DONGU3
	DECFSZ SAYAC1
	GOTO DONGU2
	DECFSZ SAYAC
	GOTO DONGU1
RETURN
YAK2
	BSF PORTB,1
	CALL GECIKME2
	BCF PORTB,1
	RETURN
GECIKME2
	MOVLW D'25'
	MOVWF SAYAC4
DONGU4
	MOVLW H'FF'
	MOVWF SAYAC5
DONGU5
	MOVLW H'FF'
	MOVWF SAYAC6
DONGU6
	DECFSZ SAYAC6
	GOTO DONGU6
	DECFSZ SAYAC5
	GOTO DONGU5
	DECFSZ SAYAC4
	GOTO DONGU6
RETURN

END