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

📄 smd4all.asm

📁 这是个PDA的数据备份盘程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
name      smd4all
;**********bei4 fen4 pan2***********ok****
;-----------------------------------
pcon             data 87h
;-----------------------------------
T0_ADDR          EQU  000BH
COMM_ADDR        EQU  0023H
;-----------------------------------
;------communication----------------
cmmd_type        data 10h;0-1-2
h_fcs            data 11h
l_fcs            data 12h
;-----------------------------------
rl_frame          data 13h
rh_frame          data 14h
bias1            data 15h;shift address in a page
dist             data 16h
bias2            data 17h;sum of data
;-----------------------------------
data_sum         data 18h
answer           data 19h
temp00           data 1ah
fpage_h          data 1bh
fpage_l          data 1ch
;-----------------------------------
work_temp        data 1dh
;-----------------------------------
;;;;;sys_flag    data 20h
buf_flag         bit  00h
;-----------------------------------
;         bit  p1.0
;         bit  p1.1
cs        bit  p1.2
sck       bit  p1.3
si        bit  p1.4
so        bit  p1.5
rdy_busy  bit  p1.6
;         bit  p1.7
;-----------------------------------
   ORG    0000
          aJMP START
;  ORG    T0_ADDR
;         AJMP  t0serve
   ORG    COMM_ADDR
          aJMP  COMSERVE
;-----------------------------------
          cseg
          ORG    0026H
          ;---------------
START:    clr ea
          mov sp,#60h;
          ;---------------
          ;clr  si
          setb sck
          setb cs
          ;---------------
          mov IP,  #10H;     x|x|x|PS|T1|X1|T0|X0
          mov scon,#50h;     SM0|SM1|SM2|REN|TB8|RB8|TI|RI
          mov tcon,#40h;     TF1|TR1|TF0|TR0|IE1|IT1IE0|IT0
          mov IE,  #10h;     ea|x|x|es|eT1|eX1|eT0|eX0
          ;MOV P1,#06H  ;     p1.0,p1.1,p1.2,p1.3,p1.4,p1.5
          mov TMOD,#20H;     T1-> GATE|C/not(T)|M1|M0|GATE|C/not(T)|M1|M0<-T0
          ;----------------------
          mov pcon,#80h;      19200 baud need pcon=80h
          mov th1,#0fah;
          mov tl1,#0fah;      19200 baud mod=1 #0fah when 22.18Mhz
          ;----------------------
          ;mov pcon,#80h;     smod=1
          ;mov tl1,#0f3h;     9600 baud smod=1 #0f3h when 24Mhz
          ;mov th1,#0f3h;
          ;--------------------------
          mov h_fcs,#0ffh
          mov l_fcs,#0ffh
          mov dist,#00h
          mov answer,#00h
          mov cmmd_type,#00h
          ;acall rdy_0busy
          ;--------------------------
          clr buf_flag;;;;;;;;;;;;;;;;key
          setb ea
          ;--------------------------
;******MAIN control module begin******
    main: nop
    mend: sjmp main
