İki Yönlü Yürüyen Işık uygulaması ödevi

Başlatan umityavuz, 19 Mayıs 2005, 19:58:57

umityavuz

8O proteustaki çizilmiş hali lazım asm kodu mevcut lütfen yardımcı olun


Erol YILMAZ

Merhaba Umit;
Hangi bolumdesin? Lise mi, universite mi ? Sakin Elektronik Muhendisligi deme. Oyle desen bile 1. siniftayim de. Yada ilgisiz bir bolumden oldugunu soyle, icimize su serp.

Sana yardimci olacagim. Kodu sen yazdiysan, hangi portlari kullandigini belirt. Sen yazmadiysan Orhan Altinbasak in kitabini al. Okumaya basla.
sorun varsa cevaplayalim...

SpeedyX

evet erol hocam doğru demiş, ben biraz önyargılı yaklaştım sanırım, :oops: özür.
Eğer lise 1-2 veya üniversite 1 isen, kodları buraya yaz, proteusta çizip yollarız.
Bazen böyle çıkışlar yapıyorum, özür...

umityavuz

malesef yüksek okul elektronik bölümü 2. sınıf öğrencisiyim gerçekten bu konular hakkında hiç bir bilgim yok elektrikten gelmeyim micro işlemcilerle daha bu sene tanıştık port B nin RB0 ve RB7 uçları çıkıştır
bana yardımcı olduğunuz için çok teşekkürederim

list p=16f84
include<p16f84.inc>
status equ 03
rp0 equ 05
portb equ 06
trisb equ 86h
sayı equ 0ch     ;bekle döngüsü için kullandığımız
sayı0 equ 0dh    ;kaydediciler
sola equ 0eh
saga equ 0fh
org 00h
goto start
org 05h
bekle
movlw   .245      ;500 msn'lik gecikme
movwf   sayac2   ;alt rutini
sd
movlw   .255
movwf   sayac1
sd0
nop 
nop
nop
nop
nop
decfz   sayac1,f
goto    sd0
decfsz  sayac2,f
goto     sd
return
start
 bsf         status,rp0
 movlw    00h
 movwf    trisb
 bcf         status,rp0
 movlw     b'00000001'
 movwf     sola
 movlw     b'10000000'
 movwf     saga
don
 rlf           sola,f
 btfss       status,c
 goto        a1
 movlw     b'00000001'
 movwf     sola
a1
 rrf           saga,f
 btfss        status,C
 goto         a2
 movlw      b'10000000'
 movwf      saga
a2
 movf       sola,w
 addwf      saga,w
 movwf     portb
 call          bekle
 goto         don
end

Erol YILMAZ

Oncelikle programda yanlislar eksikler var.
Derlenmedi.
Ikincisi program karasimsek tarzi birsey mi onu da tam belirtmemissin.
Sonucta programi C de kendim yazmak zorunda kaldim.
Karasimsek projesi sahibi oldum :)
Proteus goruntusu bu.  Program da aha burada. Daha ne istiyorsun anlamadim ki...



#include <16F84A.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=4000000)

unsigned int sure=40;  // bunun ms cinsinin 2 kati gecikme ile gecisler yapilir.
// Buraya yazabilecegin max deger 255 olabilir.

void gecikme()  
{
   delay_ms(sure);
   delay_ms(sure);
}

#use fast_io(B)  // opsiyonel, kullanilmasa da olur.

void main()
{
set_tris_b(0);

   while(1) 
   {
      output_b(128); gecikme();

      output_b(64);  gecikme();
      output_b(32);  gecikme();
      output_b(16);  gecikme();
      output_b(8);   gecikme();
      output_b(4);   gecikme();
      output_b(2);   gecikme();
      output_b(1);   gecikme();
      output_b(2);   gecikme();
      output_b(4);   gecikme();
      output_b(8);   gecikme();
      output_b(16);  gecikme();
      output_b(32);  gecikme();
      output_b(64);  gecikme();
   }
}


E-mail adresini ozelden gonderirsen hepsini iletirim sana...

SpeedyX

C kodu pek işine yaramayacak sanıyorum, okulda asm ile istiyorlardır.
Kod aşağıdaki şekliyle derleniyor.
list p=16f84
	include "p16f84.inc"

	sayac1	equ	0ch ;bekle döngüsü için kullandığımız
	sayac2	equ	0dh ;kaydediciler
	sola		equ	0eh
	saga		equ	0fh

		org	0
		bsf	status,rp0
		movlw 00h
		movwf trisb
		bcf	status,rp0
		movlw b'00000001'
		movwf sola
		movlw b'10000000'
		movwf saga
don	rlf	sola,f
		btfss status,c
		goto	a1
		movlw b'00000001'
		movwf sola
a1	 rrf	saga,f
		btfss status,C
		goto 	a2
		movlw b'10000000'
		movwf saga
a2	 movf	sola,w
		addwf saga,w
		movwf portb
		call	bekle
		goto	don

bekle movlw .245 ;500 msn'lik gecikme
		movwf sayac2 ;alt rutini
sd	 movlw .255
		movwf sayac1
sd0	nop
		nop
		nop
		nop
		nop
		decfsz sayac1,f
		goto sd0
		decfsz sayac2,f
		goto sd
		return

		end

Hem tanımlama dosyası include edip hemde sabit registerleri tekrar tanımlamak gereksiz.

Erol YILMAZ

500 ms cok yavas ouyor, gel sunu orta karar  100 ms yapalim.

SpeedyX

100ms için bekleme rutini
bekle movlw .49 ;100 msn'lik gecikme
      movwf sayac2 ;alt rutini
sd    movlw .255
      movwf sayac1
sd0   nop
      nop
      nop
      nop
      nop
      decfsz sayac1,f
      goto sd0
      decfsz sayac2,f
      goto sd
      return

@Erol elinde hala dosyalar varsa bir dene bakalım yada www.rapidshare.de ye at, güzel çalışıyor mu? (bizede oyuncak çıktı)

Erol YILMAZ

@SpeedyX;

Hic karasimsek devrem olmadi.
10 yil once nasil oluyor da oluyor? gibisinden cok kafa patlattim.
Ogrenince de yapmak icin bir sebep gormedim. Sonucta hic karasimsek devrem olmadi iste..

Bu arada "umityavuz" nerelerde?

hic gorunmuyor...

SpeedyX

Evet, bendede yok karaşimşek devresi :D
Kuyuya taş atan deli nereye kayboldu, gerçekten kendi mi yapmaya karar verdi acaba?