📄 new10ah_light_10_0904.asm
字号:
include ht48r10a-1.inc
data.section 'data'
temp1 equ [40h]
temp2 equ [41h]
push_status equ [42h]
push_acc equ [43h]
counth equ [44h]
countl equ [45h]
count_temp equ [46h]
chang_ii equ [47h]
temp equ [48h]
batt_adh equ [49h]
batt_adl equ [4ah]
erf_adh equ [4bh]
erf_adl equ [4ch]
second equ [4dh]
ad_count equ [4eh]
xxxxxxx equ [4fh]
min equ [50h]
hour equ [51h]
day equ [52h]
second05 equ [53h]
vol_h equ [60h]
vol_m equ [61h]
vol_l equ [62h]
voltage equ [63h]
temp_h equ [68h]
temp_l equ [69h]
vref_data equ 62
grnled1 equ pb.5
grnled2 equ pb.4
grnled3 equ pa.3
ylowled equ pa.2
redled equ pa.1
s8050 equ pb.6
erf equ pa.6
bat equ pa.7
code.section at 0 'code'
ORG 00H
jmp fstart
org 04h
jmp time_int
fstart:
mov a,0e0h
mov pac,a
mov pa,a
set pcc
set pc
mov a,8fh
mov pbc,a
mov pb,a
set pdc
set pd
clr pa
clr pb
mov a,40h
mov mp0,a
clear:
mov a,0
mov r0,a
inc mp0
mov a,mp0
sub a,0ffh
sz acc
jmp clear
mov a,02h
mov intc0,a
clr intc1
mov a,0ffh
mov tmrh,a
mov a,91h
mov tmrc,a
set intc0.0
clr grnled1
clr grnled2
clr grnled3
clr ylowled
clr redled
nop
begin:
;call ad_bat
;call ad_erf
;call yunsuan
call ad_batt
call yunsuan_ad
jmp begin
ad_bat:
set s8050
call delay
clr batt_adh ;equ [49h]
clr batt_adl ;equ [4ah]
clr ad_count ;equ [4eh]
clr s8050
ad_bat_a:
snz bat
jmp ad_bat_end
inc batt_adl
sz z
inc batt_adh
jmp ad_bat_a
ad_bat_end:
set s8050
ret
ad_erf:
set s8050
call delay
clr erf_adh ;equ [49h]
clr erf_adl ;equ [4ah]
clr ad_count ;equ [4eh]
clr s8050
ad_erf_a:
snz erf
jmp ad_erf_end
inc erf_adl
sz z
inc erf_adh
jmp ad_erf_a
ad_erf_end:
set s8050
ret
yunsuan:
clr temp_h
clr temp_l
clr counth
clr countl
mov a,28
mov ad_count,a
yunsuan_a:
clr c
mov a,vref_data
addm a,temp_l
mov a,0
adcm a,temp_h
sdz ad_count
jmp yunsuan_a
clr vol_h
clr vol_m
clr vol_l
yunsuan_b:
clr c
mov a,batt_adl
addm a,vol_l
mov a,batt_adh
adcm a,vol_m
mov a,0
adcm a,vol_h
inc countl
sz z
inc counth
mov a,countl
sub a,temp_l
sz acc
jmp yunsuan_b
mov a,counth
sub a,temp_h
sz acc
jmp yunsuan_b
clr temp_l
clr temp_h
clr temp
yunsuan_c:
clr c
mov a,vol_l
sub a,erf_adl
mov vol_l,a
mov a,vol_m
sbc a,erf_adh
mov vol_m,a
mov a,vol_h
sbc a,temp
snz c
jmp yunsuan_d
mov vol_h,a
inc temp_l
sz z
inc temp_h
jmp yunsuan_c
yunsuan_d:
clr temp
clr voltage
yunsuan_e:
clr c
mov a,temp_l
sub a,100
mov temp_l,a
mov a,temp_h
sbc a,temp
snz c
jmp yunsuan_f
mov temp_h,a
inc voltage
jmp yunsuan_e
yunsuan_f:
ret
yunsuan_ad:
clr temp_h
clr temp_l
clr counth
clr countl
mov a,28
mov ad_count,a
yunsuan_ad_a:
clr c
mov a,50
addm a,temp_l
mov a,0
adcm a,temp_h
sdz ad_count
jmp yunsuan_ad_a
clr vol_h
clr vol_m
clr vol_l
yunsuan_ad_b:
clr c
mov a,batt_adl
addm a,vol_l
mov a,batt_adh
adcm a,vol_m
mov a,0
adcm a,vol_h
inc countl
sz z
inc counth
mov a,countl
sub a,temp_l
sz acc
jmp yunsuan_ad_b
mov a,counth
sub a,temp_h
sz acc
jmp yunsuan_ad_b
clr temp_l
clr temp_h
clr temp
mov a,03h
mov erf_adh,a
mov a,0ffh
mov erf_adl,a
yunsuan_ad_c:
clr c
mov a,vol_l
sub a,erf_adl
mov vol_l,a
mov a,vol_m
sbc a,erf_adh
mov vol_m,a
mov a,vol_h
sbc a,temp
snz c
jmp yunsuan_ad_d
mov vol_h,a
inc temp_l
sz z
inc temp_h
jmp yunsuan_ad_c
yunsuan_ad_d:
clr temp
clr voltage
yunsuan_ad_e:
clr c
mov a,temp_l
sub a,10
mov temp_l,a
mov a,temp_h
sbc a,temp
snz c
jmp yunsuan_ad_f
mov temp_h,a
inc voltage
jmp yunsuan_ad_e
yunsuan_ad_f:
ret
ad_batt:
mov a,01h;------------------设置A/D转换时钟,即系统时钟的1/8,1/8*fsy
mov acsr,a
mov a,00001000b;------------PB口选择AN0-AN5作为AD转换输入口并打开AN4通道
mov adcr,a
nop
nop
nop
nop
nop
clr start;------------------启动A/D转换
set start
clr start
ad_batt_a:
sz adcr.6;----------------判定是否转换完成
jmp ad_batt_a;-------------没有继续判
mov a,adrh;----------------已完成进行以下数据处理,将转换的结果进行标准的字节处理
mov batt_adh,a
mov a,adrl
mov batt_adl,a
clr c
clr temp
rlc batt_adh
rlc temp
rlc batt_adh
rlc temp
swap batt_adl
rr batt_adl
rr batt_adl
mov a,03h
andm a,batt_adl
mov a,0fch
andm a,batt_adh
mov a,batt_adh
xorm a,batt_adl
mov a,temp
mov batt_adh,a;------------至此已完成标准字节的处理过程:000000D9D8,D7D6D5D4D3D2D1D0
ret
delay:
mov a,80h
mov ad_count,a
delay_a:
sdz ad_count
jmp delay_a
ret
time_int:
mov push_acc,a
mov a,status
mov push_status,a
set grnled1
set grnled2
set grnled3
set ylowled
set redled
next3:
mov a,push_status
mov status,a
mov a,push_acc
reti
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -