cs5550.asm

来自「CS5532及cs5550的测试程序,包含器件校准,配置等」· 汇编 代码 · 共 645 行 · 第 1/2 页

ASM
645
字号
;-----------------------------------------------------------------
; 测试CS5550
;-----------------------------------------------------------------
;端口定义:

       cs          bit      p1.5

       sdi         bit      p1.0
       sdo         bit      p1.1
       sck         bit      p1.2
       
       byte_1      equ      10h
       byte_2      equ      11h
       byte_3      equ      12h


             org    0000h
             ajmp   main
             ;org    0003h
             ;ajmp   int_0
             org    0050h

    main: mov      sp       , #70h
          nop
          nop
          acall    dly_50ms
          nop
          clr      cs
          nop

          acall    rst5550
          mov      a        , #80h
          acall    wr_byte
;----------------------------------------------------------------
; 修改5550的初始值
;---------------------------------------------------------------- 
 init5550:nop
          clr      cs
          setb     sck
          mov      a        , #4ah                 ; 通道1计数值
          acall    wr_byte
          mov      a        , #00h
          acall    wr_byte
          mov      a        , #00h
          acall    wr_byte
          mov      a        , #20
          acall    wr_byte
          clr      sck
          setb     cs
          nop
          clr      cs
          clr      sck
          mov      a        , #0ah
          acall    wr_data
          acall    rd_byte
          mov      byte_1   , a
          acall    rd_byte
          mov      byte_2   , a
          acall    rd_byte
          mov      byte_3   , a
          setb     sck
          setb     cs
          nop

          nop
          clr      cs
          setb     sck
          mov      a        , #40h                 ; 通道1配置值,增益50倍,分频系数为1,低电平方式
          acall    wr_byte
          mov      a        , #01h
          acall    wr_byte
          mov      a        , #00h
          acall    wr_byte
          mov      a        , #01h                 ;K=1  AIN1高通滤波器未打开
          acall    wr_byte
          clr      sck
          setb     cs
          nop
          ;ajmp     s_gain

          clr      cs
          clr      sck
          mov      a        , #00h
          acall    wr_data
          acall    rd_byte
          mov      byte_1   , a
          acall    rd_byte
          mov      byte_2   , a
          acall    rd_byte
          mov      byte_3   , a
          setb     sck
          setb     cs
          nop

          clr      cs
          setb     sck
          mov      a        , #42h                 ; 通道1偏移值
          acall    wr_byte
          mov      a        , #0feh
          acall    wr_byte
          mov      a        , #79h
          acall    wr_byte
          mov      a        , #0c0h
          acall    wr_byte
          clr      sck
          setb     cs
          nop
          clr      cs
          clr      sck
          mov      a        , #02h
          acall    wr_data
          acall    rd_byte
          mov      byte_1   , a
          acall    rd_byte
          mov      byte_2   , a
          acall    rd_byte
          mov      byte_3   , a
          setb     sck
          setb     cs
          nop

          clr      cs
          setb     sck
          mov      a        , #44h                 ; 通道1增益值
          acall    wr_byte
          mov      a        , #41h
          acall    wr_byte
          mov      a        , #35h
          acall    wr_byte
          mov      a        , #1eh
          acall    wr_byte
          clr      sck
          setb     cs
          nop
          clr      cs
          clr      sck
          mov      a        , #04h
          acall    wr_data
          acall    rd_byte
          mov      byte_1   , a
          acall    rd_byte
          mov      byte_2   , a
          acall    rd_byte
          mov      byte_3   , a
          setb     sck
          setb     cs
          nop
          nop
          clr      cs
          setb     sck
          mov      a        , #5eh                 ; 清除DRDY位
          acall    wr_byte
          mov      a        , #0ffh
          acall    wr_byte
          mov      a        , #0ffh
          acall    wr_byte
          mov      a        , #0ffh
          acall    wr_byte
          clr      sck
          setb     cs
          nop
          clr      cs
          mov      a        , #0e8h                ; 发连续转换命令 e8h
          acall    wr_byte
          setb     cs

 continue:mov      r1       , #60h
          mov      r0       , #40h
          mov      r6       , #16
