📄 ad74162.asm
字号:
;****************************************************************
;/* 这是AD7416的汇编程序, 文件名AD74162.ASM */
;/* 功能:本程序主要是读出温度传感器AD7416芯片的温度值,并把它 */
;/* 放在变量ADCH,ADCL中,ADCH中放高8位。注意,这两个8 位共 */
;/* 16位中,只有高1O位有效。测温范围是-55℃~125℃。 */
;/* 本程序适合AD7416 和51系列单片机的连接,晶振为12MHZ左右。 */
;******************************************************************
ADCH EQU 32H ;采样值高字节
ADCL EQU 31H ;采样值低字节
ADCNUM EQU 30H ;采样次数
DATA1 EQU 33H ;中间变量
ADSCL BIT P1.1 ;AD7416时钟
ADSDA BIT P1.0 ;AD7416数据I/O
ORG 0000H
MAIN: LCALL SAMPLE74
SJMP $
SAMPLE74:MOV ADCNUM, #8 ;连续采样8次
SE074: MOV R6, #90H; ;片选AD7416的地址写操作
MOV R5, #1 ;选中配置寄存器
MOV R4, #18H ;给配置寄存器赋值
LCALL WRCOM ;三字节的写操作
MOV R6,#90H ;#10011110B
MOV R5,#3 ;选中温度上限寄存器
MOV R4,#40H ;上限温度=64
LCALL WRCOM
MOV R6,#90H ;#10010000B
MOV R5,#2 ;选中温度下限寄存器
MOV R4,#20H ;上限温度=32
LCALL WRCOM
MOV R6,#90H ;#10011110B
MOV R5,#0 ;选中温度寄存器
LCALL WREXE ;两字节的写操作
MOV DATA1,#91H;#10010001B ,片选AD7416,读操作
LCALL RDCOM
DJNZ ADCNUM,SE074 ;采样未完,返回
RET
WRCOM: LCALL BEGIN ;三字节的写操作
MOV DATA1,R6
LCALL OUTBYTE ;输出字节
MOV DATA1,R5
LCALL OUTBYTE
MOV DATA1,R4
LCALL OUTBYTE
LCALL STOP
RET
WREXE: LCALL BEGIN ;两字节的写操作
MOV DATA1,R6
LCALL OUTBYTE
MOV DATA1,R5
LCALL OUTBYTE
LCALL STOP
RET
RDCOM: LCALL BEGIN ;读操作
LCALL OUTBYTE
LCALL INBYTE ;输入字节
MOV ADCH,DATA1
LCALL NACK ;MCU使ADSDA数据线变为低电平
LCALL INBYTE
MOV ADCL,DATA1
LCALL ACK ;MCU使ADSDA数据线变为高电平
LCALL STOP
RET
OUTBYTE: MOV R7,#8 ;输出字节
OE1: MOV A,DATA1
RLC A
MOV ADSDA,C
MOV DATA1,A
LCALL CLOCK
DJNZ R7,OE1
LCALL ACK ;AD7416产生应答
RET
INBYTE: SETB ADSDA ;输入字节
MOV R7,#8
INE1: LCALL CLOCK
MOV A,DATA1
RLC A
MOV DATA1,A
DJNZ R7,INE1
RET
NACK: CLR ADSDA ;AD7416无应答
LCALL CLOCK ;ADSDA数据线为0,一个时钟脉冲之后,ADSDA为1
RET
ACK: SETB ADSDA ;AD7416有应答
LCALL CLOCK ;ADSDA为1,一个时钟脉冲之后,ADSDA为0
RET
STOP: CLR ADSDA ;产生停止信号
SETB ADSCL
NOP
NOP
NOP
NOP
SETB ADSDA
RET
BEGIN: SETB ADSDA ;产生开始信号
SETB ADSCL
NOP
NOP
NOP
NOP
NOP
CLR ADSDA
NOP
NOP
NOP
NOP
CLR ADSCL
RET
CLOCK: NOP ;产生时钟脉冲
SETB ADSCL
NOP
NOP
NOP
NOP
MOV C,ADSDA
CLR ADSCL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -