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

📄 main.c

📁 philip RTC 芯片的驱动程序 8563
💻 C
字号:
#define     Variable_GLOBE

//#define test_ir_value

#include	"reg52.h"
#include 	"intrins.h"
#include 	"globedef.h"
#include 	"keydef.h"
#include    "keyproc.h"
#include    "main.h"
#include 	"intctrl.h"
#include	"delay.h"
#include	"m62429.h"
#include    "i2c.h"
#include    "Lcd.h"
#include    "pcf8563.h"

unsigned char	minute;
unsigned char	hour;	 

void    MCU_Init(void);
void 	State_Init(void);

extern	unsigned char sector_erase(unsigned int sector_addr);
extern	unsigned char byte_program(unsigned int byte_addr, unsigned char original_data);
extern	unsigned char byte_read(unsigned int byte_addr);


void main(void)
{
	unsigned char	second = 0;
	unsigned char	second_save = 0;	
	unsigned char	read_count = 0;	
  		
	AV_MUTE = 1;       //防止通电发生砰声,必须最先		
	MCU_Init(); 
  	init_pcf8563(); 
	lcd_init();		
	State_Init();    		
	while(1)
	{	
		read_count++;	
	 	if(read_count == 255)
		{
			read_count = 0;
			second = get_pcf8563(0x02);	
		
			if(second != second_save)
			{	  		        
				display_counter = 0;
				display_maohao();

				minute = get_pcf8563(0x03) & 0x7f;//分
				minute = (minute >> 4) * 10 + (minute & 0x0f);//bcd 码调整到10进制
				if(minute >= 60)//防止出错
				minute = 0;
				display_38(minute / 10);			
				display_48(minute % 10);

				hour = get_pcf8563(0x04) & 0x3f;//时
				hour = (hour >> 4) * 10 + (hour & 0x0f);//bcd 码调整到10进制
				if(hour >= 24)//防止出错
                hour = 0;
			    if(hour >= 13)		//12小时制调整	
				hour = hour - 12;
				if(hour == 0)	
				hour = 12;
			    display_18(hour / 10);			
			    display_28(hour % 10);					  
			}
			else 
			{
				if(display_counter >= 200) //200*3ms
				display_unmaohao();					
			}
			second_save = second;			    	
		}
	
		if(ReadKey_Timer == 5)
		{
			Panel_SearchKey();
			ReadKey_Timer   = 0;
			if(Volume_Need_Record == 1)
			{
				_nop_();
				//I2C_PutByte(A24C02_WRITE, 0, Current_Volume);
				/* 扇区擦除 */
				sector_erase(0x2000);
				/* 字节编程 */
				byte_program(0x2000, Current_Volume);
				Volume_Need_Record = 0;
			}
		}
		KEY_Proc();

		//检测到耳机插入静音功率放大器 	
		if(POWER_Status == off)
		{
//		    MUTE_DETECT1 = 1;
			MUTE_DETECT2 = 1;//写1准备读
			if(/*(MUTE_DETECT1 == 0) ||*/(MUTE_DETECT2 == 0))
			AV_MUTE = 1; //检测到耳机信号,静音	
			else 	
			AV_MUTE =(bit) mute_flag;
		}

#ifdef test_ir_value
		//测遥控码
    	SBUF = Remote_value;
		while(TI == 0);
	    TI = 0;
	    DelayX1ms(255);DelayX1ms(255);DelayX1ms(255);
#endif

		//MUTE_DETECT1 = 1;
		MUTE_DETECT2 = 1;//写1准备读
		P3 |= 0xf0;
		/*开机状态,并且没插耳机进入静音*/
		if( (POWER_Status == off)&&(MUTE_DETECT2 != 0)/*&&(MUTE_DETECT1 != 0)*/&&(( P3 & 0xf0 ) == 0xc0) )
		{
			AV_MUTE = 1;		
			mute_flag =(unsigned char)AV_MUTE;
			if(AV_MUTE == 1)
			display_mute(lcd_mute);
			else
			display_mute(lcd_unmute);
			//	DelayX1ms(125);
		}
	}
}


void MCU_Init(void)
{
	EA  = 0;
	ES  = 0; 
	ET1 = 0;
	EX1 = 0;
	ET0 = 1;
	EX0 = 1;
#ifdef OSCFREQ110592
	Timer2_CntL = 0x32;
	Timer2_CntH = 0xF5;
#else
	Timer2_CntL = 0x47;
	Timer2_CntH = 0xF4;
#endif
	RCAP2L      = Timer2_CntL;
	RCAP2H      = Timer2_CntH;
	ET2         = 1;
	TF2         = 0;
	EXF2        = 0;
	RCLK        = 0;
	TCLK        = 0;
	EXEN2       = 0;
	C_T2        = 0;
	CP_RL2      = 0;
	P0 = 0xFF;
	P1 = 0xFF;
	P2 = 0xFF;
	P3 = 0xFF;
	TMOD = 0x21;	//TIMER1为常数自动装入8位方式,TIMER0为16位方式
	TH1  = 0xFD;
	TL1  = 0xFD;
	PCON = 0x00;
	SCON = 0x50;
	TR0  = 0;
	TR1  = 1;
	TR2  = 1;
	IT1  = 1;
	IT0  = 1;		//中断0下将沿触发
	EA=1;		
}

void State_Init(void)
{
	Power_Pin 		= 0;	
	LED_G = 1;
	Current_Key 	= NO_KEY;
	ReadKey_Timer   = 0;
	POWER_Status 	= 0;
	Remote_value    = NO_KEY;
	Remote_Key      = NO_KEY;
	IR_KeyAct		= 0;
	Panel_Enable	= 0;
	Current_Remote_In = 0;
	Volume_Need_Record = 0;
	Panel_KeyAct  = 0;
	Key_Rebound   = 0;
	Save_Key      = NO_KEY;
	Key_LongTimer = 0;
	Key_ShortTimer = 0;
	Keypointer = NULL;
	FF_FB_Active = 0;
	Need_Button_up = 0;
	CLEAR_M62429_CLK2;
	CLEAR_M62429_DATA;

	Channel_Select = 1;//开机默认主通道
	Volume_Tune(0);
}

⌨️ 快捷键说明

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