上周自己写的单片机八位 A/D 转换汇编源码 欢迎大家参考!
一、 实验目的
1 .掌握 ADC0809 与 与 89C51 的接口方法。
2 .采用定时与查询方法读取 A/D 转换结果,并将转换数据存于片内RAM 中。
3. 通过实验了解单片机如何进行数据采集。
4. 掌握如何用 8255 的 的 PA 口输出转换好的数字量到发光二极管显示。- 1 .定时方式采集 0 通道
- ORG 0000H
- AJMP MAIN
- MAIN: MOV DPTR,#9003H ;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 输出,PB 输入
- MOVX @DPTR, A
- MOV DPTR, #8000H
- MOV A, #00H
- MOVX @DPTR, A ;动 启动 A/D
- MOV R2, #40H ; 延时
- DLYY: DJNZ R2, DLYY ;等待转换结果
- MOVX A, @DPTR ;
- MOV R6,A ; 转换结果至 R6 中 中
- MOV R1, #100 ; 二极管显示转换的结果
- DLY:
- MOV DPTR,#9000H ;Port A 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延时
- AJMP MAIN
- END
- 2 .查询方式采集 0 通道 时 (此时 EOC 引脚和 P1.0
- ORG 0000H
- AJMP MAIN
- MAIN:
- MOV DPTR,#9003H;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 输出,PB 输入
- MOVX @DPTR, A
- MOV DPTR,#8000H
- MOV A,#00H
- MOVX @DPTR, A ; 启动 A/D
- LOOP1:
- MOV P1,#0FFH
- MOVA,P1
- ANLA,#01H; 查询 EOC 状态,高电平转换结束
- JNZ DIS
- AJMP LOOP1
- DIS: MOVX A,@DPTR
- MOV R6,A; 转换结果至 R6 中 中
- MOV R1, #100 ; 二极管显示转换的结果
- DLY:
- MOV DPTR,#9000H ;PortA 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延时
- AJMP MAIN
- END
- 3. 中断方式采集 0 通道
- ORG 0000H
- AJMP MA
- ORG 0003H
- AJMP RAI
- ORG 0100H
- MA:SETB IT0
- SETB EA
- SETB EX0
- MOV DPTR,#9003H;8255 控制字地址
- MOV A,#82H ; 方式 0 ,PA ,PC 输出,PB 输入
- MOVX @DPTR, A
- QD:MOV DPTR, #8000H ;0809
- MOV A, #00H
- MOVX @DPTR, A ;动 启动 A/D
- SJMP $
- ORG 013FH
- RAI:MOV DPTR, #8000H
- MOVX A, @DPTR ; 读入结果
- MOV R6,A ; 转换结果至 R6 中 中
- MOV R1, #100 ; 二极管显示转换的结果
- DLY:
- MOV DPTR,#9000H ;PortA 地址
- MOVX @DPTR,A
- DJNZ R1, DLY ; 延时
- MOV DPTR, #8000H ; 启动 A/D
- MOV A, #00H
- MOVX @DPTR, A
- RETI
- END
复制代码
|