Kamis, 15 November 2012

asembly

    bismillah hirrahman nirrahi
a;code fatihul ulum daerah c nnnnnurisss

.include"m8def.inc";mengikut sertakan atmega 8
.org 00 ;program di mulai dari 00 tidak terlalu penting
ldi r30,10 ;mengisi r30 dengan nilai 10
ldi r31,1  ;mengisi r31 dengan nilai 1
ldi r21,90 ;mengisi r21 dengan nilai 90
sts $f,r31  ;mengisi almat memory $f dengan nilai yang terkandung dalam r31     
lds r31,$f  ;mengisi r31 dengan nilai yangterkandung dalam alamat memori $f
mov r16,r30  ;memindah isi r30 ke r16
dec r21       ;nilai yang ada di r21 dikurangi 1 jd r21 bernilai 89
add r30,r31  ;meambahkan r30 dan r31 hasilnya di simpan di r30
sub r30,r31   ;r30=r30-r31
out portd,r30  ;mengisi alamat portd dgn nilai yang terkandung di r30
in r30,portc   ;Mengisi R30 dengan nilai yang terkandung pada porta
asci r30,$f, mengurangi langsung r30 da $f
ldi r18,29
push r18  ;memindah isi r18 ke stac,isi ini ada di sebelah bawah
ldi r20,4
push r20  ;memindah isi r20 ke stac,isi ini ada di sebelah atas    
pop r27   ;menagambil isi register yag terakhir masuk/isi yang teratas dan memindah ke r20,jdi r20=4
pop r31    ;mengambil isi register yang pertama masuk/isi yang paling bawah dan menyimpan dr31,jdi r31=29
FUDC:RJMP FUDC
rjmp adalah untuk lompat ke suatu label
rcall hampir sama dengan rjmp tapi kalau rcall biasanya berpasanganan dengan ret sedangkan rjmp tidak
calll untuk memanggil suatui label yang jauh jangkauannya
sama dengan jmp
IN hanya hanya mencakup pda i/o memori saja
sedangkan lds mencAkup semua memori
IN operan pertama harus register
out operan pertama harus alamat memori
jmp artianya kembali ke atas/lompat jauh
in-=lds
out =sts
untuk melihat positif atau negatif kta lhat di status register
kerja sama brne :
zero flag
cpi
cp  ;gunanya untuk membandingkan suatu register
contoh:
kode yang bekekerja dengan zero flag
ldi r16,10
dec r16
brne   ;akan melompat jika zero flag bernilai 1/jika tidak sama
kode yang bekerja dengan cpi
ldi r20, 4
dec r20
cpi r20,0
brne
kode yang bekerja denan cp
ldi r31,8
ldi r17,20
cp r17,r30
brne
brne bekerja dgn zero
----------------------------------------------------
brne adalah lompat apbila tidok sama /tidak kosong
ldi adlah mengisi
add adalah menambah
dec adlah mengurangi 1 pada isi suatu register
mov adalah untuk memindah issi suatu register
tst r21
tst adalah untuk melihat r20
zero flag akan bernilai 1 jika nilai register melalui proses aritmatik bernilai kosong selain
itu bernilai satu
brne akan melompat jika zero flag bernilai 0
sedangkan brnqw akan melompat jika z flag bernilai satu
breq akn melompat jika zero flag bernilai 1 jika 0 tidak melompa(lompat bila sama)
brne akan melompat apa bila zero flag bernilai 0 bernilai 1 akan lanjut /turus(lompat bila tidak sama)
brsh akan melompat jika c flag bernilai 0
c flag adalah carry flag,c flag akan bernillai 1 apabila suatu register melebihi nilai225
sbpic hampir sama dengan cpi
ddrx=0 artinya input
ddrx=1 artinya output
 -sbi=memberi nilai satu pada bit i/o
 -cbi=memberi nilai 0
 -sbic=meloncat bila bit kosong
 -sbis=meloncat bila bit 1
adc gunanya untuk menambahkan suatu register yang melebihi 255
sedangkan add gunanya untuk menambahkan suatu register yang nilainya di bawah 255
                  PELAJARAN BARU TAHUN PELAJARAN 2012/2013
                   

penurangan yang bernilai negatif biketahui jika
penurangan yang bernilai negatif biketahui jika
1.n=0dan c=0 maka positif
2.jika salah satu n/c bernilai 1 /kedua duanya bernilai 1 maka negatiiiif
                                   

-setiap pengurangan pada suatu kode hasil yang bawah harus di com dan ditanbah dengan satu
-brcc lompat bila bernilai positif apabila negatif lanjut
-.egu maksudnya memberi nama lain padda nama suatu memori
-.def maksudnya memberi nama lain pada suatu register
clr memberi nilai 0 pada suatu register
                 oprasi logika pada avr studio
