当前位置: 首页 > 技术资料 > 单片机多路数据采集源程序

单片机多路数据采集源程序

QooIC.com 新闻出处:电子市场 | 发布时间:2011/3/28 14:32:18

  源程序:

  单路采集程序:

  MOV DPTR,#0F8FFH

  MOV R0,#00H ;将存储器的首地址存在R0,R1两个寄存器中

  MOV R1,#00H

  MOV R2,#200D ;设置循环

  MOV R3,#4

  MOV R4,#8D

  MAIN:

  CLR P1.1 ;选中ADC0809

  PUSH DPL ;DPTR入栈

  PUSH DPH

  MOVX @DPTR,A ;启动AD转换

  ACALL DELAY ;延时5ms 保证采集数据频率为200HZ

  MOVX A,@DPTR ;读数据

  SETB P1.1 ;选中存储器

  MOV DPL,R0 ;将存储器的地址给DPTR

  MOV DPH,R1

  MOVX @DPTR,A ;存数据

  INC DPTR ;指向下一存储单元

  MOV R0,DPL ;将该单元地址重新存入寄存器中

  MOV R1,DPH

  POP DPH ;DPTR出栈

  POP DPL

  DJNZ R2,MAIN

  DJNZ R3,MAIN

  DJNZ R4,MAIN

  SJMP $

  DELAY:  ;延时程序 延时5ms

  MOV R5,#100D

  MOV R6,#24D

  LA:DJNZ R5,$

  DJNZ R6,LA

  RET

  END

  循环采集程序:

  MOV 30H,#00H ;将八块存储器的首地址分别存在30-3F共16个内部存储单元

  MOV 31H,#00H

  MOV 32H,#00H

  MOV 33H,#20H

  MOV 30H,#00H ;将八块存储器的首地址分别存在30-3F共16个内部存储单元

  MOV 31H,#00H

  MOV 32H,#00H

  MOV 33H,#20H

  MOV 34H,#00H

  MOV 35H,#40H

  MOV 36H,#00H

  MOV 37H,#60H

  MOV 38H,#00H

  MOV 39H,#80H

  MOV 3AH,#00H

  MOV 3BH,#0A0H

  MOV 3CH,#00H

  MOV 3DH,#0C0H

  MOV 3EH,#00H

  MOV 3FH,#0E0H

  MOV R2,#200D ;设置外循环200*40共8000次

  MOV R3,#40D

  MAIN: MOV DPTR,#0F8FFH ;0通道的地址

  MOV R0,#30H ;R0,R1作为存储器地址的中间变量

  MOV R1,#31H

  MOV R4,#8 ;设置内循环

  LOOP: CLR P1.1 ;选中ADC0809

  PUSH DPL ;DPTR入栈

  PUSH DPH

  MOVX @DPTR,A ;输入一个数启动AD转换

  ACALL DELAY  ;等待延时以达到每秒采集200个数据

  MOVX A,@DPTR  ;读数据

  SETB P1.1 ;选中存储器

  MOV DPL,@R0 ;将存储器的地址给DPTR

  MOV DPH,@R1

  MOVX @DPTR,A ;存数据

  INC DPTR ;指向下一存储单元

  MOV @R0,DPL ;将该单元地址重新存入内部数据存储单元

  MOV @R1,DPH

  INC R0 ;指向下一块存储器的地址

  INC R0

  INC R1

  INC R1

  POP DPH ;DPTR出栈

  POP DPL

  INC DPH ;指向下一通道地址

  DJNZ R4,LOOP ;内循环

  DJNZ R2,MAIN ;外循环

  DJNZ R3,MAIN

  SJMP $

  DELAY:  ;延时程序 延时600us

  MOV R5,#100

  MOV R6,#3

  LA:DJNZ R5,$

  DJNZ R6,LA

  RET

  END