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).
Tags: MCS511. 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
from. arief shaff
0 komentar:
Posting Komentar