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

📄 adc.c

📁 一个基于C51开发的计价秤
💻 C
字号:
/*********************************************/
// File Name: adc.c
// Author: henny
// Date: 2006/3/1
/*********************************************/
#include <SST89x5xxRD2.h>
#include <intrins.h>
#include "Public.h"

#define	RDYB P1_6
#define	CS5532_CS P3_4

extern UNION_LONG temp_LONG;

VOID SPI_Init()
{
	P1=0xf0;
	SPCR=0x50;
}

BYTE SPI_RW(BYTE Data)
{
	BYTE temp;
	SPDR=Data;
	do
	{
		temp=SPSR&0x80;
	}while(temp!=0x80);
	SPSR&=0x7f;
	return SPDR;
}
/*
VOID Read_Register(BYTE command)
{
	BYTE data j;
	CS5532_CS=0;
	_nop_();
 	_nop_();
	SPI_RW(command);
	for(j=0;j<4;j++)
		RxdByte[j]=SPI_RW(0xfe);
	_nop_();
 	_nop_();
	CS5532_CS=1;
	_nop_();
 	_nop_();		
}
*/
VOID Write_Register(BYTE command,BYTE top,BYTE high,BYTE mid,BYTE low)
{
	CS5532_CS=0;
 	_nop_();
 	_nop_();
	SPI_RW(command);
	SPI_RW(top);
	SPI_RW(high);
	SPI_RW(mid);
	SPI_RW(low);
	_nop_();
 	_nop_();
	CS5532_CS=1;
	_nop_();
 	_nop_();
}

VOID Start_Continuous_Convert()
{
	CS5532_CS=0;
	_nop_();
 	_nop_();
	SPI_RW(0xc0);
}
/*
VOID Single_Convert()
{
	BYTE data j;
	CS5532_CS=0;		
	_nop_();
 	_nop_();
	SPI_RW(0x80);
	while(RDYB);
	SPI_RW(0x00);
	for(j=0;j<3;j++)
		RxdByte[j]=SPI_RW(0xfe);
	 SPI_RW(0xfe);
	_nop_();
 	_nop_();
	CS5532_CS=1;
	_nop_();
 	_nop_();	
}
*/
VOID CS5532_Init()
{
	SPI_Init();
 	Write_Register(0xff,0xff,0xff,0xff,0xff);
	Write_Register(0xff,0xff,0xff,0xff,0xff);
	Write_Register(0xff,0xff,0xff,0xff,0xff);
	Write_Register(0xff,0xff,0xff,0xff,0xfe);
	Write_Register(0x03,0x20,0x00,0x00,0x00);
	Write_Register(0x03,0x00,0x00,0x00,0x00);
	Write_Register(0x05,0x32,0x40,0x32,0x40);
	Write_Register(0x02,2,105,0,0);
	Start_Continuous_Convert();
}

DWORD Get_AD_Convert_Data()
{
	while(RDYB);
	SPI_RW(0x00);
	temp_LONG.B[0]=0x00;
	temp_LONG.B[1]=SPI_RW(0x00);
	temp_LONG.B[2]=SPI_RW(0x00);
	temp_LONG.B[3]=SPI_RW(0x00);
	SPI_RW(0x00);
	return(temp_LONG.L);		
}

⌨️ 快捷键说明

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