cpubbs 发表于 2004-11-6 03:54:10

asm写的cs5460程序

CLK   equ      P1.6;   --
DAT   equ      P1.7;   E2prom
dat7    equ      p0.3;   ---
clk7    equ      p0.2;   7289
cs7   equ      p0.1;
rset    equ      p0.0;   ---
sdi   equ      p1.5;   cs5460
sdo   equ      p1.4
sclk    equ      p1.3
csa   equ      p1.0
csb   equ      p1.1
csc   equ      p1.2;   ---
dog   equ      p3.5
;"""""""""""""""""""""""""""""""""""
REST:             ;5460复位
MOV   R6,#06H
MOV   R0,#0FFH
USA:
NOP
NOP
cpl   dog
ACALL   COMM
DJNZ    R6,USA    ;串行口初始化
MOV   R0,#0FEH
NOP
NOP
ACALL   COMM
MOV   10H,#00H
MOV   11H,#00H
MOV   12H,#81H
MOV   R0,#40H   ;CS5460复位
MOV   R1,#10H
NOP
NOP
ACALL   WWW
NOP
NOP
ACALL   T9
MOV      10H,#80H
MOV      11H,#00H
MOV      12H,#20H
MOV   R0,#74H
MOV   R1,#10H
NOP
NOP                  ;写中断寄存器
ACALL   WWW
NOP
NOP
ACALL   T9
MOV   10H,#00H
MOV   11H,#00H
MOV   12H,#71H
MOV   R0,#40H   ;写入5460配置寄存器
MOV   R1,#10H
NOP
NOP
ACALL   WWW
NOP
NOP
ACALL   T9
MOV   R0,#0D0H
NOP
NOP
LCALL   COMM      ;电压校准
ddd1:
MOV   R0,#1EH
MOV   R1,#10H
NOP
NOP
ACALL   READ
MOV   A,10H      ;等待校准完毕
JNB   ACC.7,ddd1
MOV   10H,#0FFH
MOV   11H,#0FFH
MOV   12H,#0FEH
MOV   R0,#5EH
MOV   R1,#10H
NOP
NOP
LCALL   WWW      ;清DRDY,WDT位
MOV   R0,#0C8H
NOP
NOP
LCALL   COMM         ;电流校准
Ddd2:
MOV   R0,#1EH
MOV   R1,#10H
NOP
nOP
ACALL   READ
MOV   A,10H         ;等待校准完毕
JNB   ACC.7,ddd2
MOV   10H,#0FFH
MOV   11H,#0FFH
MOV   12H,#0FEH
MOV   R0,#5EH
MOV   R1,#10H
NOP
NOP
LCALL   WWW      ;清DRDY,WDT位
NOP
NOP
LCALL    WUIROM   ;将校准值写入5460
NOP
NOP
ACALL    T9
;MOV   R0,#0C0H
;NOP
;NOP
;ACALL   COMM      ;禁止校准
MOV   10H,#0FFH
MOV   11H,#0FFH
MOV   12H,#0FEH
MOV   R0,#5EH
MOV   R1,#10H
NOP
NOP
LCALL   WWW      ;清DRDY,WDT位
NOP
NOP
ACALL    T9
MOV   R0,#0E8H
NOP
NOP
ACALL   COMM    ;进行连续计算
NOP
NOP
RET
T9:
MOV   R7,#0FFH
T2:
NOP
NOP
DJNZ    R7,T2
NOP
NOP
RET
COMM:   ;对芯片进行控制,命令字在R0
      clr   sdo
      MOV   A,R0
      MOV   R4,#08H
M1:   MOV   C,ACC.7
      MOV   sdi,C
      NOP
      NOP
      NOP
      NOP
      SETB   sclk
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      CLR   sclk
      NOP
      NOP
      NOP
      RL      A
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      DJNZ    R4,M1
      NOP
      NOP
      NOP
      RET
;|||||||||||||||||||||||||||||||||||||
WWW:   ;命令字在R0,数据指针在R1,
      NOP
      NOP
      ACALL   COMM
      MOV   R6,#03H
W1:   MOV   A,@R1
      MOV   R0,A
      NOP
      NOP
      ACALL   COMM
      INC   R1
      DJNZ    R6,W1
      NOP
      NOP
      RET
;*******************
READ:   ;命令字在R0,数据指针在R1
      NOP
      NOP
      ACALL   COMM
      setb    sdi
      SETB    sdo
      MOV   R3,#08H
      MOV   R2,#03H
      NOP
      NOP
      NOP
      NOP
RR2:   CLR    sclk
      CLR   C
      CLR   A
RR1:   NOP
      NOP
      NOP
      NOP
      SETB    sclk
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      MOV   C,sdo
      MOV   ACC.7,C
      RL      A
      NOP
      CLR   sclk
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
      NOP
   ;读数时最后一个脉冲,Sdi为低电平
      cjne   r2,#01h,readjie
      cjne   r3,#02h,readjie
      clr    sdi
readjie:DJNZ   R3,RR1
      MOV    R3,#08H
      MOV    @R1,A
      INC    R1
      DJNZ   R2,RR2
      clr    sdi
      NOP
      NOP
      NOP
      RET
页: [1]
查看完整版本: asm写的cs5460程序