📄 smd4all.asm
字号:
setb sck
setb sck
nop
nop
setb cs
setb cs
;===================================
;acall rdy_0busy
;===================================
asw_true:mov answer,#01h
ajmp asw0_end
asw_err:mov a,dist
cjne a,#14h,asw2_err
mov dist,#24h
asw2_err:mov answer,#02h
ajmp asw0_end
;-----------------------------------
quit21:ajmp com_end
quit22:ajmp exit_and_ini
;-----------------------------------
read01:cjne a,#0fh,quit22 ;0fh============read
mov dist,#14h
mov r3,#00h
mov r2,#00h
bf0j: jb ri,bf0k
djnz r3,bf0j
djnz r2,bf0j
ajmp quit12
;-----------
bf0k:mov a,sbuf
clr ri
mov work_temp,a
acall in_chg_code
acall crc_chk;-----------------l_chk_sum
;---------------------------------------------
mov r3,#00h
mov r2,#00h
bf0l:jb ri,bf0m
djnz r3,bf0l
djnz r2,bf0l
ajmp quit12
;-------------
bf0m:mov a,sbuf
clr ri
mov work_temp,a
acall in_chg_code
acall crc_chk ;----------------h_chk_sum
;-----------------------------------------------
mov r3,#00h
mov r2,#00h
bf0n: jb ri,bf0o
djnz r3,bf0n
djnz r2,bf0n
ajmp quit12
;-----------
bf0o: mov a,sbuf
clr ri
cjne a,#7eh,asw_err;;;;;;;;;;key
;------crc-chk-----***********************
mov a,l_fcs
cjne a,#0b8h,asw_err
mov a,h_fcs
cjne a,#0f0h,asw_err
;---read cmmd finished--------------
;------reply to read command--------******
mov h_fcs,#0ffh
mov l_fcs,#0ffh
;-----------------------------------
clr ti
mov a,#7eh;;;;;;;;;7e
mov sbuf,a
jnb ti,$
clr ti
;--------------------
mov a,#0aah;;;;;;;;aa
mov sbuf,a
jnb ti,$
clr ti
mov work_temp,a
acall crc_chk
;--------------------
mov a,dist;;;;;;;;14
mov sbuf,a
jnb ti,$
clr ti
mov work_temp,a
acall crc_chk
;--------------------
mov a,bias1;;bias.<1>
mov work_temp,a
acall crc_chk
acall out_chg_code
;--------------------
mov a,bias2;;bias.<2>
mov work_temp,a
acall crc_chk
acall out_chg_code
;--------------------
mov a,rh_frame;;;;;;framh
mov work_temp,a
acall crc_chk
acall out_chg_code
;--------------------
mov a,rl_frame;;;;;;framl
mov work_temp,a
acall crc_chk
acall out_chg_code
;---------------------------
;===========================
;acall rdy_0busy
;===========================
;----read command head------
nop
nop
clr cs
clr cs
nop
nop
clr sck
clr sck
;-------
jb buf_flag,bffr2_4
mov work_temp,#54h;;;;;54h--buffer1;;;56h--buffer2;;;
;buffer read
sjmp next24
bffr2_4:mov work_temp,#56h
next24:acall to_ic_byte
mov work_temp,fpage_h ;PA.10---PA.07
acall to_ic_byte
mov work_temp,fpage_l ;PA.06---PA.00,BF.08
acall to_ic_byte
mov work_temp,bias1 ;BF.07---BF.00
acall to_ic_byte
mov work_temp,#00h ;don't care bits
acall to_ic_byte
;------------------------
mov a,bias2
mov data_sum,a
senddata:acall read_from_buf
acall crc_chk
acall out_chg_code
;---------------
djnz data_sum,senddata
;----------------
setb sck
setb sck
nop
nop
setb cs
setb cs
;----------------
ajmp asw1_end
;-----------------1------------
asw0_end:mov h_fcs,#0ffh
mov l_fcs,#0ffh
;----------------------
mov a,#7eh;;;;7eh
mov sbuf,a
;---------2------------
mov a,#0aah;;;aah
jnb ti,$
clr ti
mov sbuf,a
mov work_temp,a
acall crc_chk
;---------3------------
jnb ti,$
clr ti
mov a,dist;write:05h--0ah;read:0fh--14h;;;;;;;;;14
mov sbuf,a
mov work_temp,a
acall crc_chk
jnb ti,$
clr ti
;---------4------------
mov a,bias1;;bias.<1>
mov work_temp,a
acall crc_chk
acall out_chg_code
;---------4++++-*******
mov a,bias2;;bias.<2>
mov work_temp,a
acall crc_chk
acall out_chg_code
;--------------********
mov a,rh_frame;framh
mov work_temp,a
acall crc_chk
acall out_chg_code
;------------6----------
mov a,rl_frame;framl
mov work_temp,a
acall crc_chk
acall out_chg_code
;---------7--------------
mov a,answer
mov sbuf,a
mov work_temp,a
acall crc_chk
jnb ti,$
clr ti
;----------8-------------
asw1_end:mov a,l_fcs;
cpl a
mov work_temp,a
acall out_chg_code;without crc_chk
;---------9--------------
mov a,h_fcs;
cpl a
mov work_temp,a
acall out_chg_code;without crc_chk
;---------a--------------
mov a,#7eh
mov sbuf,a
jnb ti,$
clr ti
exit_and_ini:;---------------------
setb sck
setb sck
nop
setb cs
setb cs
;------------
mov h_fcs,#0ffh
mov l_fcs,#0ffh
mov dist,#00h
mov answer,#00h
mov cmmd_type,#00h
;-------------------------
com_end:cpl buf_flag;;;;;;;;;;;;;;;;;;key
clr ri
clr ti
;----------------
pop psw
;pop b
;pop acc
reti
;------------------------------------
;------------------------------------
using 1
;------------------------------------
out_chg_code:mov a,work_temp
cjne a,#7eh,cgc002;-----\
mov b,#5eh ;|
cgc001:mov a,#7dh ;|
mov sbuf,a ;|
jnb ti,$ ;|
clr ti ;|
;---------------- ;|
mov a,b ;|
mov sbuf,a ;|
jnb ti,$ ;|
clr ti ;|
sjmp cgc004 ;|
cgc002:cjne a,#7dh,cgc003 ;|
mov b,#5dh ;|
sjmp cgc001 ;|
cgc003:mov sbuf,a ;|
jnb ti,$ ;|
clr ti ;----/
cgc004:ret
;-------------------------------------
in_chg_code:mov a,work_temp
cjne a,#7dh,cgc03 ;--\
jnb ri,$ ;|
mov a,sbuf ;|
clr ri ;|
cjne a,#5eh,cgc02 ;|
mov a,#7eh ;| exchange code
sjmp cgc03 ;|
cgc02:cjne a,#5dh,cgc03 ;|
mov a,#7dh ;|
;--------------- ;|
cgc03:mov work_temp,a ;|
;---------------
ret
;--------------------------------------
crc_chk:mov a,work_temp
xrl a,l_fcs
mov b,a
crc11: mov dptr,#fcs_ltab
movc a,@a+dptr
xrl a,h_fcs
mov l_fcs,a
;----------
mov a,b
mov dptr,#fcs_htab
movc a,@a+dptr
xrl a,#00h
mov h_fcs,a
ret
;--------------------------------------
to_ic_byte:mov a,work_temp
mov r0,#08h
clr si
sb00:clr sck
clr sck
clr c
rlc a
jnc sb02
sb01:setb si
setb si
sjmp sb03
sb02:clr si
clr si
sb03:nop
nop
setb sck
setb sck
nop
djnz r0,sb00
ret
;--------------------------------------
read_from_buf:
mov r0,#08h
mov a,#00h
gb00:setb sck
setb sck
nop
nop
clr sck
clr sck
nop
jnb so,gb02
gb01:setb c
sjmp gb03
gb02:clr c
gb03:rlc a
;clr sck
djnz r0,gb00
mov work_temp,a
ret
;---------------------------------------
rdy_0busy:clr cs
clr cs
nop
clr sck
clr sck
mov work_temp,#57h;read status register;
acall to_ic_byte
xxx00:acall read_from_buf
mov a,work_temp
clr c
rlc a
jnc xxx00
setb sck
setb sck
nop
nop
setb cs
setb cs
ret
;---------------------------------------
using 0;
;---------------------------------------
fcs_htab:;32(hang2)*8(lie4)=256(bytes):high_bytes
db 000h,011h,023h,032h,046h,057h,065h,074h
db 08ch,09dh,0afh,0beh,0cah,0dbh,0e9h,0f8h
db 010h,001h,033h,022h,056h,047h,075h,064h
db 09ch,08dh,0bfh,0aeh,0dah,0cbh,0f9h,0e8h
db 021h,030h,002h,013h,067h,076h,044h,055h
db 0adh,0bch,08eh,09fh,0ebh,0fah,0c8h,0d9h
db 031h,020h,012h,003h,077h,066h,054h,045h
db 0bdh,0ach,09eh,08fh,0fbh,0eah,0d8h,0c9h
db 042h,053h,061h,070h,004h,015h,027h,036h
db 0ceh,0dfh,0edh,0fch,088h,099h,0abh,0bah
db 052h,043h,071h,060h,014h,005h,037h,026h
db 0deh,0cfh,0fdh,0ech,098h,089h,0bbh,0aah
db 063h,072h,040h,051h,025h,034h,006h,017h
db 0efh,0feh,0cch,0ddh,0a9h,0b8h,08ah,09bh
db 073h,062h,050h,041h,035h,024h,016h,007h
db 0ffh,0eeh,0dch,0cdh,0b9h,0a8h,09ah,08bh
db 084h,095h,0a7h,0b6h,0c2h,0d3h,0e1h,0f0h
db 008h,019h,02bh,03ah,04eh,05fh,06dh,07ch
db 094h,085h,0b7h,0a6h,0d2h,0c3h,0f1h,0e0h
db 018h,009h,03bh,02ah,05eh,04fh,07dh,06ch
db 0a5h,0b4h,086h,097h,0e3h,0f2h,0c0h,0d1h
db 029h,038h,00ah,01bh,06fh,07eh,04ch,05dh
db 0b5h,0a4h,096h,087h,0f3h,0e2h,0d0h,0c1h
db 039h,028h,01ah,00bh,07fh,06eh,05ch,04dh
db 0c6h,0d7h,0e5h,0f4h,080h,091h,0a3h,0b2h
db 04ah,05bh,069h,078h,00ch,01dh,02fh,03eh
db 0d6h,0c7h,0f5h,0e4h,090h,081h,0b3h,0a2h
db 05ah,04bh,079h,068h,01ch,00dh,03fh,02eh
db 0e7h,0f6h,0c4h,0d5h,0a1h,0b0h,082h,093h
db 06bh,07ah,048h,059h,02dh,03ch,00eh,01fh
db 0f7h,0e6h,0d4h,0c5h,0b1h,0a0h,092h,083h
db 07bh,06ah,058h,049h,03dh,02ch,01eh,00fh
;-----------------------------------------
fcs_ltab:;32(hang2)*8(lie4)=256(bytes):low_bytes
db 000h,089h,012h,09bh,024h,0adh,036h,0bfh
db 048h,0c1h,05ah,0d3h,06ch,0e5h,07eh,0f7h
db 081h,008h,093h,01ah,0a5h,02ch,0b7h,03eh
db 0c9h,040h,0dbh,052h,0edh,064h,0ffh,076h
db 002h,08bh,010h,099h,026h,0afh,034h,0bdh
db 04ah,0c3h,058h,0d1h,06eh,0e7h,07ch,0f5h
db 083h,00ah,091h,018h,0a7h,02eh,0b5h,03ch
db 0cbh,042h,0d9h,050h,0efh,066h,0fdh,074h
db 004h,08dh,016h,09fh,020h,0a9h,032h,0bbh
db 04ch,0c5h,05eh,0d7h,068h,0e1h,07ah,0f3h
db 085h,00ch,097h,01eh,0a1h,028h,0b3h,03ah
db 0cdh,044h,0dfh,056h,0e9h,060h,0fbh,072h
db 006h,08fh,014h,09dh,022h,0abh,030h,0b9h
db 04eh,0c7h,05ch,0d5h,06ah,0e3h,078h,0f1h
db 087h,00eh,095h,01ch,0a3h,02ah,0b1h,038h
db 0cfh,046h,0ddh,054h,0ebh,062h,0f9h,070h
db 008h,081h,01ah,093h,02ch,0a5h,03eh,0b7h
db 040h,0c9h,052h,0dbh,064h,0edh,076h,0ffh
db 089h,000h,09bh,012h,0adh,024h,0bfh,036h
db 0c1h,048h,0d3h,05ah,0e5h,06ch,0f7h,07eh
db 00ah,083h,018h,091h,02eh,0a7h,03ch,0b5h
db 042h,0cbh,050h,0d9h,066h,0efh,074h,0fdh
db 08bh,002h,099h,010h,0afh,026h,0bdh,034h
db 0c3h,04ah,0d1h,058h,0e7h,06eh,0f5h,07ch
db 00ch,085h,01eh,097h,028h,0a1h,03ah,0b3h
db 044h,0cdh,056h,0dfh,060h,0e9h,072h,0fbh
db 08dh,004h,09fh,016h,0a9h,020h,0bbh,032h
db 0c5h,04ch,0d7h,05eh,0e1h,068h,0f3h,07ah
db 00eh,087h,01ch,095h,02ah,0a3h,038h,0b1h
db 046h,0cfh,054h,0ddh,062h,0ebh,070h,0f9h
db 08fh,006h,09dh,014h,0abh,022h,0b9h,030h
db 0c7h,04eh,0d5h,05ch,0e3h,06ah,0f1h,078h
;----------------------------------------------
end;ok
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -