在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
123
返回列表 发新帖
楼主: lxg0713

A\D子程序

[复制链接]
发表于 2005-4-17 21:56:52 | 显示全部楼层

A\D子程序

次程序已经应用中!!!
CPU是LPC932,51兼容的
;*******************************
;;;AD7714模数转换子程序
;;;转换结果存入40H:低字节;41H:中字节;42H:高字节
;*******************************
     DRDY BIT   P0.2
     DOUT BIT   P0.3
     DIN  BIT   P0.4
     SCLK BIT   P0.5
     ORG  0000H
     AJMP ADZH
     ORG  0080H
ADZH:
     MOV  P0M1,#00H
     MOV  P0M2,#00H
     MOV  R7,#08H  ;32个复位序列复位接口
RESET:
     CLR  SCLK
     NOP
     SETB DIN
     NOP
     SETB SCLK
     DJNZ R7,RESET
     MOV  A,#00100101B   ;写通信寄存器,并选择通道:101,全差分模式
     LCALL WRITE8        ;将下一操作设为写滤波器高寄存器
     MOV  A,#11100001B   ;设置滤波器高寄存器:24位数据、单极性
     LCALL WRITE8
     MOV  A,#00110101B   ;写通信寄存器,并选择通道:101,全差分模式
     LCALL WRITE8        ;将下一操作设为写滤波器低寄存器
     MOV  A,#10000000B   ;设置滤波器低寄存器:第一个凹口频率为50HZ,增益8
     LCALL WRITE8
     MOV  A,#00010101B   ;写通信寄存器,并选择通道:101,全差分模式
     LCALL WRITE8        ;将下一操作设为写模式寄存器
     MOV  A,#00100000B   ;模式寄存器自校准,增益8,禁止滤波器同步
     LCALL WRITE8        ;清除滤波器同步;启动对101通道的自校准
     JB   DRDY,$         ;等待自校准
     MOV  A,#01011101B   ;写通信寄存器,设置下一次操作为读数据寄存器,并选择通道:101
     LCALL WRITE8
     JB   DRDY,$         ;等待数据转换结束
     LCALL READ24        ;此时读24位数据存入40H:高字节;41H;42H:低字节
     MOV  53H,#00H       ;读10次A/D转换结果累加取平均
     MOV  52H,#00H
     MOV  51H,#00H
     MOV  50H,#00H
     mov  54h,#0AH
     MOV  55H,#0AH
AADD:
     JB   DRDY,$
     MOV  A,#01011101B   ;写通信寄存器,下一次操作为读数据寄存器
     LCALL WRITE8
     LCALL READ24        ;读24位数据存入40H:最高字节,41H,42H:最低字节
     MOV  A,50H          ;
     ADD  A,42H
     MOV  50H,A          ;最低字节累加暂存50H
     MOV  A,51H
     ADDC A,41H
     MOV  51H,A
     MOV  A,52H
     ADDC A,40H
     MOV  52H,A          ;最高字节累加暂存52H
     MOV  A,53H          ;累加进位暂存53H
     ADDC A,#00H
     MOV  53H,A
     DJNZ 55H,AADD
     MOV  R0,50H          ;R0:被除数最低字节
     MOV  R1,51H          ;R1:被除数低字节
     MOV  R2,52H          ;R2:被除数高字节
     MOV  R3,53H
     MOV  R4,54H          ;R4:54H用于除数存放
     MOV 20H, #00H
     MOV 21H, #00H
     MOV 22H, #00H
     MOV R7, #18H
     ACALL CHU6
     MOV  40H,20H      ;转换数据低字节
     MOV  41H,21H      ;
     MOV  42H,22H      ;转换数据高字节
     SJMP $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;; 写AD7714 一字节子程序;;;;;;;;;;;;;;;;;;;
;;;;;; 入口A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRITE8:
     MOV  R7,#08H
XHH:
     RLC  A
     CLR  SCLK
     NOP
     MOV  DIN,C
     NOP
     SETB SCLK
     DJNZ R7,XHH
     RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;读24位AD7714转换数据存入40H,41H,42H中子程序
;;;;;;出口:40H:高字节,41H:中字节,42H:低字节
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ24:
     MOV  R7,#08H
YH:
     CLR  SCLK
     NOP
     MOV  C,DOUT
     NOP
     SETB SCLK
     RLC  A
     DJNZ R7,YH
     MOV  40H,A
     MOV  R7,#08H
YHH:
     CLR  SCLK
     NOP
     MOV  C,DOUT
     NOP
     SETB SCLK
     RLC  A
     DJNZ R7,YHH
     MOV  41H,A
     MOV  R7,#08H
YHHH:
     CLR  SCLK
     NOP
     MOV  C,DOUT
     NOP
     SETB SCLK
     RLC  A
     DJNZ R7,YHHH
     MOV  42H,A
     RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Name: CHU6
;Func: 三字节除单字节商为三字节除法了程序
;Input: 被除数放在R0R1R2中, 除数放在R4中,R3存放被除数扩充位,也是余数存放数
;        R0:被除数最低位,R2是被除数最高位
;OutPut:商数放在内部RAM20H-22H单元中,其中20H单元放最低位
;Use:
;;;;;;三字节除单字节除法子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHU6:
   MOV A, R0
   ADD A, R0 ; 被除数左移,包括扩充位
   MOV R0, A
   MOV A, R1
   ADDC A, R1
   MOV R1, A
   MOV A, R2
   ADDC A, R2
   MOV R2, A
   MOV A, R3
   ADDC A, R3
   MOV R3, A
   MOV A, 20H; 商数左移
   RLC A
   MOV 20H, A
   MOV A, 21H
   RLC A
   MOV 21H, A
   MOV A, 22H
   RLC A
   MOV 22H, A
   MOV A, R3
   SUBB A, R4
   JC  LOOP
   MOV R3, A     ;建立余数
   INC 20H
LOOP:
   DJNZ R7, CHU6
   RET
   END
发表于 2005-4-22 13:35:29 | 显示全部楼层

A\D子程序

????
发表于 2005-4-22 23:49:35 | 显示全部楼层

A\D子程序

发表于 2005-6-8 22:37:49 | 显示全部楼层

A\D子程序

我想用AVR单片机ATmega128系列,用ADS1213做AD转换,你有办法吗?
发表于 2007-10-23 21:26:20 | 显示全部楼层
这些是我上学时作的一个东东里裁出来的,仅作参考。
一个是大学物理实验泫震动仪,里边用了led显示
一个是其他一个数采器里ad max187采样程序,用了混合编程可以用c来调用asm,看了就会调用
便宜没好货,好货不便宜,快来买阿!
发表于 2014-9-4 13:34:50 | 显示全部楼层
感谢...
发表于 2014-9-13 16:09:15 | 显示全部楼层
谢谢!支持下!
发表于 2015-5-19 15:55:01 | 显示全部楼层
谢谢 !!!!!
发表于 2015-11-21 17:54:38 | 显示全部楼层
A\D子程序 !!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 23:11 , Processed in 0.023923 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表