continue1:nop
          acall    rd_data

          ;mov      a        , byte_1
          ;mov      @r0      , a
          ;inc      r0
          mov      a        , byte_2
          mov      @r0      , a
          inc      r0
          ;mov      a        , byte_3
          ;mov      @r0      , a
          ;inc      r0
          djnz     r6       , continue1
          nop
          mov      r0       , #40h
          mov      r6       , #16
          mov      18h      , #0
          mov      19h      , #0
     zzz1:mov      a        , @r0
          mov      r5       , a
          mov      a        , 18h
          add      a        , r5
          mov      18h      , a
          mov      a        , 19h
          addc     a        , #0
          mov      19h      , a
          inc      r0
          djnz     r6       , zzz1
          nop
          mov      r6       , #4
   div_d1:mov      a        , 19h
          rrc      a
          mov      19h      , a
          mov      a        , 18h
          rrc      a
          mov      18h      , a
          djnz     r6       , div_d1
          mov      a        , 18h
          mov      @r1      , a
          inc      r1
          
          mov      r0       , #50h
          mov      r6       , #16
continue2:nop
          acall    rd_data
          mov      a        , byte_2
          mov      @r0      , a
          inc      r0
          djnz     r6       , continue2
          nop
          mov      r0       , #50h
          mov      r6       , #16
          mov      18h      , #0
          mov      19h      , #0
     zzz2:mov      a        , @r0
          mov      r5       , a
          mov      a        , 18h
          add      a        , r5
          mov      18h      , a
          mov      a        , 19h
          addc     a        , #0
          mov      19h      , a
          inc      r0
          djnz     r6       , zzz2
          nop
          mov      r6       , #4
   div_d2:mov      a        , 19h
          rrc      a
          mov      19h      , a
          mov      a        , 18h
          rrc      a
          mov      18h      , a
          djnz     r6       , div_d2
          mov      a        , 18h
          mov      @r1      , a
          inc      r1
          
          ajmp     main
          
          mov      r0       , #50h
          mov      r6       , #8
continue3:nop
          acall    rd_data
          mov      a        , byte_2
          mov      @r0      , a
          inc      r0
          djnz     r6       , continue3
          nop
          mov      r0       , #50h
          mov      r6       , #8
          mov      18h      , #0
          mov      19h      , #0
     zzz3:mov      a        , @r0
          mov      r5       , a
          mov      a        , 18h
          add      a        , r5
          mov      18h      , a
          mov      a        , 19h
          addc     a        , #0
          mov      19h      , a
          inc      r0
          djnz     r6       , zzz3
          nop
          mov      r6       , #3
   div_d3:mov      a        , 19h
          rrc      a
          mov      19h      , a
          mov      a        , 18h
          rrc      a
          mov      18h      , a
          djnz     r6       , div_d3
          mov      a        , 18h
          mov      @r1      , a
          inc      r1
          mov      r0       , #58h
          mov      r6       , #8
continue4:nop
          acall    rd_data
          mov      a        , byte_2
          mov      @r0      , a
          inc      r0
          djnz     r6       , continue4
          nop
          mov      r0       , #58h
          mov      r6       , #8
          mov      18h      , #0
          mov      19h      , #0
     zzz4:mov      a        , @r0
          mov      r5       , a
          mov      a        , 18h
          add      a        , r5
          mov      18h      , a
          mov      a        , 19h
          addc     a        , #0
          mov      19h      , a
          inc      r0
          djnz     r6       , zzz4
          nop
          mov      r6       , #3
   div_d4:mov      a        , 19h
          rrc      a
          mov      19h      , a
          mov      a        , 18h
          rrc      a
          mov      18h      , a
          djnz     r6       , div_d4
          mov      a        , 18h
          mov      @r1      , a
          inc      r1
          nop                                      
          ajmp     continue
;----------------------------------------------------------------
; 中断方式下设置
;----------------------------------------------------------------

⌨️ 快捷键说明

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