max186.c

来自「PRJPCBStructure设计」· C语言 代码 · 共 76 行

C
76
字号
#include<reg52.h>
#include"top.h"
sbit CS=P1^1;		/*p1.1为片选信号*/
sbit SCLK=P1^0;		/*p1.0为串行时钟信号*/
sbit DIN=P1^2;		/*p1.2为数据输入*/
sbit DOUT=P1^3;		/*p1.3为数据输出*/
void ad_186(UWORD*addata)
{
	UBYTE i,j,m,s,z=0;
	UWORD out[8][10];
	UWORD outdata=0;
/*---------数据暂存单元清零程序----------------*/
	for(i=0;i<8;i++)
		{
			for(j=0;j<10;j++)
				{
					out[i][j]=0;
				}
		}
/*-----------A/D转换数据采集程序--------------*/
	CS=1;
	SCLK=0;
	for(j=0;j<10;j++)
		{
			s=0x8f;
			z=0;
			do
				{
					CS=0;
					SCLK=0;
					for(i=0;i<8;i++)
						{
							UBYTE indata;
							indata=s;
							indata=((indata<<i)&0x80);
							DIN=indata;
							SCLK=1;
							for(m=0;m<5;m++);
							SCLK=0;
						}
					CS=1;
					for(i=0;i<10;i++);
					CS=0;
					SCLK=1;
					for(i=0;i<12;i++)
						{
							SCLK=1;
							SCLK=0;
							outdata=outdata<<1;
							if(DOUT)
							outdata+=1;
						}
					out[z][j]=outdata;
					z++;
					for(i=0;i<4;i++)
						{
							SCLK=1;
							SCLK=0;
						}
					CS=1;
					outdata=0;
					s=s+0x10;
				}while(s<0xff);
			}
/*---------------中值滤波程序--------------------*/
				for(z=0;z<8;z++)
					{
						UWORD a=0;
						for(j=0;j<10;j++)
							{
								a=a+out[z][j];
							}
			     addata[z]=a/10;
		         	}
	}

⌨️ 快捷键说明

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