SPI na 51



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Maniek" <maniek_at_nospam_underweb.net>
Subject: SPI na 51
Date: Sun, 12 Mar 2000 18:16:05 GMT


Poszukuje procedurek do interfejsu SPI dla C51, konkretnie pamiec szeregowa
(moje lenistwo). W zamian zapodam I2C, LCD, KGB ;-) i moze inne w razie
potrzeby.

pozdrowienia <<Maniek

Poprzedni Następny
Wiadomość
Spis treści
From: Maciek <mswiatko_at_nospam_elka.pw.edu.pl>
Subject: Re: SPI na 51
Date: Sun, 12 Mar 2000 20:56:12 GMT


Cześć!
Znalazłem tylko coś takiego. Pamiętam że kiedyś miałem robić programator
do 89S8252 ale kupiłem gotowy i nie ćwiczyłem tego dalej. ;)
Może coś z tego zrobisz :)


***************************************
***************************************
; IN: A - byte to send

SPI_SendByte PROC

push b

call wait

mov b, #8

L? rlc a
mov MOSI, C

setb CK
call wait
clr Ck
call wait

djnz b, L?

call wait

pop b
ret

ENDPROC

***************************************
***************************************
; OUT: A - received byte


SPI_ReceiveByte PROC

push b

call wait

mov b, #8

L? mov C, MISO
rlc a

setb CK
call wait
clr CK
call wait

djnz b, L?

call wait

pop b
ret

ENDPROC


***************************************
***************************************
; IN: dptr - address
; OUT: A - read byte

SPI_ReadByte PROC

mov a, dph
rl a
rl a
rl a
anl a, #0f8h
orl a, #001h

call SPI_SendByte
mov a, dpl
call SPI_SendByte

call SPI_ReceiveByte
ret

ENDPROC

***************************************
***************************************
; IN: dptr - address
; A - data to write

SPI_WriteByte PROC

push acc

mov a, dph
rl a
rl a
rl a
anl a, #0f8h
orl a, #002h

call SPI_SendByte
mov a, dpl
call SPI_SendByte

pop acc
call SPI_SendByte

ret

ENDPROC

***************************************
***************************************
; IN: NONE

SPI_Lock PROC

mov a, #0ACh
call SPI_SendByte
mov a, #007h
call SPI_SendByte
mov a, #000h
call SPI_SendByte

ret

ENDPROC

***************************************
***************************************
; IN: NONE

SPI_ChipErase PROC

mov a, #0ACh
call SPI_SendByte
mov a, #004h
call SPI_SendByte
mov a, #000h
call SPI_SendByte

ret

ENDPROC

*********************************
*********************************

wait PROC

SJMP $+2
SJMP $+2
ret

ENDPROC

*********************************

; -- end of file --