;*************************************
comserve: ;push acc
          ;push b
          push psw
          mov psw,#08h
          jnb ri,qt01;;;quit12
          ;-------1---------
          mov a,sbuf
          clr ri
          cjne a,#7eh,qt01;;;quit12  ;7e
          ;-------2----------
          mov r3,#00h
          mov r2,#00h
   bf01:  jb ri,bf02
          djnz r3,bf01
          djnz r2,bf01
          ajmp quit12
          ;-------------------
   bf02:  mov a,sbuf
          clr ri
          cjne a,#0aah,qt01 ;aa
          mov work_temp,a
          acall crc_chk
          ;-------3-----------
          mov r3,#00h
          mov r2,#00h
   bf03:  jb ri,bf04
          djnz r3,bf03
          djnz r2,bf03
   qt01:  ajmp quit12
          ;-----------
   bf04:  mov a,sbuf
          clr ri
          mov cmmd_type,a     ;dist--command type
          mov work_temp,a
          acall crc_chk
          ;-------4-----------
          mov r3,#00h
          mov r2,#00h
   bf05:  jb ri,bf06
          djnz r3,bf05
          djnz r2,bf05
          ajmp quit12
          ;-------------------
   bf06:  mov a,sbuf
          clr ri
          mov work_temp,a
          acall in_chg_code
          acall crc_chk
          mov a,work_temp
          mov bias1,a   ;bias<1>
          ;-------4+start------
          mov r3,#00h
          mov r2,#00h
   bf_05: jb ri,bf_06
          djnz r3,bf_05
          djnz r2,bf_05
          ajmp quit12
          ;------4+end----
   bf_06: mov a,sbuf
          clr ri
          mov work_temp,a
          acall in_chg_code
          acall crc_chk
          mov a,work_temp
          mov bias2,a     ;bias<2>
          ;-------5-----------*****
          mov r3,#00h
          mov r2,#00h
   bf07:  jb ri,bf08
          djnz r3,bf07
          djnz r2,bf07
          ajmp quit12
          ;-------------------*****
   bf08:  mov a,sbuf
          clr ri
          mov work_temp,a
          acall in_chg_code
          acall crc_chk
          mov a,work_temp
          mov rh_frame,a       ;frameseq.(1) ;rh_frame----page num in cmmd
          mov fpage_h,a        ;fpage_h-------page num in flash
          ;-------6-----------------------------------
          mov r3,#00h
          mov r2,#00h
   bf09:  jb ri,bf0a
          djnz r3,bf09
          djnz r2,bf09
          ajmp quit12
          ;-----------
   bf0a:  mov a,sbuf
          clr ri
          mov work_temp,a
          acall in_chg_code
          acall crc_chk
          mov a,work_temp
          mov rl_frame,a       ;frameseq.(2)
          ;mov fpage_l,a
          clr c
          rlc a
          mov fpage_l,a
          mov a,fpage_h
          rlc a
          mov fpage_h,a
          ;-------------from flash to buffer--------------
          clr cs  ;;;;;;key
          clr cs
          nop
          nop
          clr sck
          clr sck
          nop
          jb buf_flag,bffr0
          mov work_temp,#53h;53--buf1;55h--buf2
          ;data transfer from flash page to buffer1
          sjmp next2_0
    bffr0:mov work_temp,#55h;;;;;;;;;;;;;;;;;;;;;;;;key
  next2_0:acall to_ic_byte
          mov work_temp,fpage_h
          acall to_ic_byte
          mov work_temp,fpage_l
          acall to_ic_byte
          mov work_temp,bias1
          acall to_ic_byte
          setb sck
          setb sck
          nop
          nop
          setb cs
          setb cs
          nop
          nop
          mov r3,#80h
    loop1:djnz r3,loop1
          ;================command type===========
    bf_0a:mov a,cmmd_type
 clr_page:cjne a,#04h,go_write
          mov dist,#09h
          mov data_sum,#02h
          ;-----------------------
     bf1d:mov r3,#00h     ;--------------\
          mov r2,#00h                   ;| l_chk_sum
     bf1e:jb ri,bf1f                    ;| h_chk_sum
          djnz r3,bf1e                  ;|
          djnz r2,bf1e                  ;|
          ajmp quit12                   ;|
          ;---------------              ;|
     bf1f:mov a,sbuf;                   ;|
          clr ri                        ;|
          mov work_temp,a               ;|
          acall in_chg_code             ;|
          acall crc_chk                 ;|
          djnz data_sum,bf1d;-----------;/
          ;---------------
          mov r3,#00h
          mov r2,#00h
     bf1g:jb ri,bf1h
          djnz r3,bf1g
          djnz r2,bf1g
          ajmp quit12
          ;---------------
  ;************************************
 go_write:ajmp write01
   quit12:ajmp exit_and_ini
   go_err:ajmp asw_err
  ;************************************
          ;---------------
     bf1h:mov a,sbuf;
          clr ri
          cjne a,#7eh,go_err
          ;---------------
          mov a,l_fcs
          cjne a,#0b8h,go_err
          mov a,h_fcs
          cjne a,#0f0h,go_err
          ;------write command head---------
          clr cs  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;key
          clr cs
          nop
          nop
          clr sck
          clr sck
          ;---------------
          jb buf_flag,bffr3_2
          mov work_temp,#84h;84--buf1;87h--buf2
          ;buffer write: data will be written into buffer
          sjmp next32
  bffr3_2:mov work_temp,#87h
   next32:acall to_ic_byte
          mov work_temp,fpage_h    ;rrrr,PA.10---PA.07
          acall to_ic_byte
          mov work_temp,fpage_l    ;PA.06---PA.00,BF08
          acall to_ic_byte
          mov work_temp,bias1       ;BF.07---BF.00
          acall to_ic_byte
          ;------8+----------------------
          mov a,bias2
          mov data_sum,a
  clr_buf:mov work_temp,#0ffh
          acall to_ic_byte
          ;---------------
          djnz data_sum,clr_buf
          setb sck
          setb sck
          nop
          nop
          setb cs
          setb cs
          ;---------------
          nop;1        key
          nop;2        key
          nop;3        key
          nop;4        key
          ;---------------- from buffer to flash--
          clr cs
          clr cs
          nop
          nop
          clr sck
          clr sck
          jb buf_flag,bffr4_2
          mov work_temp,#83h;83h--buf1;86h--buf2
          ;buffer to main memory page program
          sjmp next42
  bffr4_2:mov work_temp,#86h
   next42:acall to_ic_byte
          mov work_temp,fpage_h    ;rrrr,PA.10---PA.07
          acall to_ic_byte
          mov work_temp,fpage_l    ;PA.06---PA.00,BF08
          acall to_ic_byte
          mov work_temp,bias1      ;BF.07---BF.00
          acall to_ic_byte         ;
          ;------------------------------
          setb sck
          setb sck
          nop
          nop
          setb cs
          setb cs
          ajmp asw_true;;;;;;;;;;;key
   ;-------------------------------------
   write01:cjne a,#05h,go_read;05h========write
           mov dist,#0ah
           ;------write command head---------
           clr cs  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;key
           clr cs
           nop
           nop
           clr sck
           clr sck
           ;-------------
           jb buf_flag,bffr2_2
           mov work_temp,#84h;84--buf1;87h--buf2
           ;buffer write: data will be written into buffer
           sjmp next22
  bffr2_2:mov work_temp,#87h
   next22:acall to_ic_byte
          mov work_temp,fpage_h    ;rrrr,PA.10---PA.07
          acall to_ic_byte
          mov work_temp,fpage_l    ;PA.06---PA.00,BF08
          acall to_ic_byte
          mov work_temp,bias1       ;BF.07---BF.00
          acall to_ic_byte
          ;------8----------------------
          ;---------------
          mov a,bias2
          mov data_sum,a
 rec_data:mov r3,#00h
          mov r2,#00h
     bf0b:jb ri,bf0c
          djnz r3,bf0b
          djnz r2,bf0b
          ajmp quit12
          ;-----------
     bf0c:mov a,sbuf
          clr ri
          mov work_temp,a
          acall in_chg_code
          acall crc_chk
          acall to_ic_byte
          ;---------------
          djnz data_sum,rec_data
          setb sck
          setb sck
          nop
          nop
          setb cs
          setb cs
          ;--------------
          mov data_sum,#02h
     bf0d:mov r3,#00h     ;--------------\
          mov r2,#00h                   ;| l_chk_sum
     bf0e:jb ri,bf0f                    ;| h_chk_sum
          djnz r3,bf0e                  ;|
          djnz r2,bf0e                  ;|
          ajmp quit12                   ;|
          ;---------------              ;|
     bf0f:mov a,sbuf;                   ;|
          clr ri                        ;|
          mov work_temp,a               ;|
          acall in_chg_code             ;|
          acall crc_chk                 ;|
          djnz data_sum,bf0d;-----------;/
          ;---------------
          mov r3,#00h
          mov r2,#00h
     bf0g:jb ri,bf0h
          djnz r3,bf0g
          djnz r2,bf0g
          ajmp quit12
          ;---------------
  ;*********************************
  go_read:ajmp read01
  ;*********************************
     bf0h:mov a,sbuf;
          clr ri
          cjne a,#7eh,asw_err
          ;---------------
          mov a,l_fcs
          cjne a,#0b8h,asw_err
          mov a,h_fcs
          cjne a,#0f0h,asw_err
          ;---------------- from buffer to flash--
          clr cs
          clr cs
          nop
          nop
          clr sck
          clr sck
          jb buf_flag,bffr2_3
          mov work_temp,#83h;83h--buf1;86h--buf2
          ;buffer to main memory page program
          sjmp next23
  bffr2_3:mov work_temp,#86h
   next23:acall to_ic_byte
          mov work_temp,fpage_h    ;rrrr,PA.10---PA.07
          acall to_ic_byte
          mov work_temp,fpage_l    ;PA.06---PA.00,BF08
          acall to_ic_byte
          mov work_temp,bias1      ;BF.07---BF.00
          acall to_ic_byte         ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -