📄 ad7705a.asm
字号:
;/* 这是被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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -