yardım edinnnn!yürüyen ışık sistemi için

Başlatan bedrisus, 10 Ocak 2004, 03:42:59

bedrisus

merhaba bana şu konuda yardım edebilirmisiniz

RA1'e bağlı buton ve

Portb'ye bağlı 8 adet ledden oluşan devre için, butona basılı tutulduğu sürece çalışan yürüyen ışık sistemi isteniyor.
bedrisus@tnn.net

Veli B.

Boarda hoşgeldin Bedrisus, :)

Sistemi sen mi istiyorsun?
Senden mi

istiyorlar?

Anlayamadım.Ödev gibi birşeyler mi mevzu bahis olan? :o

fsan

selam bedrisus,
PIC Assembly kullanmak zorunda değilsen, ben yardimci olabilirim.
istedigin uygulamayi

"Picbasic pro" ile birkac satir yazarak kolayca yapabilirsin.

asm_Coder

assembly ilede fazla uzun surmez.porta.1 kontrol et .input varsa yürüyen işik alt programını çağır.
y=f(x);

Veli B.

Bedrisus ;

Yürüme nasıl  olacak  sağ-sol mu, doldurarak tek yöne mi, karaşimşek gibi mi, tek let tarama şeklinde mi?

( sanırım gecikmeyi halledebilirsin)
butonu on/off  yaptığında sayma kaldığı yerden mi, yeniden mi başlayacak?
Bunları netleştirirsen pbp ve asm için bir kaç örnek ile yardım edebilirim

sanırım.

bedrisus

tek yöne butona basılı olduğu sürece kayacak bir program.Ben endüstriyel elektronik 2. sınıftayım fakat pic'te yeni

olduğum için henüz iyi değilim yarımcı olursanız sevinirim.

fsan

selam,
Picbasic pro ile yapdigim bir örnek var burada belki isine yarar

"LED - lights.." -

http://home.no/fsan/projects/

Ayni zamanda güzel bir javascript örnegi ;)

DumrulBey

Alıntı yapılan: "bedrisus"tek yöne butona basılı olduğu sürece kayacak bir program.Ben endüstriyel

elektronik 2. sınıftayım fakat pic'te yeni olduğum için henüz iyi değilim yarımcı olursanız sevinirim.
Öncelikle aramıza yeni katılan arkadaşımıza ufak bir mesaj:
Hoş

geldin "bedrisus" ;)

Aslında yeni başlayan arkadaşlara hazır kod vermeyip sadece yol göstermemiz, onların öğrenmesi açısından çok önemli. Ama

istenilen basit ve bir çok yolu olduğundan belki ufuklarını açar diye ASM kod göndermenin kanaatimce faydalı olacağını düşünüyorum.

Bu ödevi, BSF komutları ile senaryo hazırlayarak

yapabileceğin gibi çevrim tablosu (lookup table) kullanarak da yapabilirsin. Aşağıdaki ise en basiti olan RLF (sola döndürme) komutunu kullanarak yapılmış en basit yöntemdir.

Program

belki olabileceğinden biraz karmaşık gelebilir. Çünkü elimde portları test etmek için kullandığım bir kod vardı. Bu yüzden en kolay ulaşılabilir olanını vermeyi uygun gördüm. Vakti olan arkadaşlar

daha sade şeklini gönderebilir.

Aslında aşağıda kesmeler(interrupts) ve zamanlayıcılar (timers) gibi iki büyük ders konusu var. Bunları birer saniyelik şaşmaz gecikmeler elde etmek için

kullanmıştım. Ufkunu açacağını düşündüğümden çıkarmadım. Sadace BAS-DUR etiketlerini koyarak denemeden gönderiyorum. Hatasız derlediğine göre ve bir şey unutmadıysam

çalışır.

Başarılar...

TITLE "PROJE001.ASM, 8 ÇIKIŞLI JOHNSON SAYICI"
PROCESSOR P16F84A
INCLUDE 

"P16F84A.INC"
RADIX HEX
;
; 4,096 KHz.'lik kristal kullanılırsa birer saniyelik kesmeler oluşur...
;
__CONFIG 

_CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC

CBLOCK 0x0C
			_w, _status
			xSN, 

xSAY
ENDC
			ORG		0x00
			GOTO		ANAPRG

			ORG		0x04
			GOTO		SAATPRG

ANAPRG		BSF	STATUS,

		RP0
			MOVLW		0x02
			MOVWF		TRISA
			CLRF		TRISB
			MOVLW		B'10100000'
			MOVWF		INTCON
	

t	MOVLW		B'10000100'
			MOVWF		OPTION_REG
			BCF		STATUS, 

RP0
			MOVLW		0x0D
			MOVWF		xSN
			MOVLW		0x01
			MOVWF		xSAY
			MOVWF		PORTB

BAS		CLR

F		TMR0
			BTFSC		PORTA, 1	; RA1 boştayken PULL-UP olsun!
			GOTO		BAS
DUR		BTFSS	PORTA,		1	; Düğme bırakılana kadar boşta 

sayar
			GOTO		DUR
			GOTO		BAS

SAATPRG		MOVWF		_w
			MOVF		STATUS, 

W
			MOVWF		_status
			BCF		INTCON, 

T0IF
			DECFSZ		xSN
			GOTO		ATLA
			MOVLW		0x0D
			MOVWF		xSN
			BTFSC		xSAY, 

7
			BSF		STATUS, C
			RLF		xSAY, 1
			MOVF		xSAY, 

0
			MOVWF		PORTB
ATLA		MOVF	_status,	W
			MOVWF		STATUS
			MOVF		_w, 

W
			RETFIE
END


HEX:
:020000000528D1
:0800080019288316023085005

F
:100010008601A0308B008430810083120D308E0069
:1000200001308F008600810185181328851C162851
:1000300013288C0003088D000B118E0B26280D3021
:10004

0008E008F1B03148F0D0F0886000D08830090
:040050000C0809008F
:02400E00F13F80
:00000001FF
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)

Libertador

Asagida 3 saniyede bir Portb0 'i yakip sonduren bir program gonderiyorum. Birkac eklemeyle istedigin hale getirebilirsin.

Sanirim interrupt baslangic icin agir gelebilir.
Not: DumrulBey kod icin teşekkürler. Uzun zamandir interrupt'i ogrenecegim diyordum bir turlu basina oturamiyordum, bir iki yerde takildim

ama sanirim bugun yarin

halledebilirim.
LIST	P=16F84
	INCLUDE	"P16F84.INC"
SAYAC1	EQU	H'0C'
SAYAC2	EQU	H'0D'
SAYA

C3	EQU	H'0E'
	CLRF	PORTB
	BSF	STATUS, 5
	CLRF	TRISB
	MOVLW	b'11111111'
	MOVWF	TRISA
	BCF	STATUS, 

5
BASLA
	BSF	PORTB, 0
	CALL	S2
	BCF	PORTB, 

0
	CALL	S2
	GOTO	BASLA
S2	
	MOVLW	d'100'
	MOVWF	SAYAC1
D1
	MOVLW	d'100'
	MOVWF	SAYAC2
D2


	MOVLW	d'100'
	MOVWF	SAYAC3
D3
	DECFSZ	SAYAC3
	GOTO	D3
	DECFSZ	SAYAC2
	GOTO	D2
	DECFSZ	SAYAC

1
	GOTO	D1
	RETURN
	END
[/code]