and akn akan bernilai 1 apabila kedua intuksi bernilai 1 selain itu maka akan bernilai 0
andi sama dengan and tpi operan ke dua suatu alamat memori
or akn benilai 1 apabila salh satu/kedua intruksi bernilai 1 jika sama-sama 0 maka akan bernilai 0
ori sama dengan or tpi operan keduanya suatu alamat memori
eor akan bernilai satu apa bila salah satu intruksi bernilai satu jika sama sama 1/0 maka akan bernilai 0
com membalik suatu angka binari  
neg artinya meng-com 2 kali caranya 1.meng-com 2.menambahkan 1
logika avr hampir sama dengan logika matematika
-----------------------------------------------------------------------
;and sama denang dan
;or sama dengan atau
;eor samadengan jika....maka.....
-----------------------------------------------------------------------
brsh lompat apabila lebih besar dari pada suatu isi register
brlo lompat apabila lebih kecil
brltlompat apbila negatif
breq dan brne bisa digunakan pada bilangan positif dan negatif
brsh dan brlo hanya bisa pada bilangan positif
brge dan brlt hampir sama dengan brsh dan brlo tapi di gunakan pada bilangan negatif
brslo lompat apbila sama lebih kecil
brvs loncat apabila overflow(oferflow adalah ketika sudah sampai 255 dan kembali ke 0 lagi)
brvc loncat bila bila tidak over flow                                                       
-----------------------------------------------------------------------------
            ror dan rol bekerja sama dengan carry
ror artinya memutar kekanan/dari tebesa ke ter kecil (-msb->lsb->c->kembali lagi ke msb)
rol artinya memutar ke kiri/dari terkecil ke tebesar sebaliknya ror(kembali ke lsb<-c<-msb<-lsb<-)
-----------------------------------------------------------------------------
kalau shif tidaka akan mengambil nilai dari carry sedangkan rotat sebaliknya
asr msb selalu tetap
asr membagi 2 bilangan negatif
swap 4 digit pertama pindah ke 4 digit terakhir/berpindah 180 drajat
-----------------------------------------------------------------------
contoh
ldi r18,0b0000_1111
swap r18 ;isi r18=1111_0000
--------------------------------------------------------------------------------
              BCD dibagi menjadi 2:
1.packet bcd   
contoh:
 jadikan 21 ke bcdp
jawab:0010_0001
packet bcd maksiamal 4 bit
2.unpacket bcd
cont0h:
jadikan 21 ke bcdu
jawab:0000_0010
      0000_0001
bcd unpacket maksimal 16 bit
**************************************************************
merubah bcd ke ascii caranya binary ->bcdp ->bcpu ->ascii
merubah ascii ke bcd caranya ascii->bcd u ->bcdp-.binary
------------------------------------------------------------
cara merubah binari ke bcd
1.binari di bagi 10
2.hasil pembagian di swapp
3.hasil yang tlah di swap di or kan dengan sisa pombagian
       perintah perintah lcd
angka dan huruf untuk memerogram lcd:
1= untuk menghapus layar
4=kursor otomatis ke kiri
6=setiap data di kirim kursor otomatis ke kanan
8=lcd tidak di tampilkan dan kursornya
a=tulisan tidak di tampilkan tapi kursor di tampl kan
c=tolisan on kursor of
e -=tulisan on kusor kdap kedip
10=menggeser kursor ke kiri
14=kursor geser ke kanan
80=kursor ada pada awal garis pertama
c0=kursor ada pada awal baris ke 2
28=lcd 2baris dan 4 bit data
38=lcd 2 baris dan 8 bit data
;*******************************************************************************
                    SPI
;*******************************************************************************
SPI TERDIRI DARI
    1.PEMBUATAN
    2.PENGIRIMAN/TULIS
    3.PENERIMA/BACA
   
SS BERGUNA SEBAGAI PETUNJUK=SLAVE SELECT
MOSI DATA
MISO DATA
SCK SIGNAL

SPI DI AVR
    SPCR=CONTROL/BUAT
    SPDR=DATA
    SPSR=SLAVE

KODE CBI PADA SPI BERGUNA MASTER MEMULAI PENGIRIMAN
KODE SBI PADA SPI BERGUNA MASTER MENGAKHIRI PENGIRIMAN
;*******************************************************************************
SBR=GUNANANYA MENG-SET PADA BIT
CBI=GUNANYA MENG-CLEAR PADA BIT
;*******************************************************************************
                    tymerr
rumusnya adalah F*T=1                       
artinya:f=frequensi{mhz)
        t=periode/cycle{second(s)}
        1=(hz)
satuan pada tymer:T,G,M,K,S,M,U,N,P,F(setiap turun di bagi 1000)
contoh:
    x-tal=8mhz
berapakah priodenya
jawab:T=1/f
      =1hz/8mhz=1/8000000
      =0.000000125s=0.125us
setiap intruksi pada mikro membutuh kan 1 periode kecuali pada percabangan
tymer pada micro bisa dengan overflow atau perbandinan

Tidak ada komentar:

Posting Komentar