Selamat Datang Di Blog Kami

إِنَّ اللهَ لاَ يَنْظُرُ إِلَى صُوَرِكُمْ وَ أَعْمَالِكُمْ وَ إِنَّمَا يَنْظُرُ إِلَى قُلُوْبِكُمْ وَ نِيَّاتِكُمْ

“Sesungguhnya Allah tidak melihat kepada rupa dan amal-amal kalian, tetapi Dia melihat kepada hati dan niat kalian.” (shahih Muslim dan lainnya)

Selasa, 19 Januari 2010

I2C

I2C merupakan teknologi yang digunakan untuk berkomunikasi antar IC menggunakan format komunikasi data serial. Dengan demikian mikrokontroler dapat berkomunikasi dengan perangkat lain secara efektif dan efisien. Berikut adalah rutin program yang biasa diterapkan dalam berkomunikasi dengan memori serial. Di dalam sub rutin tersebut terdiri dari rutin - rutin :
1. SMDelay, memberi waktu jeda
2. SMStart, memulai komunikasi serial
3. SMStop, mengakhiri komunikasi serial
4. SMPutBit, mengirim data bit
5. SMGetBit, mengambil data bit
6. SMWriteByte, menulis data byte
7. SMReadByte, membaca data byte
8. SMWrite, menulis data serial
9. SMRead, membaca data serial
10. SMIncAddress, mengakses alamat berikutnya
11. SMSetAddress, menset alamat memori
Dalam pemrograman mcs-51 yang perlu diinisialisasikan adalah SMBuf (memori sementara sesaat sebelum/setelah dikirimkan), SCL (bit serial clock), SDA (bit serial data). Juga penggunaan memori 16 bit (DPTR) untuk keperluan pengalamatan memori serial (SMAddHigh dan SMAddrLow).
SMDelay:
nop
nop
nop
nop
ret

SMStart:
clr SCL
setb SDA
setb SCL
call SMDelay
clr SDA
call SMDelay
clr SCL
call SMDelay
ret

SMStop:
clr SCL
clr SDA
setb SCL
call SMDelay
setb SDA
call SMDelay
ret

SMPutBit:
mov SDA,c
setb SCL
call SMDelay
clr SCL
call SMDelay
ret

SMGetBit:
setb SDA
setb SCL
call SMDelay
mov c,SDA
clr SCL
call SMDelay
ret

SMWriteByte:
push 0
mov 0,#8
SMWriteByteLoop:
rlc a
call SMPutBit
djnz 0,SMWriteByteLoop
pop 0
ret

SMReadByte:
push 0
mov 0,#8
SMReadByteLoop:
call SMGetBit
rlc a
djnz 0,SMReadByteLoop
pop 0
ret

SMWrite:
push acc
push psw
call SMStart
mov a,SMAddHigh
rlc a
orl a,#10100000b
call SMWriteByte
call SMGetBit
mov a,SMAddLow
call SMWriteByte
call SMGetBit
mov a,SMBuf
call SMWriteByte
call SMGetBit
call SMStop
BusyLoop:
mov a,#10100000b
call SMStart
call SMWriteByte
call SMGetBit
jc BusyLoop
pop psw
pop acc
ret

SMRead:
push acc
push psw
call SMStart
mov a,SMAddHigh
rlc a
orl a,#10100000b
call SMWriteByte
call SMGetBit
mov a,SMAddLow
call SMWriteByte
call SMGetBit
call SMStart
mov a,SMAddHigh
rlc a
orl a,#10100001b
call SMWriteByte
call SMGetBit
call SMReadByte
mov SMBuf,a
call SMGetBit
call SMStop
pop psw
pop acc
ret

SMIncAddress:
push acc
push psw
mov a,SMAddLow
add a,#1
mov SMAddLow,a
mov a,SMAddHigh
addc a,#0
mov SMAddHigh,a
pop psw
pop acc
ret

SMSetAddress:
mov SMAddLow,dpl
mov SMAddHigh,dph
ret
Tags: MCS51

from. arief shaff

0 komentar:

Template by : kendhin x-template.blogspot.com