📄 mpu.asm
字号:
acall sspdtest
ajmp serial_exit
serial_b: jnb pc_b_flag, serial_c
clr pc_b_flag
clr sspd_adsmpl ; sample 4,5,6 detectors
mov dspbuffx0, #_ledhiden
mov dspbuffx1, #_ledhiden
mov dspbuffx2, #_ledhiden
mov dspbuffx3, #_ledhiden
mov dspbuffy3, #_ledhiden
mov dspbuffy2, #_ledhiden
mov dspbuffy1, #_ledhiden
mov dspbuffy0, #_b
lcall led
acall sspdtest
ajmp serial_exit
serial_c: jnb pc_c_flag, serial_d
clr pc_c_flag
mov dspbuffx0, #_ledhiden
mov dspbuffx1, #_ledhiden
mov dspbuffx2, #_ledhiden
mov dspbuffx3, #_ledhiden
mov dspbuffy3, #_ledhiden
mov dspbuffy2, #_ledhiden
mov dspbuffy1, #_ledhiden
mov dspbuffy0, #_c
lcall led
acall ad_data_treat
acall send_data
jb tderr_flag, rs_err_treat
ajmp serial_exit
serial_d: jnb pc_d_flag, serial_e
clr pc_d_flag
lcall speedup_cp
ajmp serial_exit
serial_e: jnb pc_e_flag, serial_f
clr pc_e_flag
lcall slowdown_cp
ajmp serial_exit
serial_f: jnb pc_f_flag, serial_exit
clr pc_f_flag
setb ledflag
ajmp serial_exit
rs_err_treat: acall error_treat
serial_exit: setb ea
reti
;==================================================================
;name: error_treat
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
error_treat: push psw
jnb rderr_flag, td_err_treat
clr rderr_flag
mov dspbuffx0, #_d
mov dspbuffx1, #_rs
mov dspbuffx2, #_ledhiden
mov dspbuffx3, #_ledhiden
mov dspbuffy0, #_rs
mov dspbuffy1, #_rs
mov dspbuffy2, #_E
mov dspbuffy3, #_ledhiden
setb dsp_xflag
setb dsp_yflag
lcall led
sjmp err_t_exit
td_err_treat: jnb tderr_flag, err_t_exit
clr tderr_flag
mov dspbuffx0, #_d
mov dspbuffx1, #_S
mov dspbuffx2, #_ledhiden
mov dspbuffx3, #_ledhiden
mov dspbuffy0, #_rs
mov dspbuffy1, #_rs
mov dspbuffy2, #_E
mov dspbuffy3, #_ledhiden
setb dsp_xflag
setb dsp_yflag
lcall led
err_t_exit: push psw
ret
;==================================================================
;name: read_rsc_port
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
read_rsc_port: push psw
push r2
mov r2, #0
read_point: jnb ri, read_count
clr ri
mov rscbuffr, sbuf ; read serial port
setb tb8
mov sbuf, rscbuffr ; send back to serial port
jnb ti, $
clr ti
inc r2
cjne r2, #5, read_point
sjmp read_err
read_count: cjne r2, #0, read_exit
sjmp read_point
read_err: setb rderr_flag
read_exit: pop r2
pop psw
ret
;==================================================================
;name: send_rsc_port
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
send_rsc_port: push psw
push r2
push acc
mov r2, #5
send_point: setb tb8
mov sbuf, rscbufft ; send data to serial port
jnb ti, $
clr ti
jnb ri, $
clr ri
mov rscbuffr, sbuf
mov a, rscbuffr
cjne a, rscbufft, r2_count
sjmp td_exit
r2_count: djnz r2, send_point
td_data_err: setb tderr_flag
td_exit: pop acc
pop r2
pop psw
ret
;==================================================================
;name: ad_data_treat
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
ad_data_treat: push psw
push acc
push r0
push r1
push r2
push r3
mov r0, #sspd_adbuff11l
mov r1, #18
acall reverse
mov r0, #sspd_adbuff11l
mov b, #9
acall adjust
mov r0, #sspd_adbuff11l
mov r1, #sspddata1l
mov r2, #3
mov r3, #3
acall bufadd
pop r3
pop r2
pop r1
pop r0
pop acc
pop psw
ret
;==================================================================
;name: send_data( each time send three data )
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
send_data: push psw
push r0
push b
mov r0, #sspddata1l
mov b, #6
send_loop: mov rscbufft, @r0
acall send_rsc_port
jb tderr_flag, send_exit
acall delay1ms
mov dsp_xl, @r0
mov dsp_xh, #0
setb dsp_xflag
clr dsp_yflag
acall led
inc r0
djnz b, send_loop
send_exit: pop b
pop r0
pop psw
ret
;==================================================================
;name: sppedup_cp
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
speedup_cp: push acc
mov a, sspdcpbuffl
cjne a, #0fah, speedup
sjmp speedup_exit
speedup: add a, #5
mov sspdcpbuffl, a
speedup_exit: pop acc
ret
;==================================================================
;name: slowdown_cp
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
slowdown_cp: push acc
mov a, sspdcpbuffl
cjne a, #0, slowdown
sjmp slowdown_exit
slowdown: subb a, #5
mov sspdcpbuffl, a
slowdown_exit: pop acc
ret
;==================================================================
;name: portscan
;number:
;used resoures: internal:acc
; lcall ls164k
;algorithm:
;entry: No
;exit:
;------------------------------------------------------------------
portscan: push acc
pc_com: mov a, rscbuffr
pc_com_a: cjne a, #41h, pc_com_b
setb pc_a_flag
pop acc
ret
pc_com_b: cjne a, #42h, pc_com_c
setb pc_b_flag
pop acc
ret
pc_com_c: cjne a, #43h, pc_com_d
setb pc_c_flag
pop acc
ret
pc_com_d: cjne a, #44h, pc_com_e
setb pc_d_flag
pop acc
ret
pc_com_e: cjne a, #45h, pc_com_f
setb pc_e_flag
pop acc
ret
pc_com_f: setb pc_f_flag
pop acc
ret
;*****************************************************************
; DATA DEFINING REGION
;*****************************************************************
;=================================================================
led_data: db 11h,0d7h,32h,92h,0d4h,98h,18h,0d3h
; "0" "1" "2" "3" "4" "5" "6" "7"
; 0 1 2 3 4 5 6 7
db 10h,90h,50h,1ch,3eh,16h,38h,78h
; "8" "9" "A" "b" "c" "d" "E" "F"
; 8 9 10 11 12 13 14 15
led_letter: db 54h,5ch,0dfh,17h,3dh,5eh,1eh,70h
; "H" "h" "i" "J" "L" "n" "o" "P"
; 16 17 18 19 20 21 22 23
db 0d0h,079h,7eh,98h,0d3h,15h,1fh,94h
; "q" "R" "r" "S" "T" "U" "v" "Y"
; 24 25 26 27 28 29 30 31
led_data_p: db 01h, 0c7h,22h, 82h, 0c4h,88h, 08h, 0c3h
; "0." "1." "2." "3." "4." "5." "6." "7."
; 32 33 34 35 36 37 38 39
db 00h, 80h, 40h, 0ch, 2eh, 06h, 28h, 68h
; "8." "9." "A." "b." "c." "d." "E." "F."
; 40 41 42 43 44 45 46 47
led_letter_p: db 44h, 4ch, 0cfh,07h, 2dh, 4eh, 0eh, 60h
; "H." "h." "i." "J." "L." "n." "o." "P."
; 48 49 50 51 52 53 54 55
db 0c0h,069h,6eh, 88h, 0c3h,05h, 0fh, 84h
; "q." "R." "r." "S." "T." "U." "v." "Y."
; 56 57 58 59 60 61 62 63
end