Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Döngü yapma?

Başlatan ido2323, 19 Ekim 2014, 17:41:59

ido2323

 "bsf PORTB,7
call GECIKME  "

Herkese iyi günler, portb'nin 7. bitine bağlı ledin butona basıp elimizi çektikten sonra bir süre yanmasını sonra sönmesini istiyorum, fakat bi türlü yapamadım, call kullandım, b'10000000' olarak trisb'ye yüklemeyi denedim, ne bilim sayac değerini arttırdım(ff-->693c) yapamadım acaba ne yapmamı önerirsiniz? Teşekkürler. :)

list p=18f4550
	#include	<P18F4550.INC>
CONFIG	FOSC = HS
;************************************************************
; variables

Count	equ	0x000
sayac1  equ 0x002
sayac2  equ 0x004
;************************************************************

org	00000h	; Reset noktas?
goto	Start
;************************************************************
;program kodu burada çal???yor

	org	00020h	; Beginning of program EPROM

Start

MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input

clrf	LATB	; Clear PORTB output latch
clrf	TRISB	; Portb'nin bütün pinlerini ç?k?? olarak ayarla
clrf	Count	; count de?i?keninin s?f?rla

;------------------------------------------------
test
   btfss PORTA,4 ;PORTA'nın 4. biti 1 değilse test'e git
   goto test

   bsf PORTB,7
call GECIKME
   goto test

; GECİKME ALT PROGRAMININ BAŞLANGICI
;----------------------------------------
GECIKME
   movlw h'ff'
   MOVWF sayac1

DONGU11
   movlw h'ff'
   MOVWF sayac2

DONGU12
   DECFSZ sayac2,F
   GOTO DONGU12
   DECFSZ sayac1,F
   GOTO DONGU11
RETURN
;--------------------------------------------
END

FEHMİ_ASM

#1
test
   btfss PORTA,4 ;PORTA'nın 4. biti 1 değilse test'e git
   goto test
   ;call buton_arkı_sondurme
test2
    btfsc PORTA,4
    goto test2
   bsf PORTB,7
call GECIKME
    bcf PORTB,7
   goto test

Kabil ATICI

İşlemci frekansı çok yüksek ise 2 döngü ile işini göremeyebilirsin. gecikme için 3. bir döngü gerekebilir.

test
   btfss PORTA,4 ;buton basılana kadar test döngüsünde kalacak,
   goto led_yak   ;butona basıldığında  led_yak döngüsüne gidecek.
   goto test


led_yak
   btfss PORTA,4 ;buton bırakılana kadar led_yak döngüsünde kalacak
   goto led_yak
   call GECIKME   ;butonu bırakıldığında bu kadar gecikme sonunda
   bsf LATB,7   ;led yapacak.
   goto test

btfss ile ilgili ayarlamayın kendin yap bu sadece örnek olarak..

Bu arada port A'yı nerede giriş olarak atadın...

Bu işlemcilerde LED yakmak için PORT değil LAT kullanılıyor...

Hatta istersen gecikme döngünü kullanarak basit bir yak söndür olayında gör.... Bu işlemciler ile ilgili örnekleri incele...
ambar7

ido2323

ahhhhhhhhhhhhhhhhhhhhhhhhhhh kısa devre sorun çözüldü beyler teşekkür ederim. Zihninize sağlık. :)

test
   btfss PORTA,4 ;PORTA'nın 4. biti 1 değilse test'e git
   goto test
nop ;20 adet nop yazdım

   test1
   btfsc PORTA,4 ;PORTA'nın 3. biti 1 değilse test'e git
   goto test1
bsf LATB,7 ;Portb'nin 7. bitini 1 yap
call GECIKME
goto test

;call GECIKME

; GECİKME ALT PROGRAMININ BAŞLANGICI
;----------------------------------------
GECIKME
   movlw h'fffff'
   MOVWF sayac1

DONGU11
   movlw h'fffff'
   MOVWF sayac2

DONGU12
   DECFSZ sayac2,F
   GOTO DONGU12
   DECFSZ sayac1,F
   GOTO DONGU11
RETURN
;--------------------------------------------
END