ad7705a.asm

来自「单片机C语言教程」· 汇编 代码 · 共 87 行

ASM
87
字号
;/* 这是被CALL7705.C调用的AD7705汇编程序,文件名为AD7705A.ASM      */
;/* 功能:本程序主要是读出AD7705芯片输入通道CH0(或CH1)的模数转换   */
;/*    值,转换值放在寄存器R6,R7中,R6放高位。AD7705芯片的2个通道    */
;/*    可编程为单极性/双极性和差动/单端工作, 这里采用单端\单极性   */
;/*    输入。本例中AD7705连接的晶振为4MHZ,参考电压为5V,选择通道   */
;/*    增益为1,采用自校准方式 。                                  */

   NAME AD7705A
   ?PR?_a_func?AD7705A     SEGMENT CODE
   ?DT?_a_func?AD7705A     SEGMENT DATA OVERLAYABLE
   ?DT?AD7705A             SEGMENT DATA

   PUBLIC   chai
   PUBLIC   ?_a_func?BYTE
   PUBLIC    _a_func
   RSEG  ?DT?_a_func?AD7705A
	 ?_a_func?BYTE:
	 data_addr:DS 2
   RSEG  ?DT?AD7705A
	 chai:     DS 2
   RSEG  ?PR?_a_func?AD7705A
	 _a_func:
DRDY             BIT  P1.3
CS               BIT  P1.4
SO               BIT  P1.5
SCK              BIT  P1.6
SI               BIT  P1.7

     MOV data_addr,R7   ;R6和R7中放传递进来的整型参数
     MOV data_addr+1,R6

     MOV A,data_addr+1 ;AD7705初始化
    ; MOV A,#20H;
     LCALL WRADC
     MOV A,#04H;
     LCALL WRADC
     MOV A,data_addr
    ; MOV A,#10H;
     LCALL WRADC
     MOV A,#44H;#4CH,#54H
     LCALL WRADC
     JB DRDY,$      ;等待DRDY变低
     MOV A,#38H
     LCALL WRADC
     LCALL RDADC
     MOV R7,A       ;R7中放返回转换值低8位
     MOV A,B
     MOV R6,A       ;R6中放返回转换值高8位。
     RET

WRADC:             ;写一个字节子程序
     NOP
     SETB SCK
     CLR CS
     MOV R0,#08H
WRADC1:
     CLR SCK
     RLC A
     MOV SI,C
     SETB SCK
     DJNZ R0,WRADC1
     CLR SI
     SETB CS
     RET
RDADC:            ;读转换数据子程序
     NOP
     JB DRDY,$    ;等待DRDY变低
     CLR CS
     MOV R0,#08H
RDADC1:
     SETB SCK
     CLR SCK
     MOV C,SO
     RLC A
     DJNZ R0,RDADC1
     MOV B,A     ;高字节在寄存器B中
     MOV R0,#08H
RDADC2:
     SETB SCK
     CLR SCK
     MOV C,SO
     RLC A       ;低字节在寄存器A中
     DJNZ R0,RDADC2
     SETB CS
     RET
     END

⌨️ 快捷键说明

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