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

📄 remsio.c

📁 T112 MCU源程码,用于T112外接MCU篇程,用来驱动模拟屏
💻 C
字号:
#include "reg51.h"
#include "common.h"
#include "struct.h"
#include "system.h"
#include "timer0.h"
#include "key1.h"


////27			5ms			5625			
#define		Colck			12								//	clock
#define		Xtal			27								//12								//	mhz
#define		Time_Base		(Xtal/Colck)

#define		Rem_1ms			(400*Time_Base)//256						//	时间(US)/时基/256
#define		Rem_1ms2		(1800*Time_Base)//256					    //	时间(US)/时基/256
#define		Rem_2ms			(1400*Time_Base)//256						//	时间(US)/时基/256	4400//4500//
#define		Rem_2ms5		(3200*Time_Base)//256						//	时间(US)/时基/256  5725//5625//2813//
#define		Rem_10ms5		(9000*Time_Base)//256						//	时间(US)/时基/256 	20900//21000//11812
#define		Rem_12ms		(12600*Time_Base)//256						//	时间(US)/时基/256	27100//27000//
#define		Rem_13ms		(12400*Time_Base)//256						//	时间(US)/时基/256	29150//29250//
#define		Rem_14ms		(14600*Time_Base)//256						//	时间(US)/时基/256	31600//31500//

#define		UserId_Low		0x08
#define		UserId_High		0xf7

#define		uint	unsigned int

uint	TH0_TMP;
uCHAR	Rem_Bit_Cnt;
uCHAR   Rem_BUF0;
uCHAR   Rem_BUF1;
uCHAR   Rem_BUF2;
uCHAR   Rem_BUF3; 
uCHAR	Remote_Code;
extern bit F_Remote_start;
extern bit F_Remote_In;
extern bit F_Remote_Rep;
extern uCHAR menu_num;
extern uCHAR m_cSource;
extern bit OSD_open;

//extern void OSDShowDig(uCHAR x,uCHAR y,uCHAR cColor,uCHAR num);



void INT1_Remtoe (void) interrupt 2
{

	TH0_TMP		= 	TH1   		;
	TH0_TMP		=	TH0_TMP<<8	;
	TH0_TMP		=	TH0_TMP+TL1	;

	TL1			= 	0			;
	TH1			= 	0			;
	TR1			= 	1			;

	if(TH0_TMP>=Rem_13ms && TH0_TMP<=Rem_14ms)
	{	//	start -- 13.5ms(9+4.5)
		Rem_Bit_Cnt		= 	32	;
	 	F_Remote_start	=	1  	;
		return     				;
	}		
	if(F_Remote_start)
	{
		if(TH0_TMP>=Rem_1ms && TH0_TMP<=Rem_1ms2)
		{	//	"0"--1.12ms
			Rem_BUF3=Rem_BUF3>>1		;
		}
		else if(TH0_TMP>=Rem_2ms && TH0_TMP<=Rem_2ms5)
		{	//	"1"--2.24ms
			Rem_BUF3=(Rem_BUF3>>1)|0x80 ;
		}
		else if(TH0_TMP>=Rem_10ms5 && TH0_TMP<=Rem_12ms)
		{	//	continue -- 11.25ms(9+2.25)
			if(Remote_Code!=0x15&&Remote_Code!=0x12&&Remote_Code!=0x02)
			{
				Remote_Code=Rem_BUF2;
				F_Remote_In		=	1;
			}
			return				;
		}		
		else
		{
			return	;
		}

		Rem_Bit_Cnt--		;
		if(Rem_Bit_Cnt==24)
		{
			Rem_BUF0	=	Rem_BUF3	;
		}
		else if(Rem_Bit_Cnt==16)
		{
			Rem_BUF1	=	Rem_BUF3	;
		}
		else if(Rem_Bit_Cnt==8)
		{
			Rem_BUF2	=	Rem_BUF3	;
		}
		if(Rem_Bit_Cnt!=0)
		{
			return	;
		}
		if(Rem_BUF2	!= ~Rem_BUF3)
		{	//	正反码不吻合则退出
			F_Remote_start	= 0		;
			return             		;
		}
/*
 		else
		{
		
			if((Rem_BUF2&0xf0)!=0x70)
			{	//	如果不是SN遥控输入键则判断用户码
				if(Rem_BUF0 != UserId_Low || Rem_BUF1 != UserId_High)
				{	//	用户码不吻合则退出
					F_Remote_start	= 0	;
					return		;
				}
			}
*/
			Remote_Code=Rem_BUF2		;
			F_Remote_In		=	1;
	//	}
	}
}

void function_Rem(void)
{

	uCHAR i;
	i=Remote_Code;
	switch(i)
	{
		case 0x15:					
					MenuEvent();
					break;
		case 0x14:
					Key_downEvent();
					break;	
		case 0x16:	
					Key_upEvent();
					break;
		case 0x12:	
					choose_S();
					break;
	   	case 0x02:
					PowerEvent();
					break;
	}
	Timer0Start();
}

	

⌨️ 快捷键说明

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