06AD和DA转换器的接口[第6章].pptVIP

  • 2
  • 0
  • 约 35页
  • 2017-02-12 发布于重庆
  • 举报
06AD和DA转换器的接口[第6章]

ORG 0000H ADC: MOV DPTR,#6000H ; IN0通道地址;低3位为A2A1A0,选择输入端 MOV R0,#20H ; A/D转换结果对应ram存储区的首地址 MOV R7,#08H LOOP: MOVX @DPTR,A ; 启动A/D转换;WR端使能 MOV R2,#05 H ; 延时10us再检测EOC DL: DJNZ R2,DL WAIT: JB P3.3,WAIT ; 若A/D转换正在进行则在WAIT等待 MOVX A,@DPTR ; 读取A/D转换结果 MOV @R0,A ; 存入A/D转换结果存储区 INC R0 INC DPTR ;低3位为A2A1A0,选择输入端 DJNZ R7,LOOP ; 判断8个通道是否转换完毕 SJMP ADC ; 8个通道全转换完,循环 END 高3位 低3位 (2)中断方式应用 ORG 0000H AJMP MAIN ORG 0013H ; 外部中断1入口地址 AJMP ADINT1 MAIN: MOV R0,#20H ; A/D转换结果对应ram存储区的首地址 MOV R7,#08H MOV DPTR,#6000H ; IN0通道地址;低3位为A2A1A0,选择输入端 SETB EA ; 允许总中断 SETB EX1 ; 允许外部中断1 SETB IT1 ; 外部中断1为负跳变触发方式 MOVX @DPTR,A ;WR端使能; 启动A/D转换 SJMP $ ADINT1: MOVX A,@DPTR ; 读取A/D转换结果 MOV @R0,A ; 将A/D转换结果存入存储区 INC R0 INC DPTR ;低3位为A2A1A0,选择输入端 DJNZ R7,NEXT ; 若8个通道没转换完一遍,则转到NEXT处执行 MOV R0,#20H ; 若8个通道全部进行了一遍转换 MOV DPTR,#6000H ; 再从IN0开始新一轮转换 NEXT: MOVX @DPTR,A ; WR端使能;再次启动A/D转换 RETI ; 中断返回 END 高3位 低3位 假设ADC0809的IN0通道输入了0~5V的模拟电压信号,要求每隔20ms进行一次A/D转换,并将转换结果存入内部RAM区50H单元。 20ms的时间间隔可以采用定时器提供,在定时器溢出中断服务子程序中进行A/D转换的相关处理 定时器/计数器工作在工作方式1 X=216-t*fosc/12 X=216-20*10-3*106=65536-20000=B1E0H 系统时钟频率12MHz (3)定时数据采集 ORG 0000H AJMP MAIN ORG 000BH ; 定时器T0中断入口地址 AJMP T0INT MAIN: MOV TMOD,#01H ; T0设为16位定时器方式,TR0置位即启动 MOV TH0,#0B1H ; 定时20ms的计数初值 MOV TL0,#0E0H MOV DPTR,#6000H ; 主程序中启动第一次A/D转换 MOVX @DPTR,A ;WR端使能; 启动A/D转换 MOV R0,#50H SETB ET0 ; 允许定时器T0溢出中断 SETB EA ; 允许总中断 SETB TR0 ; 启动T0 SJMP $ T0INT: MOVX A ,@DPTR ; 读取A/D转换结果;RD使能 MOV @R0,A ; 将A/D转换结果存入存储单元 MOVX @DPTR,A ; 再次启动A/D转换 MOV TH0,#0B1H ; 重装定时常数 MOV TL0,#0E0H RETI ; 中断返回 END 选通控制 TMOD 外部中断 控制/映射 TCON 本章结束 6.1 D/A转换器 page 209 6.2 A/D转换器 page 217 第6章 A/D和D/A转换器的接口 6.

文档评论(0)

1亿VIP精品文档

相关文档