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

📄 tlc2543.asm

📁 12位ADCTLC2541程序,具有软件滤波功能.
💻 ASM
字号:


;name:read_ad
;function: read A/D TLc2543
;inport: b=channel number
;outport: r2,r3 high byte and low byte of change result
;call:none
;use:r2,r3,r7,a,r6
;滤波算法为,去最大和最小其余算术平均,采样个数由R6决定
;使用第一组寄存器
read_ad:       push     psw
               setb     rs0
               clr      rs1
               mov      r6,#5                         ;采样次数4
               mov      r0,#ad_data
read_ad0:      mov      a,b
               mov      r7,#8
               clr      ad_cs
               nop
               nop
               nop
               nop
               nop
ad_high:       mov      c,ad_do
               rlc      a
               mov      ad_di,c
               setb     x_clk
               nop
               nop
               clr      x_clk
               nop
               nop
               djnz     r7,ad_high
               mov      r2,a
               clr      a
               mov      r7,#8
ad_low:        mov      c,ad_do
               rlc      a
               setb     x_clk
               nop
               nop
               clr      x_clk
               djnz     r7,ad_low
               setb     ad_cs
               swap     a
               mov      r3,a
               mov      a,r2
               anl      a,#0fh
               swap     a
               orl      a,r3
               mov      r3,a
               mov      a,r2
               anl      a,#0f0h
               swap     a
               mov      r2,a
               mov      @r0,a
               inc      r0
               mov      a,r3
               mov      @r0,a
               inc      r0
               djnz     r6,read_ad0
               setb     ad_cs
               lcall    sort
               pop      psw
               ret

sort:          mov     b,#3           ;15  排队次数为采样个数-1
sort_1:        mov     r7,b
               mov     r0,#ad_data+2
sort_2:        mov     a,@r0
               mov     r5,a
               inc     r0
               inc     r0
               clr     c
               subb    a,@r0
               jc      sort_3
               jnz     sort_4
               dec     r0               ;dataH is equer
               mov     a,@r0
               mov     r5,a
               inc     r0
               inc     r0
               clr     c
               subb    a,@r0
               dec     r0
               jnc     sort_4
               inc     r0
               mov     a,r5
               xch     a,@r0
               dec     r0
               dec     r0
               mov     @r0,a
               inc     r0
               sjmp    sort_4

sort_3:        mov      a,r5
               xch      a,@r0
               dec      r0
               dec      r0
               mov      @r0,a
               inc      r0
               mov      a,@r0
               inc      r0
               inc      r0
               xch      a,@r0
               dec      r0
               dec      r0
               mov      @r0,a
               inc      r0
sort_4:        djnz     r7,sort_2
               djnz     b,sort_1
               mov      r2,#0
               mov      r3,#0

               mov      r0,#ad_data+5
               mov      r7,#2                   ;求和个数为采样个数-2
add_1:         mov      a,r3
               add      a,@r0
               mov      r3,a
               dec      r0
               mov      a,r2
               addc     a,@r0
               mov      r2,a
               inc      r0
               inc      r0
               inc      r0
               djnz     r7,add_1

               mov      r7,#1                   ;除以4
add_2:         mov      a,r2
               clr      c
               rrc      a
               mov      r2,a
               mov      b,a
               mov      a,r3
               rrc      a
               mov      r3,a
               djnz     r7,add_2
               ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -