SUB AL,10H
OUT 81H,AL
LOP: IN AL,82H ; 检查EOC
TEST AL,80H
JZ LOP ; EOC=0,继续查询
IN AL,84H ; EOC=1,读入数据
MOV [SI],AL ; 存入内存
INC SI ; 修改指针
INC AH ; 修改开关编码
LOOP AGA ;
5.1 程序设计
5.1.1.程序功能
该程序的功能是查询当前的A/D转换是否完成,并且完成对A/D转换后的数据的读取。
5.1.2.主要器件和变量的说明
程序中的变量及功能如表1-2所示。
表1-2 变量及功能
变量 说明
P1.0 模拟量输入
P1.1 DA输入比较基准电压
P36 比较器内部判断脚
adcdata ad转换变量
Delay() 延时程序
adcread(void) adc转换程序
5.1.3.程序代码
由于没有片外的器件,在程序编制时,也较为简单。在主程序中定义函数和变摹,并通过延时程序完成对外部信号A/D采样的时间控制。单片机进行A/D转换的源程序流程图如图1-4所示,代码如下。
图1-4 单片机A/D转换程序流程图
#include<reg52.h>
#include<absacc.h>
#include<stdio.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit P36 = P3^6; //比较器内部判断角
// 内部标志位定义
bit less; //大小比较,1。代表小于,0。代表大于
// 全局变量定义
uchar timer1; &nb