按你的方法做了,还是不行,继续请教!
cs bit p2.2
si bit p1.7
sck bit p2.0
so bit p2.1
wren_inst equ 06h
wrdi_inst equ 04h
wrsr_inst equ 01h
rdsr_inst equ 05h
write_inst equ 02h
read_inst equ 03h
byte_addr equ 10h
byte_data equ 11h
page_addr equ 1f0h
page_data1 equ 22h
page_data2 equ 33h
page_data3 equ 44h
status_reg equ 00h
max_poll equ 99h
init_state equ 08h
inis_state equ 00h
slic equ 030h
stack_top equ 060h
;************************************************
;*code
org 0000h
ljmp main
org 0100h
main:
mov sp,#stack_top
clr ea
nop
setb so
nop
setb cs
nop
clr sck
nop
clr si
nop
lcall wren_cmd
lcall wrsr_cmd
lcall wren_cmd
lcall byte_write
lcall wren_cmd
lcall byte_read
lcall wren_cmd
lcall rst_wdog
jmp main
;*****************************
wren_cmd:
clr sck
nop
clr cs
nop
mov a,#wren_inst
lcall outbyt
clr sck
nop
setb cs
nop
ret
;****************************
wrdi_cmd:
clr sck
nop
clr cs
nop
mov a,#wrdi_inst
lcall outbyt
clr sck
nop
setb cs
nop
ret
;****************************
wrsr_cmd:
clr sck
nop
clr cs
nop
mov a,#wrsr_inst
lcall outbyt
mov a,#status_reg
lcall outbyt
clr sck
nop
setb cs
nop
lcall wip_poll
ret
;***************************
rdsr_cmd:
clr sck
nop
clr cs
nop
mov a,#rdsr_inst
lcall outbyt
lcall inbyt
clr sck
nop
setb cs
nop
ret
;***************************
byte_write:
mov dptr,#byte_addr
clr sck
nop
clr cs
nop
mov a,#write_inst
mov b,dph
mov c,b.0
mov acc.3,c
lcall outbyt
mov a,dpl
lcall outbyt
mov a,#byte_data
lcall outbyt
clr sck
nop
setb cs
nop
lcall wip_poll
ret
;******************************
byte_read:
mov dptr,#byte_addr
clr sck
nop
clr cs
nop
mov a,#read_inst
mov b,dph
mov c,b.0
mov acc.3,c
lcall outbyt
mov a,dpl
lcall outbyt
lcall inbyt
clr sck
nop
setb cs
nop
ret
;*****************************
page_write:
mov dptr,#page_addr
clr sck
nop
clr cs
nop
mov a,#write_inst
mov b,dph
mov c,b.0
mov acc.3,c
lcall outbyt
mov a,dpl
lcall outbyt
mov a,#page_data1
lcall outbyt
mov a,#page_data2
lcall outbyt
mov a,#page_data3
lcall outbyt
clr sck
nop
setb cs
nop
lcall wip_poll
ret
;*******************************
sequ_read:
mov dptr,#page_addr
clr sck
nop
clr cs
nop
mov a,#read_inst
mov b,dph
mov c,b.0
mov acc.3,c
lcall outbyt
mov a,dpl
lcall outbyt
lcall inbyt
lcall inbyt
lcall inbyt
clr sck
nop
setb cs
nop
ret
;******************************
rst_wdog:
clr cs
nop
setb cs
ret
;*****************************
wip_poll:
mov r1,#max_poll
wip_poll1:
lcall rdsr_cmd
jnb acc.0,wip_poll2
djnz r1,wip_poll1
wip_poll2:
ret
;*****************************
outbyt:
mov r0,#08
outbyt1:
clr sck
rlc a
mov si,c
setb sck
djnz r0,outbyt1
clr si
ret
;****************************
inbyt:
mov r0,#08
inbyt1:
setb sck
nop
clr sck
mov c,so
rlc a
djnz r0,inbyt1
ret
END
发表时间:2003年7月22日9:42:11