📄 linedt.asm
字号:
.listmacro
.listinclude
include macro.def
;special reg.******
idr0 equ [00h]
mp equ [01h]
pcl equ [06h]
tblp equ [07h]
tblh equ [08h]
status equ [0ah]
;------------------------
status_c equ status.0
status_z equ status.2
status_ac equ status.1
intc0 equ [0bh]
;------------------------
emi equ intc0.0
eti equ intc0.2
eadi equ intc0.3
tf equ intc0.5
adf equ intc0.6
tmrh equ [0ch]
tmrl equ [0dh]
tmrc equ [0eh]
pa equ [12h]
pac equ [13h]
;------------------------
sda_dir equ pac.6
pb equ [14h]
pbc equ [15h]
pc equ [16h]
pcc equ [17h]
pd equ [18h]
pdc equ [19h]
pwm equ [1ah]
intc1 equ [1eh]
hadr equ [20h]
hcr equ [21h]
hsr equ [22h]
hdr equ [23h]
adrl equ [24h]
adrh equ [25h]
adcr equ [26h]
adsr equ [27h]
;pin define.********
ksave_p equ pa.0
kset_p equ pa.1
com0_p equ pa.2
com1_p equ pa.3
com2_p equ pa.4
com3_p equ pa.5
sda_p equ pa.6
scl_p equ pa.7
adc0_p equ pb.0
seg0_p equ pb.1
seg1_p equ pb.2
seg2_p equ pb.3
seg3_p equ pb.4
seg4_p equ pb.5
seg5_p equ pb.6
;reg. *************
seg0_buf equ [40h]
seg1_buf equ [41h]
seg2_buf equ [42h]
seg3_buf equ [43h]
seg4_buf equ [44h]
seg5_buf equ [45h]
keybuf equ [46h]
keyold equ [47h]
dsp_bufl equ [48h]
dsp_bufh equ [49h]
seg_dsp_buf equ [4ah]
adrh_buf equ [4bh]
adrl_buf equ [4ch]
t100mcnt equ [4dh]
t500mcnt equ [4eh]
t10mcnt equ [4fh]
time_seq equ [50h]
a_buffer equ [51h]
mtemp equ [52h]
mtemp2 equ [53h]
mtemp3 equ [54h]
mtemp1 equ [55h]
stat_buf equ [56h]
int_mtemp3 equ [57h]
int_mtemp4 equ [58h]
timer1 equ [59h]
timer2 equ [5ah]
adrh_bufx equ [5bh]
adrl_bufx equ [5ch]
adrh_bufy equ [5dh]
adrl_bufy equ [5eh]
; equ [5fh]
key_tim equ [60h]
i2cbyte equ [61h]
eep_addr equ [62h]
eep_length equ [63h]
eep_buf_addr equ [64h]
eep_buf_addr1 equ [65h]
eep_buf_addr2 equ [66h]
eep_buf_addr3 equ [67h]
eep_buf_addr4 equ [68h]
eep_buf_addr5 equ [69h]
eep_buf_addr6 equ [6ah]
eep_buf_addr7 equ [6bh]
vlineh equ [6ch]
vlinel equ [6dh]
vref equ [6eh]
; equ [6fh]
vdif equ [70h]
; equ [71h]
vdtmp equ [72h]
lin_mod equ [73h]
sub_mod equ [74h]
flag0 equ [7dh]
t500ms_f equ flag0.0
t100ms_f equ flag0.1
t10ms_f equ flag0.2
keyact_f equ flag0.3
keyin_f equ flag0.4
keyfst_f equ flag0.5
timout_f equ flag0.6
t2m5_f equ flag0.7
flag1 equ [7eh]
batlow_f equ flag1.0
tim2out_f equ flag1.1
dspon_f equ flag1.2
twokey_f equ flag1.3
almon_f equ flag1.4
to_low_f equ flag1.5
to_high_f equ flag1.6
lcdof_f equ flag1.7
flag2 equ [7fh]
;*********constant.*********
reg_adr equ 40h
eep_bf_adr equ 64h
v_default equ 02h
no_key equ 0
k_1 equ 1
k_2 equ 2
k1_k2 equ 3
k1_hld equ 4
k2_hld equ 5
k1_k2_hld equ 6
;**********************************
;* proc vector *
;**********************************
org 00h
jmp _reset
org 04h
jmp _rtint
org 08h
jmp _tim_int
org 0ch
jmp _adc_int
org 10h
jmp _rtint
;**********************************
;* timer interrupt *
;**********************************
_tim_int:
mov a_buffer,a
mov a,status
mov stat_buf,a
set t2m5_f
_tim_int1:
mov a,stat_buf
mov status,a
mov a, a_buffer
reti
;**********************************
;* adc interrupt *
;**********************************
_adc_int:
mov a_buffer,a
mov a,status
mov stat_buf,a
;--get value---
mov a,adrh
mov adrl_bufy,a
mov a,adrl
mov int_mtemp3,a
clr adrh_bufy
clr status_c
rlc int_mtemp3
rlc adrl_bufy
rlc adrh_bufy
clr status_c
rlc int_mtemp3
rlc adrl_bufy
rlc adrh_bufy
;--(v1+v2+...+v8)/2=vline--
mov a,adrl_bufy
addm a,adrl_bufx
mov a,adrh_bufy
adcm a,adrh_bufx
inc int_mtemp4
meqis int_mtemp4,8
jmp _adcintx
clr int_mtemp4
mov a,05h
mov int_mtemp3,a
_adc_int3: ;
clr status_c
rrc adrh_bufx
rrc adrl_bufx
mov a,adrh_bufx
mov vlineh,a
mov a,adrl_bufx
mov vlinel,a
dec int_mtemp3
sz int_mtemp3
jmp _adc_int3
clr adrh_bufx
clr adrl_bufx
_adcint1:
mov a,stat_buf
mov status,a
mov a,a_buffer
_adcintx:
reti
;**********************************
;* other interrupt *
;**********************************
_rtint:
reti
;**********************************
;* reset *
;**********************************
_reset:
clr emi
nop
nop
nop
nop
call _ini_port
call _clr_ram
call _ini_ram
call _ini_adc
call _ini_int0
clr dspon_f
set lcdof_f
call _rd_eep_init
set emi
; mov a,55h
; mov eep_buf_addr,a
; mov eep_buf_addr1,a
; mov a,0aah
; mov eep_buf_addr2,a
; mov eep_buf_addr3,a
;
; clr eep_addr
; mov a,04h
; mov eep_length,a
; call _i2c_write
;
; delay
; delay
; delay
; delay
; delay
; delay
; delay
; delay
; delay
;
; clr eep_addr
; mov a,04h
; mov eep_length,a
; call _i2c_read
;_loop:
; nop
; nop
; nop
; jmp _loop
;**********************************
;* main proc *
;**********************************
_mainloop:
sz t2m5_f
jmp _2m5job
sz t10ms_f
jmp _10msjob
sz t100ms_f
jmp _100msjob
nop
nop
nop
nop
jmp _mainloop
;**********************************
_2m5job:
clr t2m5_f
call _timjob
mov a,03ch ;set all com input
orm a,pac
sz time_seq.0
jmp _dspdrv_0
sz time_seq.1
jmp _dspdrv_1
sz time_seq.2
jmp _dspdrv_2
sz time_seq.3
jmp _dspdrv_3
sz time_seq.4
jmp _dspdrv_4
sz time_seq.5
jmp _dspdrv_5
sz time_seq.6
jmp _dspdrv_6
sz time_seq.7
jmp _dspdrv_7
jmp _2m5jbx
_dspdrv_0:
snz lcdof_f
jmp _dspdrv_0_2
mov a,81h
andm a,pb
mov a,0c3h
andm a,pa
mov a,0c3h
andm a,pac
mov a,0c3h
andm a,pa
jmp _2m5jbx
_dspdrv_0_2:
;call _vlin_to_dspbuf
; mov a,07h
; mov dsp_bufh,a
; mov a,88h
; mov dsp_bufl,a
; snz dspon_f
; jmp _2m5jbx
; sz batlow_f
; jmp _dspdrv_0_1
; mov a,00h ;display low
; mov dsp_bufh,a
; mov a,0cdh
; mov dsp_bufl,a
_dspdrv_0_1:
call _ini_seg
call _dspjob ;dsp_bufh,dsp_bufl-->seg0_buf~seg5_buf
;seg job*********
call _segdrv
;clr seg0_p
;set seg1_p
;set seg2_p
;set seg3_p
;set seg4_p
;set seg5_p
;com job*********
set com0_p
clr pac.2
set com0_p
jmp _inc_tseq
_dspdrv_1:
;seg job*********
call _segdrv
;set seg0_p
;clr seg1_p
;clr seg2_p
;clr seg3_p
;clr seg4_p
;clr seg5_p
;com job*********
clr com0_p
clr pac.2
clr com0_p
jmp _inc_tseq
_dspdrv_2:
;seg job*********
call _segdrv
;set seg0_p
;set seg1_p
;set seg2_p
;set seg3_p
;set seg4_p
;set seg5_p
;com job*********
set com1_p
clr pac.3
set com1_p
jmp _inc_tseq
_dspdrv_3:
;seg job*********
call _segdrv
;clr seg0_p
;clr seg1_p
;clr seg2_p
;clr seg3_p
;clr seg4_p
;clr seg5_p
;com job*********
clr com1_p
clr pac.3
clr com1_p
jmp _inc_tseq
_dspdrv_4:
;seg job*********
call _segdrv
;set seg0_p
;set seg1_p
;set seg2_p
;set seg3_p
;set seg4_p
;set seg5_p
;com job*********
set com2_p
clr pac.4
set com2_p
jmp _inc_tseq
_dspdrv_5:
;seg job*********
call _segdrv
;clr seg0_p
;clr seg1_p
;clr seg2_p
;clr seg3_p
;clr seg4_p
;clr seg5_p
;com job*********
clr com2_p
clr pac.4
clr com2_p
jmp _inc_tseq
_dspdrv_6:
;seg job*********
call _segdrv
;set seg0_p
;set seg1_p
;set seg2_p
;set seg3_p
;set seg4_p
;set seg5_p
;com job*********
set com3_p
clr pac.5
set com3_p
jmp _inc_tseq
_dspdrv_7:
;seg job*********
call _segdrv
;clr seg0_p
;clr seg1_p
;clr seg2_p
;clr seg3_p
;clr seg4_p
;clr seg5_p
;com job*********
clr com3_p
clr pac.5
clr com3_p
jmp _inc_tseq
_inc_tseq:
rl time_seq
_2m5jbx:
jmp _mainloop
;**********************************
_100msjob:
clr t100ms_f
call _dec_tim2
sz almon_f
jmp _100msj_1
clr pb.7
jmp _100msjx
_100msj_1:
call _liutest
_100msjx:
jmp _mainloop
;**********************************
;
_10msjob:
clr t10ms_f
call _start_adc
call _keyscan
call _dec_tim1
call _mode_jb
jmp _mainloop
;**********************************
_timjob:
sdz t10mcnt
jmp _timjob1
set t10ms_f
mov a,04h
mov t10mcnt,a
_timjob1:
sdz t100mcnt
jmp _timjobx
set t100ms_f
mov a,28h
mov t100mcnt,a
_timjobx:
ret
;**********************************
;* subproc *
;**********************************
;==================================
; mode job
;==================================
_mode_jb:
mgtms vlinel,0b9h
jmp _mode_jb_3
_mode_jb_4:
call _ext_alarm
set lcdof_f
jmp _mode_jb_x
_mode_jb_3:
mgtms vlinel,01eh
jmp _mode_jb_4
_mode_jb_5:
clr lcdof_f
sz lin_mod
jmp _mode_jb_1
jmp _mode0_jb
_mode_jb_1:
mneis lin_mod,1
jmp _mode1_jb
mneis lin_mod,2
jmp _mode2_jb
mneis lin_mod,3
jmp _mode3_jb
clr lin_mod
jmp _mode_jb_x
_mode_inc:
inc sub_mod
_mode_jb_x:
ret
;==================================
_mode0_jb:
call _is_k1
sz status_c
jmp _mod0_jb_2 ;no
mov a,vlinel
mov vref,a
mov a,v_default
mov vdif,a
call _vref_to_eep
set dspon_f
mov a,01h
mov lin_mod,a
clr sub_mod
jmp _mode0_jbx
_mod0_jb_2:
sz sub_mod
jmp _mod0_jb_1
jmp _mod0_0
_mod0_jb_1:
mneis sub_mod,1
jmp _mod0_1
mneis sub_mod,2
jmp _mod0_2
clr sub_mod
jmp _mode0_jbx
_mod0_0:
call _vlin_to_dspbuf
set dspon_f
call _set_s0sec5
jmp _mode_inc
_mod0_1:
snz timout_f
jmp _mode0_jbx
clr dspon_f
call _set_s0sec5
jmp _mode_inc
_mod0_2:
snz timout_f
jmp _mode0_jbx
call _vlin_to_dspbuf
set dspon_f
call _set_s0sec5
mov a,01h
mov sub_mod,a
_mode0_jbx:
jmp _mode_jb_x
;==================================
_mode1_jb:
call _is_k1
sz status_c
jmp _mod1_jb_1
call _vref_to_dspbuf
call _3sec_tm2
mov a,02h
mov lin_mod,a
clr sub_mod
jmp _mode1_jbx
_mod1_jb_1:
call _is_k2
sz status_c
jmp _mod1_jb_2
call _ext_alarm
call _vd_to_dspbuf
mov a,vdif
mov vdtmp,a
set dspon_f
mov a,03h
mov lin_mod,a
clr sub_mod
jmp _mode1_jbx
_mod1_jb_2:
call _is_k1k2_hld
sz status_c
jmp _mod1_jb_3
call _ext_alarm
call _clr_param ;???
call _clr_eep
clr lin_mod
clr sub_mod
jmp _mode1_jbx
_mod1_jb_3:
call _alarm_det
set dspon_f
sz sub_mod
jmp _mod1_1
_mod1_0:
call _vlin_to_dspbuf
call _set_s0sec5
mov a,01h
mov sub_mod,a
jmp _mode1_jbx
_mod1_1:
snz timout_f
jmp _mode1_jbx
clr sub_mod
jmp _mod1_0
_mode1_jbx:
jmp _mode_jb_x
;==================================
_mode2_jb:
snz tim2out_f
jmp _mod2_jb_1
call _vlin_to_dspbuf
set dspon_f
mov a,01h
mov lin_mod,a
clr sub_mod
jmp _mode2_jbx
_mod2_jb_1:
sz sub_mod
jmp _mod2_jb_2
jmp _mod2_0
_mod2_jb_2:
mneis sub_mod,1
jmp _mod2_1
mneis sub_mod,2
jmp _mod2_2
clr sub_mod
jmp _mode2_jbx
_mod2_0:
set dspon_f
call _set_s0sec5
jmp _mode_inc
_mod2_1:
snz timout_f
jmp _mode2_jbx
clr dspon_f
call _set_s0sec5
jmp _mode_inc
_mod2_2:
snz timout_f
jmp _mode2_jbx
set dspon_f
call _set_s0sec5
mov a,01h
mov sub_mod,a
_mode2_jbx:
jmp _mode_jb_x
;==================================
_mode3_jb:
call _is_k2
sz status_c
jmp _mod3_jb_1
call _chg_vdtmp
call _vdtmp_to_dspbuf
jmp _mod3_jb_2
_mod3_jb_1:
call _is_k1
sz status_c
jmp _mod3_jb_2
mov a,vdtmp
mov vdif,a
call _vd_to_eep
call _vlin_to_dspbuf
set dspon_f
mov a,01h
mov lin_mod,a
clr sub_mod
jmp _mode3_jbx
_mod3_jb_2:
sz sub_mod
jmp _mod3_jb_3
jmp _mod3_0
_mod3_jb_3:
mneis sub_mod,01h
jmp _mod3_1
mneis sub_mod,02h
jmp _mod3_2
clr sub_mod
jmp _mode3_jbx
_mod3_0:
set dspon_f
call _set_s0sec5
jmp _mode_inc
_mod3_1:
snz timout_f
jmp _mode3_jbx
clr dspon_f
call _set_s0sec5
jmp _mode_inc
_mod3_2:
snz timout_f
jmp _mode3_jbx
set dspon_f
call _set_s0sec5
mov a,01h
mov sub_mod,a
_mode3_jbx:
jmp _mode_jb_x
;==================================
; mode subproc
;==================================
;----------------------------------
_eep_to_vref:
clr eep_addr
mov a,01h
mov eep_length,a
call _i2c_read
mov a,eep_buf_addr
mov vref,a
ret
;----------------------------------
_eep_to_vd:
mov a,01h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -