📄 zcq6.asm
字号:
flash_busy bit p1.3
flash_sclk bit p1.0
flash_se1 bit p2.0
flash_sdi bit p1.1
flash_sdo bit p1.2
flash_se2 bit p2.1
;*********************************
bit_datamove bit 00h
bit_down_ok bit 01h
bit_move_ok bit 02h
bit_rbz bit 03h
bit_start bit 04h
bit_stop bit 05h
bit_readep bit 06h
bit_time bit 07h
bit_cse bit 08h
bit_cse1 bit 09h
bit_yy bit 0ah
bit_first bit 0ch
bit_source bit 0dh
bit_zcwc bit 0eh
bit_ok bit 0fh
bit_ts bit 10h
bit_jsbz bit 11h
bit_tsbz bit 12h
bit_tsbz1 bit 13h
;bit_ts bit 14h
;**************************************
flash_rse data 94h
flash_rmec data 0a0h
flash_rmb data 0a4h
flash_web data 0a8h
flash_webc data 0ach
flash_wbmep data 0b0h
flash_rme data 98h
;*********************************
rg_tt1 equ 2eh
rg_tt equ 2fh
rg_delay equ 30h
rg_jsq equ 31h
rg_write_jsq equ 32h
rg_flash_adrs equ 33h
rg_flash_adrsl equ 34h
rg_flash_adrsh equ 35h
rg_read_jsq equ 37h
rg_read_jsq1 equ 38h
rg_read_jsq2 equ 4fh
rg_cash equ 39h
rg_address equ 40h
rg_adress1 equ 41h
write_flash_adrs equ 43h
write_flash_adrsl equ 44h
write_flash_adrsh equ 45h
write_flash_cash equ 46h
write_flash_adrs1 equ 48h
write_flash_adrsl1 equ 49h
write_flash_adrsh1 equ 4ah
rg_flash_adrs1 equ 4bh
rg_flash_adrsl1 equ 4ch
rg_flash_adrsh1 equ 4dh
rg_flash_cash equ 4eh
rg_sj equ 50h
rg_sj_jsq equ 53h
rg_delay1 equ 55h
rg_adrs_jsq equ 57h
rg_adrs_jsq1 equ 58h
rg_adrs_jsq2 equ 59h
rg_adrs_cash equ 5ah
rg_adrs equ 5dh
rg_tssj equ 5fh
rg_tssj1 equ 5eh
rg_jsjsq equ 60h
rg_delay2 equ 62h
RG_DELAY3 EQU 63H
rg_write_jsq1 equ 64h
;**********************************
rg_cssj equ 80h
;*********************************
rg_sj1 equ 3dh
;*********************************
org 0000h
ljmp main
org 0003h
ljmp int0
org 000bh
ljmp time0
org 0013h
ljmp int1
org 001bh
reti
org 0023h
reti
org 002bh
reti
int0:
push acc
setb bit_start
clr bit_down_ok
clr bit_move_ok
pop acc
reti
time0:
PUSH ACC ;
PUSH PSW ;
PUSH DPL
PUSH DPH
MOV TH0,#0FCH ;定时1MS
MOV TL0,#66H ;定时参数重新装入
DJNZ RG_DELAY,T0_RET ;
SETB BIT_TIME ;置采集数据超时
ljmp t0_ret1
T0_RET:
jnb bit_yy, t0_ret1
dec rg_delay1
mov a, rg_delay1
jnz t0_ret1
mov rg_delay1, #00h
DEC RG_DELAY2
MOV A, RG_DELAY2
JNZ T0_RET1
clr bit_yy
setb p1.5
setb p2.7
setb p2.3
mov p0, #00h
ljmp t0_ret1
t0_ret1:
POP DPH
POP DPL
POP PSW ;
POP ACC ;
RETI
int1:
PUSH ACC
PUSH PSW
PUSH DPL
PUSH DPH
SETB BIT_STOP
POP DPH
POP DPL
POP PSW
POP ACC
RETI
;***********************************
clr_raml:
mov r0, #20h
mov a, #00h
clr_raml1:
mov @r0, a
inc r0
cjne r0, #60h, clr_raml1
ret
clr_ramh:
mov r0, #80h
clr a
clr_ramh1:
mov @r0, a
inc r0
cjne r0, #0ffh, clr_ramh1
ret
delay15ms:
mov r7, #0ffh
delay15ms1:
mov r6, #18h
djnz r6, $
djnz r7, delay15ms1
ret
delay5ms:
mov r7, #08h
delay5ms1:
mov r6, #0ffh
djnz r6, $
djnz r7, delay5ms1
ret
cssj_cx:
mov a, #0ddh
mov r0, #rg_cssj
mov @r0, a
mov a, #03h
inc r0
mov @r0, a
mov a, #04h
inc r0
mov @r0, a
mov a, #05h
inc r0
mov @r0, a
mov a, #06h
inc r0
mov @r0, a
mov a, #07h
inc r0
mov @r0, a
mov a, #08h
inc r0
mov @r0, a
mov a, #09h
inc r0
mov @r0, a
mov a, #0ah
inc r0
mov @r0, a
mov a, #0bh
inc r0
mov @r0, a
mov a, #0ch
inc r0
mov @r0, a
mov a, #0dh
inc r0
mov @r0, a
mov a, #0eh
inc r0
mov @r0, a
mov a, #0fh
inc r0
mov @r0, a
mov a, #01h
inc r0
mov @r0, a
mov a, #08h
inc r0
mov @r0, a
ret
;**************************************
main:
mov sp, #65h
clr ea
mov p0, #00h
lcall clr_raml
lcall clr_ramh
SETB P2.7
setb p1.5
setb p2.3
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#66H
SETB TR0
SETB IT0
CLR TR2
setb et0
CLR ES
mov p0, #00h
SETB RCLK
SETB TCLK
MOV TH2, #0FFH ;设波特率为9.6K
MOV TL2, #0f4h ; ;
MOV RCAP2H,#0FFH ;
MOV RCAP2L,#0f4h ;DCH ;
MOV T2CON,#30H ;定时器2为波特率发生器,接收时钟允许
MOV SCON,#50H ;REN=1,SM2=0,方式1
MOV PCON, #00H
SETB TR2
MOV RG_DELAY, #0FFH
CLR BIT_TIME
clr bit_datamove
setb ea
setb ex0
setb ex1
clr ri
clr ti
clr sm2
setb ren
clr tb8
clr rb8
mov rg_flash_adrs, #10h
mov rg_flash_adrsl, #00h
mov rg_flash_adrsh, #00h
mov write_flash_adrs, #00h
mov write_flash_adrsl, #00h
mov write_flash_adrsh, #00h
mov write_flash_adrs1, #00h
mov write_flash_adrsl1, #00h
mov write_flash_adrsh1, #00h
mov rg_adrs_jsq, #00h
mov rg_adrs_jsq1, #00h
mov rg_adrs_jsq2, #00h
mov rg_adress1, #00h
mov rg_cash, #01h
clr p2.0
setb p2.1
mov a, #0feh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
lcall delay15ms
lcall delay15ms
clr p2.1
setb p2.0
mov a, #0feh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
mov a, #0ffh
mov r0, #rg_sj1
mov @r0, a
lcall write_mm36sb020_byte
lcall delay15ms
lcall delay15ms
setb p2.1
clr p2.0
mov r1, #write_flash_adrs
mov rg_adress1, #00h
lcall read_adress
;***********************************************************
mov r1, #write_flash_adrs
mov a, @r1
mov sbuf, a
jnb ti, $
clr ti
inc r1
mov a, @r1
mov sbuf, a
jnb ti, $
clr ti
inc r1
mov a, @r1
mov sbuf, a
jnb ti, $
clr ti
;***************************************************************
mov r0, #write_flash_cash
mov a, @r0
mov sbuf, a
jnb ti, $
clr ti
cjne a, #01h, start1
ljmp main1
start1:
cjne a, #02h, start2
ljmp main1
start2:
mov r1, #rg_adrs_jsq
mov a, #00h
mov @r1, a
mov a, #01h
inc r1
mov @r1, a
clr a
inc r1
mov @r1, a
inc r1
mov a, #01h
mov @r1, a
mov r1, #rg_adrs_jsq
mov rg_address, #00h
lcall write_address
cpl p2.2
ljmp main1
start3:
clr p2.7
clr p2.3
clr p1.5
; mov a, #3ch
; mov p0, a
; setb bit_yy
mov rg_delay1, #0ffh
mov rg_delay2, #0Bh
MOV RG_DELAY3, #0FFH
ljmp main1
;*************************************************
main1:
; lcall cssj_cx
; lcall test_data
setb p2.0
setb p2.1
;cpl p2.2
mov rg_write_jsq, #00h
MAIN10:
JB P2.5, MAIN2_a
MOV RG_DELAY, #0C8H
MOV RG_JSQ, #20H
CLR BIT_TIME
CLR ES
SETB RCLK
SETB TCLK
MOV TH2, #0FFH ;设波特率为9.6K
MOV TL2, #0f4h ;DCH ;
MOV RCAP2H,#0FFH ;
MOV RCAP2L,#0f4h ;DCH ;
MOV T2CON,#30H ;定时器2为波特率发生器,接收时钟允许
MOV SCON,#50H ;REN=1,SM2=0,方式1
MOV PCON, #00H
SETB TR2
clr bit_move_ok
setb p2.1
setb p2.0
;*******************************************************
main11a:
jb bit_move_ok, write_data0a
clr p2.0
mov r1, #write_flash_adrs
mov rg_adress1, #00h
lcall read_adress
setb p2.0
mov r0, #write_flash_adrs
mov a, @r0
mov rg_adrs_jsq, a
inc r0
mov a, @r0
mov rg_adrs_jsq1, a
inc r0
mov a, @r0
mov rg_adrs_jsq2, a
inc r0
mov a, @r0
mov rg_cash, a
cjne a, #01h, adress_cash
ljmp write_cash1
adress_cash:
cjne a, #02h, adress_cash1
mov r1, #write_flash_adrs
inc r1
inc r1
mov a, @r1
xrl a, #08h
jz start3
setb bit_cse
ljmp write_cash2
adress_cash1:
ljmp main11a
write_cash1:
clr p2.0
setb p2.1
mov rg_cash, #01h
ljmp write_data0a
write_cash2:
clr p2.1
setb p2.0
mov rg_cash, #02h
ljmp write_data0a
write_data0a:
jb bit_start, main11
ljmp main10
main2_a:
ljmp main2
main11_a:
ljmp main10
main11:
;****************************************************************
jb bit_move_ok, main11_a
clr es
mov a, #0aeh
mov sbuf, a
jnb ti, $
clr ti
clr ri
mov rg_delay, #0ffh
clr bit_time
main12:
jb bit_stop, main14
jnb ri, $
clr ri
mov a, sbuf
mov r2, a
xrl a, #0aeh
jnz main12
jnb ri, $
clr ri
mov a, sbuf
; mov a, r2
mov rg_sj, a
lcall write_data
setb p2.0
setb p2.1
clr bit_time
mov rg_delay, #05h
jb bit_zcwc, main130
ljmp main12
main13:
jnb bit_time, main12
main130:
clr p2.7
clr p1.5
clr p2.3
; mov a, #3ch
; mov p0, a
; setb bit_yy
mov rg_delay1, #0ffh
mov rg_delay2, #0Bh
MOV RG_DELAY3, #0FFH
MAIN131:
setb bit_move_ok
clr bit_time
clr bit_start
clr bit_zcwc
setb p2.2
ljmp main10
main14:
clr bit_start
ljmp main131
;**************************************************
main2a:
ljmp main10
main2b:
ljmp main3
main2:
clr bit_move_ok
clr bit_stop
jb bit_down_ok, main23_a
jb p2.6, main2b
CLR ES
SETB RCLK
SETB TCLK
MOV TH2, #0FFH ;设波特率为9.6K
MOV TL2, #0f4H ;
MOV RCAP2H,#0FFH ;
MOV RCAP2L,#0f4H ;
MOV T2CON,#30H ;定时器2为波特率发生器,接收时钟允许
MOV SCON,#50H ;REN=1,SM2=0,方式1
MOV PCON, #00H
SETB TR2
jnb bit_start, main2a
mov rg_delay, #20h
clr bit_time
main2c:
jnb p2.5, main3
jnb ri, main2c
clr ri
clr ti
mov a, sbuf
mov r2, a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -