ad7705 的程序,谁能解释一下这两句什么意思:din =(bit) (x & 0x80);、if (dout==1) x |= 0x01;

ad7705 的程序,谁能解释一下这两句什么意思:din =(bit) (x & 0x80);、if (dout==1) x |= 0x01;,第1张

din =(bit) (x &0x80)是将x &0x80的值转换为bit类型后赋给变量din,

if (dout==1) x |= 0x01表示如何dout==1那么x的值为x和0x01的逻辑或

x在内存中以二进制存储,占1字节即为0b00000000,b后边数字不确定,但只能为0或1,0x80是16进制,在内存中以二进制存储为0b10000000,x和0x80相与,使x的后7位清0;

x |= 0x01:等价于x=x|0x01;使x最后一位置1;

呵呵 还是俺来为你解答吧:

参考程序:

AD7705转换器的编程方法

WT_ D EQUP1.0

DRDY EQUP1.1

RD_D EQUP1.2

SCLK EQUP1.3

⑴AD7705转换子程序

功能:对AD7705复位初始化,进行模数转换。

入口: (R4)(R5)= AD7705转换的16位数据。

KK0:MOVA, #0FFH 复位

LCALL OUTCOM

MOVA, #0FFH 复位

LCALL OUTCOM

MOVA, #0FFH 复位

LCALL OUTCOM

MOVA, #0FFH 复位

LCALL OUTCOM

MOVA, #20H 控制字 选通信寄存器 下次写时钟寄存器

LCALL OUTCOM

MOVA, #04H 写时钟寄存器

LCALL OUTCOM

MOVA, #10H 选通信寄存器 下次写设置寄存器

LCALL OUTCOM

MOVA, #44H 写设置寄存器

LCALL OUTCOM

SETBDRDY

KK1:JB DRDY,KK1 查询状态线

AD7705: NOP

MOVA ,#38H 选通信寄存器 下次读数据寄存器

LCALL OUTCOM

KK2: SETBDRDY

JB DRDY,KK2

LCALL INDATA

RET

呵呵 给加分吗? 有点少啊 给的话 还可以帮助你


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7699169.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存