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

📄 m.c

📁 有关AD芯片AD7730的应用程序
💻 C
字号:
//#include <stdio.h>
//#include <string.h>
#include "Board.h"
#include "Comm.h"
#include "AD7730.h" 
#include "LCD.h" 
//======================================================
extern EPPFLAGS bEPPflags;
extern WEIGHT_TEMP bWEIGHT_TEMP;

extern unsigned char idata CommBuf[8];
extern unsigned char idata DisplayBuffer[16];
extern code unsigned char ManLog[16];
//======================================================
code void (*CommandRequest[])(void) =
{
	Read_Data,
	Write_Data,
	Get_Status,
	Set_Status,
	reserved,
};

void Delay(unsigned int iTime) 
{
	unsigned char u;

	while (iTime!=0){
		u=200;
		while (u!=0) {
			u--;
		}

		iTime--;
	}
	return;
}
//======================================================
void InitPort(void)
{
	KEYPORT=WAITBYTE;
	P1=0xff;
	P2=0xff;
	P3=0xff;

	MCU_STATLED=0;		//灭灯
	MCU_DLD=0;

	MCU_SCS=1;
	MCU_SCK=0;

	KEYPORT=0x0F;	//输出全部为低,输入全部为高
	
	return;
}

void InitComm(void)
{
	TR2=0;

	T2MOD=0x00;
	RCAP2L=0xff;
	RCAP2H=0xff;	//115200bps
	T2CON=0x3c;		//rclk=1,tclk=1,exen2=1,tr2=1

	TR2=1;
		
	SM2=1;			//使能多机通讯功能
	REN=1;			//使能接收

	MCU_DE=0;		//使485接收器位于接收

	return;
}

void InitInterupts()
{
	DISABLE_INTERRUPT;

	ES=1;
	EX0=1;
	EX1=1;
	IT0=0;
	IT1=0;

	
	ET0=0;
	ET1=0;
	ET2=0;

	return;
}

void InitTimer(void)
{

	TMOD=0x11;			//T0,T0均为16位定时器

	
	TCON=TCON &0x0F;

	return;
}

void reserved(void)
{

}

//获取设备状态
void Read_Data(void)
{
}

void Write_Data(void)
{

}

void Get_Status(void)
{

}

void Set_Status(void)
{

}

//======================================
void main(void)
{
	unsigned long idata lTmp;

	InitPort();

	WDTC = 0x06;		//禁止看门狗工作

	AD7730_Reset();

	MCU_BL	=0;					//打开背光

	LCD_DisplayString(ManLog);	//显示LOGO

	InitComm(); 
	InitTimer();
	InitInterupts();

	Delay(100);


//	AD_WriteFilterReg(0x80003F);

	AD_WriteOffsetReg(SystemZeroCalibration(10));

	AD_WriteOffsetReg(0x84009d);
	lTmp=AD_ReadGainReg();
	lTmp=AD_ReadOffsetReg();

	PutHexDisplayCode(1,lTmp);


	Delay(500);
	LCD_Clear();				//清屏


	AD_WriteModeReg(0x3080);	//连续转换模式,无符号,5V基准电压
	

	bEPPflags.value=0;			//清除所有标志

	bWEIGHT_TEMP.bTimes=0;
	bWEIGHT_TEMP.lTempWeight=0;
	bWEIGHT_TEMP.fNewWeight=0;

	bEPPflags.bits.DeviceStat = NoLogin_Mode;
	bEPPflags.bits.CommStat=Receiving_Handshake;

	ENABLE_INTERRUPT;

	do{
		

		DISABLE_INTERRUPT;

		if (bEPPflags.bits.CommStat!=Wait_Process) {


			PutStatusCode(0);

			if (bWEIGHT_TEMP.fNewWeight) {

				bWEIGHT_TEMP.fNewWeight=0;
				PutHexDisplayCode(2,bWEIGHT_TEMP.lNowWeight);	//刷新重量显示缓冲

			}

		}
		else {

			PutStatusCode(1);

			lTmp=CommBuf[1];
			lTmp=lTmp<<8;
			lTmp=lTmp+CommBuf[0];

			PutHexDisplayCode(1,lTmp);

/*			
			if (CommBuf[1]==0) {
			}
			bEPPflags.bits.CommStat=Transmiting_Handshake;
			SM2=0;
			EntryTx();
			(*CommandRequest[CommBuf[1]])();//调用函数
*/			
		}

		LCD_DisplayDirect();
/*
MCU_BL	=0;					//打开背光
while(1);
*/
		ENABLE_INTERRUPT;

	}while(1);

}


⌨️ 快捷键说明

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