/*------------------------------------------------------------------------------------------------
程序功能：
	用AD以1HZ的频率采集模拟信号，然后转换成数字量，再将其以1200bps发送到计算机，在计算机上显示。

实验：串口助手以16进制显示AD的值，当拧动RE2电位器时，输出值随着输入电压的变化而变化。
---------------------------------------------------------------------------------------------------*/

#include<reg52.h>
#include <intrins.h>
#define uint unsigned int    //宏定义
#define uchar unsigned char  //宏定义
sbit dula=P2^6;		//数码管段选
sbit wela=P2^7;		//数码管位选
sbit adwr=P3^6;		//定义AD的WR端口
sbit adrd=P3^7;		//定义AD的RD端口
uchar adout;

delay(uint x)  //延时函数
{
	uint a,b;
	for(a=x;a>0;a--)
		for(b=110;b>0;b--);
}

void main()
{
	wela=1;
	P0=0x7f;    //给AD片选CS一个位电平
	wela=0;     //关数码管
	TMOD=0X20;  //设为定时器1工作方式2
	TH1=0xe8;   //波特率设置为1200
	TL1=0xe8;
	TR1=1;      //启动定时器1
	SCON=0X50;  //设为串口工作方式1
	EA=1;       //开总中断
	ES=1;	    //开串口中断
	while(1)
	{
		adwr=1;
		adwr=0;			
		adwr=1;         //启动AD转换
		delay(500);    
		P1=0xff;        //读AD输出数据之前把P1口的值置1
		adrd=1;         	
		adrd=0;         //RD读使能
		adout=P1;		//把从P1口得到的AD输出数据，赋给adout
		delay(500);
		SBUF=adout;    //把adout赋给SBUF
		while(!TI);    //等待发送完成
		TI=0;         //发送完了，我们要把T1发送标记位清0	
	}
}