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

📄 global.c

📁 本代码以低成本的瑞萨单片机为主控制器
💻 C
字号:
#include "global.h"
//#include <machine.h>
#include "serial.h"
#include "iic.h"
#include "sfr_r81b.h"

#define uchar unsigned char 
#define uint unsigned int
uchar time_test ;
uint time_counter ; 
//uchar ram_data_check[5]; 

uchar series_receive_sign ; // 
uchar series_receive_counter ;
uchar series_receive_long ; 
uchar series_receive_end ;  
uchar address_array[10] ; 


uchar series_send_sign ; 
uchar series_send_long ; 
uchar series_send_counter ;
uchar series_send_end ;  
uchar series_send_timer ; 
//IIC
uchar iic_read_sign ; 

uchar counter_check_sign ;
uchar counter_high ; 
uchar counter_data ; 
uchar counter_ok ; 
uint power_counter ; 
uint fu_power_counter ;

unsigned long power_save ;
uchar power_save_check ;
unsigned long fu_power_save ;
uchar fu_power_save_check ;

uchar irq0_interrupt_sign ;
uchar pwm_receive_long ;
uchar irq0_receive_sign ; 
uchar irq0_receive_counter ; 
uchar irq0_receive_end ; 
//lcd

uchar display_array[7] ;

uchar power_dowm ;
uchar test_sign ; 

uchar start_sign ; 
uchar time_long ; 
//jdq
uchar jdq_xian ;

uchar ram_check_sign[5]  ; 

uchar array_temp[10];
void change_ulong(uchar *p,unsigned long *change_data);
void reset_data_load(uint PB_EeprAddr,unsigned long *power ,uchar *check_power);
void total_data_init(void)
{
	uchar i ; 
	series_receive_sign = 0x00 ; 
	series_receive_counter = 0x00 ;
	series_receive_long  = 0x00 ; 
	series_receive_end  = 0x00 ;  
	series_receive_sign = 0x00 ;
	series_receive_counter = 0x00;
}
void reset_process(void)
{
	uchar check_temp ;
	uchar reset_temp[3] ;
	uint check_temp1 ; 
	Read_EeprData(0xa1,reset_temp,3,save_pulse,0); 		
	check_temp = reset_temp[0] + reset_temp[1] ;
	if(check_temp == reset_temp[2])
	{
		check_temp1 = reset_temp[0] + reset_temp[1]*256 ; 
		if(check_temp1 <320) power_counter = check_temp1 ;
		else power_counter = 0x00;
	}
	else 
	{
		check_temp = 0 ; 
		check_temp1 = 0 ;
		Read_EeprData(0xa1,reset_temp,3,save_pulse,0); 		
		check_temp = reset_temp[0] + reset_temp[1] ;
		if(check_temp == reset_temp[2])
		{
			check_temp1 = reset_temp[0] + reset_temp[1]*256 ; 
			if(check_temp1 <320) power_counter = check_temp1 ;
			else power_counter = 0x00;
		}
		else
		{
			power_counter = 0x00 ;
		}
	}
/******************************************/
	Read_EeprData(0xa1,reset_temp,2,jdq_save,0); 		
	if(reset_temp[0] == reset_temp[1])
	{
		jdq_xian = reset_temp[1] ;
		jdq_xian = jdq_xian &0x03 ;
		switch(jdq_xian)
		{
			case 0x01:
			{
				p1_0 = 1 ; 
				p1_1 = 1 ; 
				start_sign  = 0x00;
				break;
			}
			case 0x02:
			{
				p1_0 = 1 ; 
				p1_1 = 1 ; 
				start_sign = 0x00;
				break;
			}
			case 0x03:
			{
				jdq_xian = 0x02;
				start_sign = 0x55 ;
				break;
			}
			case 0x00:
			{
				jdq_xian = 0x01;
				start_sign = 0x55;
				break;
			}
			default :
			{
				break;
			}
		}
	}
	else 
	{
		check_temp = 0 ; check_temp1 = 0 ;
		Read_EeprData(0xa1,reset_temp,2,jdq_save,0); 		
		if(reset_temp[0] == reset_temp[1])
		{
			jdq_xian = reset_temp[1] ; 
		}
		else
		{
			jdq_xian = 0x00 ;
		}
	}
	reset_data_load(now_total_power,&power_save ,&power_save_check);
	reset_data_load(fu_now_power,&fu_power_save ,&fu_power_save_check);
}
void reset_data_load(uint PB_EeprAddr,unsigned long *power ,uchar *check_power)
{
	uchar check_temp ;
	uint check_temp1 ; 
	Read_EeprData(0xa1,array_temp,5,PB_EeprAddr,0);		
	check_temp = array_temp[0] + array_temp[1] + array_temp[2] + array_temp[3] ;
	if(check_temp == array_temp[4])
	{
		*check_power = check_temp ;
		change_ulong(array_temp,power);
	}
	else
	{
		Read_EeprData(0xa3,array_temp,5,PB_EeprAddr,0); 	
		check_temp = array_temp[0] + array_temp[1] + array_temp[2] + array_temp[3] ;
		if(check_temp == array_temp[4])
		{
			*check_power = check_temp ;
			change_ulong(array_temp,power);

		}
		else
		{
			*power = 0x00 ;
			*check_power = 0x00;
		}
	}
}

void change_ulong(uchar *p,unsigned long *change_data)
{
	*change_data = (*(p+3)/0x10)*10000000 +(*(p+3)%0x10)*1000000+
				 (*(p+2)/0x10)*100000 +(*(p+2)%0x10)*10000+
				 (*(p+1)/0x10)*1000 +(*(p+1)%0x10)*100+
				 (*(p+0)/0x10)*10 ;// +(array_temp[0]%10);

}
void reset_wdt(void)
{
	wdtr = 0x00 ;
	wdtr = 0xff ; 
}

⌨️ 快捷键说明

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