OKUL İÇİN ÖDEV

Başlatan kalemmm, 09 Mart 2006, 20:09:43

x-tol

hex koduna çevirmek için mpasm yi kullanın.programda bir hata yoksa sizin dosyanın bulunduğu klasöre ilgili dosyaları atacaktır.

optech

Yazdigin kodlar PICBasic kodlari ama sana asm kodlarinin lazim oldugunu soylemissin.

Istersen adim adim gidelim. Bu arada odevin son gunu ne zaman?

Ilk olarak assembly komutlari ile baslayalim:
(genel olarak kullanacaklarini yazacagim)

movlw k : Buradaki "k" sabit bir sayidir. Bu komut k saiysini W reg.ine yukler. orn: movlw 0x12 ("0x" hex sayi demektir yani -hex 12-)
movwf f : Buradaki f: file reg.dir. W icerigindeki bilgiyi f yerine yazilacak register icine yazar. ORN: movwf BACKUP: BACKUP ismi daha once register adresi olarak tanimlanmalidir. Orn: BACKUP equ 0x0C.

Burada "equ" 0x0C adresindeki registera BACKUP ismini vermistir. Burda bilmen gereken sey 16f84 icin 0x0C adresinden sonra registerlara isim verebilirsin.

CLRF f : f reg.i icindeki degeri sifirlar. yani 0x00 yukler.

BSF f,b : f registerinin b'inci bitini set yani "1" yapar. ORN: BSF STATUS,5

BCF f,b:  f registerinin b'inci bitini clear yani "0" yapar. ORN: BCF STATUS,5

movf f,d: f reg.indeki degeri  d  ye bagli olarak W ya da f reg.ine atar.

d: kayit yerini gosterir; d = 0: sonucu W'ye kaydet,
d = 1: sonucu f e kaydet.
Default olarak d = 1 dir.

Bu komut F icindekini W ye atmak icin kullanilir. unun icin d=0 olmalidir. Burda kolaylik olmasi icin 0 yerine W, 1 yerine F yazabilirsin.
ORN: movf BACKUP,W


BTFSS f,b: f reg.inin b.inci biti 1 ise atlar.
ORN:
BTFSS BACKUP,0
GOTO BASLA
GOTO DEVAM
Bu kodlara gore BACKUP reg.inin 0.inci 1 ise "GOTO DEVAM" komutu 0 ise "GOTO BASLA" komutu isleyecektir.

BTFSC f,b:  f reg.inin b.inci biti 0 ise atlar.

ORG k: bu komuttan sonraki yazilan komutlar program hafizanin k ile gosterilen adresinden sonra yerlestirilir.
ORN: ORG 0x00 ; reset adresi  ;)

GOTO k: k ile gosterilen adrese dallanir. Burada k yerine daha once "equ" ile tanimlanmis isim yazilabilir. ORG: GOTO BASLA

DECFSZ f,d: f reg.inden 1 cikarir sonucu d ile gosterilen yere yazar ve sonuc sifir ise bir komut atlar.
ORG: DECFSZ DELAY,F

SUBLW k: k sabit degerinden W registerini cikarir. Cikarma sonuclari Carry(C) bitini etkiler. İpucu olarak sunu soyleyeyim cikarma sonucu esitse CARRY=1 olur. Bunuda BTFSS STATUS,C komutu ile kontrol edebilirsin.

CALL k: k degeri ile gosterilen adrese (alt programa) dallanir. Burda yapilan islemler bittikten sonra RETURN komutu ile alt programdan cikilir. RETURN komutu ile cikildiktan sonra program CALL komutundan bir sonraki komuttan devam eder.

Simdi ilke olarak istersen bir giris - cikis ayari yap. Bir bakalim....

kalemmm

vallahi dediklerinden fazla anlamadaım pıc basıc daha kolay vallahi...
odevimin son günü haftaya perşembe bende dahaca pıc ıle ilgili bir kartım bile  yok ben sana msn adresimi versem bana yardımcı olsan """vlkann_@hotmail.com""""benim bu işi öğrenmem lazım cok sağol

optech

ben en iyi kodlari vereyim sana. onlari incele. Bu arada birkac hata koyuyorum. Bulmaya calisip daha iyi anlaman icin... ;)

 LIST P=16F84A
  INCLUDE "P16F84A.INC"

REG1 equ 0x0C
DELAY_1 equ 0x0D

  org 0X00
  GOTO BASLA
  org 04
GOTO $
BASLA
  BCF STATUS,5
  CLRF TRISB
  MOVLW b'00000011'
  MOVWF TRISA
  BCF STATUS,5

  CLR PORTB

KONTROL

  MOVF PORTA,W
  MOVWF REG1

  MOVLW 0X00
  SUBWF REG1,W
  BTFSC STATUS,Z
  GOTO SONDUR

  MOVLW 0X03
  SUBWF REG1,W
  BTFSC STATUS,C
  GOTO YAK_SON

  BSF PORTB,0

  GOTO KONTROL

YAK_SON
  BSF PORTB,0
  CALL GECIKME
  BCF PORTB,0
  CALL GECIKME

  GOTO KONTROL

SONDUR

  BCF PORTB,1

  GOTO KONTROL

GECIKME	;DELAY DEGERLERI ILE OYNAYARAK AYAR YAPABILIRSIN

  MOVLW 0X12
  MOVWF DELAY1
LOOP_
  MOVLW 0XFF
  MOVWF DELAY2
LOOP	
  MOVLW 0XFF
  MOVWF DELAY3

LOOP2
  DECFSZ DELAY3,F
  GOTO LOO2

  DECFSZ DELAY2,F
  GOTO LOOP

  DECFSZ DELAY1,F
  GOTO LOOP_

  RETURN

  END


Bu kodlari incele dedigim gibi birkac hata koydum. Microchip'in sitesinden www.microchip.com  MPLAB IDE yi indir. Bilgisayarina kur. Orda yeni bir proje ac ve yazacagin asm dosyasini o projeye ac. Orada derle ve adim adim simule et. Derleme sonucunda hata verecek. Verilen uyarilari dikkate al ve hatalari duzelt. TUM HATALARI DUZELTTIGINDE HEX DOSYASI OLUSACAK...

Takilirsan gene yazarsin...

kalemmm

ARKADAŞIM ADIM ADIM NASIL SİMİLASYON EDİCEN