⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8032模数转换.c

📁 基于C51的AD0832模数转换源程序 简单实用
💻 C
字号:
#include <reg51.h>
#include <intrins.h>
sbit Cs=P3^5;
sbit Clk=P3^4;
sbit D=P3^3;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
bit cond;
int A[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void Delay(unsigned int i)
{
 	for(;i>0;i--);
}


int AD()
{
	unsigned int dat=0x00,dat1=0x00;
	int i;
	Clk=0;
	Cs=0;
	Delay(100);
	//SetUp	开始第一个时钟 信号
	Clk=1;
	D=1;

	Delay(500);
	Clk=0;
	Delay(500);
//开始输入选择通道
	D=1;
	Clk=1;	
	Delay(500);
	Clk=0;
	Delay(500);
	
	D=0;
	Clk=1;	
	Delay(500);
	Clk=0;
	Delay(500);
	D=1;
//已有3个时钟脉冲个时钟脉冲	
//结束选择通道,选择对通道0进行转换,
	for(i=7;i>=0;i--)
	{
		Clk=1;
		_nop_();
		Clk=0;//第四个脉冲下降沿到来  
		//到第11个下降沿均读取数据		
 		
		if( D==1)
		{
			dat=dat|A[i];
			dat1=dat1|A[i];//接收8位数据
		}
		_nop_();							
	}
	dat1=dat1&0x01;//校检数据保存第0位
	for(i=1;i<8;i++)
	{//接收后1~7位校检码
		Clk=1;
		_nop_();
		Clk=0;
		if( D==1)
			dat1=dat1|A[i];
		_nop_();
	}
//	if( dat&~dat1!=0)
//		cond=0;
//校检不成功
	Clk=1;
	_nop_();
	Clk=0;
	_nop_();
	Clk=1;
	_nop_();
	Clk=0;
	_nop_();	

	Cs=1;
	return dat;	  
}

void main(void)
{
	unsigned int x=0;//,x1;
	Cs=1;
	SCON=0x50;
	TCON=0x40;
	TMOD=0x21;
	TH1=0xfd;TL1=0xfd;
	TI=1;
	while(1)
	{
	 	cond=1;
		x=0;
		x=AD();
/*		if(cond==0)
		{
			x=x1;
		}
		else
			x1=x;	*/
	if(TF1)
	{
		
		SBUF=0x00+x;
		TI=0;
		while(!TI);
	}
				
		 	
	}

		
}



	   








⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -