📄 zxce_1_cpu2.asm
字号:
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;csq
mov a,csqbuf1
movx @dptr,a
inc dptr
mov a,csqbuf2
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;rh
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;ht
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+3
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+4
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#a_hrbuf
mov r0,#06h
put_dat4_t:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dat4_t
mov dph,dp_h
mov dpl,dp_l
mov a,#29h ;")"
movx @dptr,a
lcall set_wdot
ret
;---------------put_dtt_ready--------------------整点回复数据
put_dtt4:
mov dptr,#txd_buf
mov a,#28h ;"("
movx @dptr,a
inc dptr
mov a,#44h ;"D"
movx @dptr,a
inc dptr
mov a,#54h ;"T"
movx @dptr,a
inc dptr
mov a,#54h ;"T"
movx @dptr,a
inc dptr
mov a,#34h ;"4"
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#t1_max_buf
mov r0,#3ch ;12道数据,60位
put_dtt4_tmax:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dtt4_tmax
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf
mov r0,#03h
put_dtt4_vcc:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dtt4_vcc
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;csq
mov a,csqbuf1
movx @dptr,a
inc dptr
mov a,csqbuf2
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
;rh
mov dptr,#rh_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
;ht
mov dptr,#ht_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+3
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+4
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#a_hrbuf
mov r0,#06h
put_dtt4_tim:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dtt4_tim
mov dph,dp_h
mov dpl,dp_l
mov a,#29h ;")"
movx @dptr,a
lcall set_wdot
ret
;--------------外部晶体时钟初始化------------------
clk_init:
mov oscxcn,#66h
clr a
djnz acc,$
djnz acc,$
djnz acc,$
djnz acc,$
osc_wait:
mov a,oscxcn
jnb acc.7,osc_wait
orl oscicn,#08h
lcall set_wdot
ret
;----------------串行I/O端口初始化-------------------
port_init:
mov xbr0,#04h
mov xbr1,#00h
mov xbr2,#44h
nop
mov p0mdout,#00001111b
nop
mov p1mdin,#11111111b
mov p1mdout,#11111111b
mov p2mdout,#00111111b
lcall set_wdot
ret
;-------------uart串口的初始化参数设置------------------
init_uart0:
mov scon0,#50h ;串口0,方式1,8位UART,使能接收
mov tmod,#20h ;方式2,用定时器T1
mov th1,#70h ;设置定时器T1作为UART0波特率重载值
orl ckcon,#10h ;T1使用系统时钟
orl pcon,#80h ;禁止UART0波特率/2 功能
setb tr1
lcall set_wdot
ret
init_uart1:
mov scon1,#50h
mov rcap4h,#0ffh
mov rcap4l,#0b8h
orl ckcon,#40h
orl pcon,#10h
orl t4con,#00110000b
anl t4con,#11110100b
orl t4con,#00000100b
lcall set_wdot
ret
;------------使能/复位WDT--------------
set_wdot:
push dph
push dpl
push acc
mov wdtcn, #0a5h
pop acc
pop dpl
pop dph
ret
;-------------堆栈子程序----------------
push_dptr:
push dph
push dpl
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
pop dpl
pop dph
ret
;-------------延时------------------
delay_1s:
mov r4,#65h
delay_1s_1:
lcall delay_100ms
djnz r4,delay_1s_1
lcall set_wdot
ret
;-------------延时100ms--------------
delay_100ms:
mov r5,#0ffh
mov r6,#0ffh
delay_100ms_1:
djnz r6,$
mov r6,#0ffh
djnz r5,delay_100ms_1
lcall set_wdot
ret
;--------------延时1ms----------------
delay_1ms:
push dpl
push dph
push acc
push 05h
push 06h
mov r5,#0ffh
delay_1ms_1:
mov R6, #0ffh
djnz r6, $
djnz r5,delay_1ms_1
lcall set_wdot
pop 06h
pop 05h
pop acc
pop dph
pop dpl
ret
;-----------------------------------------
tc35_delay:
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall set_wdot
ret
;---------------------------------------
set_power:
setb tc35_up
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
clr tc35_up
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall delay_1s
lcall set_wdot
ret
;-----------------------------------------------
set_igt:
setb igt
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
clr igt
lcall delay_1s
lcall set_wdot
ret
;---------------------------------------------------
set_led:
clr led
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
setb led
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall set_wdot
ret
;-------------------------------------------------
set_spk:
clr spk
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
setb spk
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall delay_100ms
lcall set_wdot
ret
;----------------清温度缓冲区----------------------
clr_wendu_buf:
mov r0,#0ffh
mov dptr,#t1_buf
clr_t_buf_1:
mov a,#38h
movx @dptr,a
inc dptr
djnz r0,clr_t_buf_1
mov a,#38h
movx @dptr,a
mov r1,#0ch
mov dptr,#t1_buf
clr_t_buf_2:
mov a,#2dh
movx @dptr,a
inc dptr
inc dptr
inc dptr
inc dptr
inc dptr
djnz r1,clr_t_buf_2
mov a,#2dh
lcall set_wdot
ret
;-------------清温度最大值缓冲区----------------
clr_wendu_buf_max:
mov r0,#0ffh
mov dptr,#t1_max_buf
clr_t_buf_max_1:
mov a,#38h
movx @dptr,a
inc dptr
djnz r0,clr_t_buf_max_1
mov a,#38h
movx @dptr,a
mov r1,#32h
mov dptr,#t1_max_buf
clr_t_buf_max_2:
mov a,#2dh
movx @dptr,a
inc dptr
inc dptr
inc dptr
inc dptr
inc dptr
djnz r1,clr_t_buf_max_2
mov a,#2dh
movx @dptr,a
lcall set_wdot
ret
;----------------清接收缓冲区----------------------
clr_rxd_buf:
mov r0,#0ffh
mov dptr,#rxd_buf
clr_rx_data_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r0,clr_rx_data_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;---------------清发送缓冲区-----------------
clr_txd_buf:
mov r0,#0ffh
mov dptr,#txd_buf
clr_tx_data_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r0,clr_tx_data_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;-------------清温度数据接收缓冲区--------------
clr_wendu_databuf:
mov r0,#0ffh
mov dptr,#wendu_databuf
clr_wendu_databuf_1:
mov a,#30h
movx @dptr,a
inc dptr
djnz r0,clr_wendu_databuf_1
mov a,#30h
movx @dptr,a
lcall set_wdot
ret
;-------------清短信存放区(存有用的短信)------------
clr_sms_buf:
mov dptr,#sms_buf
mov r1,#0ffh
clr_sms_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r1,clr_sms_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;-------------清接收中心号码缓存区--------------------
clr_cen_r_num_buf:
mov dptr,#cen_r_num
mov r1,#0fh
clr_cen_r_num_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r1,clr_cen_r_num_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;------------清发送中心号码缓存区-----------------------
clr_cen_t_num_buf:
mov dptr,#cen_t_num
mov r1,#0fh
clr_cen_t_num_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r1,clr_cen_t_num_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;------------清存放取得的号码缓冲区--------------
clr_sms_num_buf:
mov dptr,#rec_sms_num
mov r1,#0fh
clr_sms_num_buf_1:
mov a,#0ffh
movx @dptr,a
inc dptr
djnz r1,clr_sms_num_buf_1
mov a,#0ffh
movx @dptr,a
lcall set_wdot
ret
;------------从串口0发送一个字节-------------
sent_byte0:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -