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

📄 ombrodb.c~

📁 使用avr--cc2420模块程序,需要原理图的联系 QQ:120304948
💻 C~
字号:
#include <mega128.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


#include "typedef.h"

#include "app.h"
#include "attention.h"
#include "Flash.h"
#include "g20modem.h"
#include "g20serialdrv.h"
#include "ombro.h"

#include "rtc.h"
#include "serialdrv.h"
#include "timer.h"
#include "UDP.h"
#include "protocol.h"

#include "key.h"
#include "lcdzk.h"
#include "print.h"
#include "ombrodb.h"

STORETYPE storage_array[1];
unsigned int storage_pointer = 0;
unsigned int storage_page_counter = 0;

//volatile unsigned char nnYear = 0;
//volatile unsigned char nnMonth = 0;
//volatile unsigned char nnDay= 0;
//volatile unsigned int nncomp = 0;

//volatile unsigned int ombrodb_min_value;
//volatile unsigned int ombrodb_min_time;
//volatile unsigned int ombrodb_hr_value;
//volatile unsigned int ombrodb_hr_time;
//volatile unsigned int ombrodb_day_value;

unsigned char temp_read[60];

void ombrodb_init()
{
	//nnYear = 5;
	//nnMonth = 10;
	//nnDay = 20;
	//nncomp = ombrodb_date_comp(nnYear, nnMonth, nnDay);

	//nnYear = 0;
	//nnMonth = 0;
	//nnDay = 0;

	//ombrodb_date_deco((unsigned char*)&nnYear, (unsigned char*)&nnMonth, (unsigned char*)&nnDay, nncomp);

	unsigned int nloop = 0;
	unsigned char nadd[3];

	for ( nloop = 0; nloop < 24; nloop ++)
	{
		ombro_hours_val[nloop] = nloop;
	}

	ombro_ten_min_max = 20;
	ombro_hour_max = 40;
	ombro_ten_min_max_hr = 13;
	ombro_ten_min_max_min = 23;

	ombro_hour_max_hr = 14;
	ombro_hour_max_min = 11;
	ombro_day = 50;
	ombro_continue = 60;

	ombrodb_save();

	nadd[0] = 0;
	nadd[1] = 0;
	nadd[2] = 0;

	ReadData(temp_read, (unsigned char*)nadd);
	
}

void ombrodb_write()
{

}

void ombrodb_search()
{
	
}

unsigned int ombrodb_date_comp(unsigned char nYear, unsigned char nMonth,
									unsigned char nDay)
{
	unsigned int nTemp = 0;
	nTemp |= nYear&0x7F;
	nTemp <<=4;
	nTemp |= nMonth&0x0F;
	nTemp <<= 5;
	nTemp |= nDay& 0x1F;
	return nTemp;
}

void ombrodb_date_deco(unsigned char *pYear, unsigned char *pMonth,
							   unsigned char *pDay, unsigned int nCom)
{
	*pDay = nCom & 0x001F;
	*pMonth = (nCom >> 5)&0x000F;
	*pYear = (nCom >> 4)&0x007F;
}

//void ombrodb_per_min_proc(unsigned char cy, unsigned char cmon, unsigned char cd,
//						  unsigned char ch, unsigned char cmin, unsigned char cs)
void ombrodb_per_min_proc(unsigned char ch, unsigned char cmin, unsigned char cs)
{


	if(cmin != CLK_MIN)
	{
	    ombro_min_event = TRUE;
		if(ombro_continue > 0)
		{
			ombro_save_temp_min();
			ombro_save_temp_hour(ch);
		}
		ombro_nlasting++;
		if(ombro_nlasting >=  1440)   //1440
		{
			//停止传送
//			ombro_reset();
    		ombro_ten = 0;
    		ombro_hour = 0;			
	        ombro_day = 0;
			ombro_continue = 0;
			ombro_sending = FALSE;
			ombro_nlasting = 0;
			day_reset = TRUE;
		}
	}
	
	if(ch == my_ombset.nBeginTime)
	{
		if((cmin == 0)&&(cs == 0))
		{
		    ombro_day = 0;
			//if(ombro_day > 0)
			//	ombrodb_save();
		}
	}
}

