⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smd4all.asm

📁 这是个PDA的数据备份盘程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
          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 + -