Jak zaimplementować obsługę pamięci u-Wire 93C46 w assemblerze dla 8951?

8951 i uWire





Poprzedni Następny
Wiadomość
Spis treści
From: "Post" <jcieniek_at_nospam_post.pl>
Subject: 8951 i uWire
Date: Wed, 25 Oct 2000 06:34:46 +0200


Mój znajomy poszukuje gotowego programu lub fragmentu w assemblerze dla
procesora 8951 do obsługi pamięci u-Wire 93C46.
Moze ktoś to już zrobił?
Post



Poprzedni Następny
Wiadomość
Spis treści
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: 8951 i uWire
Date: Wed, 25 Oct 2000 07:24:20 +0200


Post napisał(a) w wiadomości: <8t5p6d$juv$1_at_nospam_news.tpi.pl>...
Mój znajomy poszukuje gotowego programu lub fragmentu w assemblerze dla
procesora 8951 do obsługi pamięci u-Wire 93C46.
...


prosze
doskonale moze nie sa ale dzialaja

Andrzej


**********************************
**********************************
_9366_SendHighBit PROC
delay_nop
setb Do
delay_nop
setb CK
delay_nop
clr CK
ret
ENDPROC
**********************************
**********************************
_9366_SendLowBit PROC
delay_nop
clr Do
delay_nop
setb CK
delay_nop
clr CK
ret
ENDPROC
**********************************
**********************************
WaitUntilBusy Proc
delay_nop
setb Do ;
delay_nop
setb CS
delay_nop
jnb Di, $
clr CS
ret
ENDPROC
**************************************************************************
**
**************************************************************************
**
_9366_SendByte PROC
push b
mov b, #8
delay_nop
L? rlc a
mov Do, c
delay_nop
setb CK
delay_nop
clr CK
delay_nop
djnz b, L?
pop b
ret
ENDPROC
**************************************************************************
**
**************************************************************************
**
_9366_ReceiveByte PROC
push b
mov b, #8
delay_nop
L? setb CK
delay_nop
clr CK
delay_nop
mov c, Di
rlc a
delay_nop
djnz b, L?
pop b
ret
ENDPROC

**************************************************************************
**
**************************************************************************
**
_9366_ReadByte PROC
clr CS
clr CK
setb Di
clr Do
delay_nop
setb CS
; call _9366_SendLowBit ; ?
call _9366_SendHighBit ; SB
call _9366_SendHighBit ; 1 - OPCODE
call _9366_SendLowBit ; 0 /
mov a, dph ; get address HIGH
clr c
rrc a ; adress = addres / 2
mov a, dpl ; get address LOW
rrc a
call _9366_SendByte
setb Do ;
delay_nop
call _9366_ReceiveByte
mov datahigh, a
delay_nop
call _9366_ReceiveByte
mov datalow, a
clr CS
mov a, dpl ;
mov c, acc.0
jc L?1
mov a, datahigh
jmp L?2
L?1 mov a, datalow
L?2 ret
ENDPROC

**************************************************************************
**
**************************************************************************
**
_9366_WriteByte PROC
push acc
clr CS
clr CK
setb Di
clr Do
delay_nop
;---------------------------
; ENABLE ERASE/WRITE
;---------------------------
setb CS
;;; call _9366_SendLowBit ; ?
call _9366_SendHighBit ; SB
call _9366_SendLowBit ; 0 - OPCODE
call _9366_SendLowBit ; 0 /
mov a, #0c0h ; ERASE/WRITE enable
call _9366_SendByte
delay_nop
clr CS
delay_nop
;---------------------------
; WRITE
;---------------------------
delay_nop
setb CS
;;;; call _9366_SendLowBit ; ?
call _9366_SendHighBit ; SB
call _9366_SendLowBit ; 0 - OPCODE
call _9366_SendHighBit ; 1 /
mov a, dpl
clr c
rrc a ; adress = addres / 2
call _9366_SendByte
delay_nop
mov acc, dpl
mov C, acc.0
pop acc ; get data from stack
jc L?1 ;
mov datahigh, a
jmp L?2
L?1 mov datalow, a
L?2
mov a, datahigh
call _9366_SendByte
delay_nop
mov a, datalow
call _9366_SendByte
delay_nop
clr CS

ret
ENDPROC

**************************************************************************
**
**************************************************************************
**
_9366_PR_Write PROC
push acc
clr CS
clr CK
setb Di
clr Do
delay_nop
;---------------------------
; ENABLE ERASE/WRITE
;---------------------------
setb CS
call _9366_SendHighBit ; SB
call _9366_SendLowBit ; 0 - OPCODE
call _9366_SendLowBit ; 0 /
mov a, #0c0h ; ERASE/WRITE enable
call _9366_SendByte
delay_nop
clr CS
delay_nop
;---------------------------
; WRITE PROTECT REGISTER
;---------------------------
delay_nop
setb CS
call _9366_SendHighBit ; SB
call _9366_SendLowBit ; 0 - OPCODE
call _9366_SendHighBit ; 1 /
delay_nop
pop acc ; get data from stack
call _9366_SendByte
delay_nop
clr CS
call delay5ms
call delay5ms
call delay5ms

ret
ENDPROC