unsigned char ombrodb_read(unsigned int nYear,
				  unsigned int nMonth,
				  unsigned int nDay,
				  unsigned int *pTen,
				  unsigned char *pTenHr,
				  unsigned char *pTenMin,
				  unsigned int *pH,
				  unsigned char *pHHr,
				  unsigned char *pHMin,
				  unsigned int *pDay,
				  unsigned int *pCon)
				  //unsigned int *p[])
{
	unsigned char temread[60];
	unsigned int ntempdatetime = 0;
	unsigned int nLoop = 0;
	unsigned int nnloop = 0;
	unsigned char nadd[3];
	
	ntempdatetime =  ombrodb_date_comp(nYear, nMonth, nDay);

	for(nLoop = 0; nLoop < STORE_DAYS; nLoop ++)
	{
		if(storage_array[nLoop].offset == ntempdatetime)
		{
			nadd[0] = (unsigned char)(storage_array[nLoop].nAdd & 0xFF00>>8);
			nadd[1] = (unsigned char)(storage_array[nLoop].nAdd & 0x00FF);
			nadd[2] = 0;
			ReadData(temread, (unsigned char*)nadd);

			//if(p != NULL)
			if(NULL != NULL)
			{
				for(nnloop = 0; nnloop < 24; nnloop ++)
				{
					//*p[nnloop] = temread[nnloop*2 - 1] + temread[nnloop * 2] <<8;
				}
			}

//			*(pTen) = temread[48] + temread[49]<<8;
			*(pTen) = temread[48] + temread[49]*256;
			*(pTenHr) = temread[50];
			*(pTenMin) = temread[51];
			*(pH) = temread[52] + temread[53]*256;
//			*(pH) = temread[52] + temread[53] <<8;
			*(pHHr) = temread[54];
			*(pHMin) = temread[55];

//			*(pDay) = temread[56] + temread[57]<<8;
//			*(pCon) = temread[58] + temread[59]<<8;
			*(pDay) = temread[56] + temread[57]*256;
			*(pCon) = temread[58] + temread[59]*256;

			return TRUE;
		}
	}
	return FALSE;
}

void ombrodb_save()
{
	unsigned char ombrodb_sv[60];
	unsigned char chAdd[3];
	unsigned int nLoop = 0;
	unsigned int nCount  = 0;
	for(nLoop = 0; nLoop < 60; nLoop ++)
	{
		ombrodb_sv[nLoop] = 0;
	}

	for (nLoop = 0; nLoop < 24; nLoop ++)
	{
		ombrodb_sv[nCount++] = ombro_hours_val[nLoop] & 0x00FF;
		ombrodb_sv[nCount++] = (ombro_hours_val[nLoop]>>8)&0x00FF;
	}

	ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max & 0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)((ombro_ten_min_max >> 8)&0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max_hr);
	ombrodb_sv[nCount++] = (unsigned char)(ombro_ten_min_max_min);

	ombrodb_sv[nCount++] = (unsigned char)(ombro_hour_max & 0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)((ombro_hour_max>>8)&0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)ombro_hour_max_hr;
	ombrodb_sv[nCount++] = (unsigned char)ombro_hour_max_min;

	ombrodb_sv[nCount++] = (unsigned char)(ombro_day & 0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)(ombro_day >> 8)&0x00FF;
	ombrodb_sv[nCount++] = (unsigned char)(ombro_continue & 0x00FF);
	ombrodb_sv[nCount++] = (unsigned char)(ombro_continue >>8) & 0x00FF;

	storage_array[storage_pointer].offset = ombrodb_date_comp(CLK_YEAR, CLK_MONTH, CLK_DAY);
	storage_array[storage_pointer].nAdd = storage_page_counter;

	chAdd[0] = (unsigned char)((storage_page_counter>>8) &0x00FF);
	chAdd[1] = (unsigned char)(storage_page_counter & 0x00FF);
	chAdd[2] = (unsigned char)0x00;

	if(storage_page_counter % 0x7F == 0)
	{
		SectorErase((unsigned char*)chAdd);
	}

	WriteData((unsigned char*)ombrodb_sv, (unsigned char*)chAdd);
	
	storage_pointer++;
	storage_page_counter++;
	if(storage_pointer >= STORE_DAYS)
	{
		storage_pointer = 0;
	}

	if(storage_page_counter >= 512)
	{
		storage_page_counter = 0;
	}

	//flash save	
}

⌨️ 快捷键说明

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