⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 new10ah_light_10_0904.asm

📁 24V铅酸电池电量指示检测
💻 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 + -