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

📄 intprg.i

📁 瑞萨(Renesas)M16C系列芯片上实现接受摇控板控制的程序
💻 I
📖 第 1 页 / 共 2 页
字号:











 


union byte_def u2brg_addr;


 


union byte_def u2c0_addr;











 


union byte_def u2c1_addr;











 


union byte_def tabsr_addr;











 


union byte_def cpsrf_addr;




 


union byte_def onsf_addr;











 


union byte_def trgsr_addr;











 


union byte_def ta0mr_addr;











 


union byte_def ta1mr_addr;











 


union byte_def ta2mr_addr;











 


union byte_def ta3mr_addr;











 


union byte_def ta4mr_addr;











 


union byte_def tb0mr_addr;











 


union byte_def tb1mr_addr;










 


union byte_def tb2mr_addr;










 


union byte_def tb2sc_addr;





 


union byte_def u0mr_addr;











 


union byte_def u0brg_addr;


 


union byte_def u0c0_addr;











 


union byte_def u0c1_addr;









 


union byte_def u1mr_addr;











 


union byte_def u1brg_addr;


 


union byte_def u1c0_addr;











 


union byte_def u1c1_addr;









 


union byte_def ucon_addr;










 


union byte_def dm0sl_addr;









 


union byte_def dm1sl_addr;









 


union byte_def crcin_addr;


 


union byte_def adcon2_addr;







 


union byte_def adcon0_addr;











 


union byte_def adcon1_addr;











 


union byte_def dacon_addr;





 


union byte_def pc14_addr;







 


union byte_def pur3_addr;











 


union byte_def p0_addr;











 


union byte_def p1_addr;











 


union byte_def pd0_addr;











 


union byte_def pd1_addr;











 


union byte_def p2_addr;











 


union byte_def p3_addr;











 


union byte_def pd2_addr;











 


union byte_def pd3_addr;











 


union byte_def p4_addr;











 


union byte_def p5_addr;











 


union byte_def pd4_addr;











 


union byte_def pd5_addr;











 


union byte_def p6_addr;











 


union byte_def p7_addr;











 


union byte_def pd6_addr;











 


union byte_def pd7_addr;











 


union byte_def p8_addr;











 


union byte_def p9_addr;











 


union byte_def pd8_addr;










 


union byte_def pd9_addr;











 


union byte_def p10_addr;











 


union byte_def p11_addr;











 


union byte_def pd10_addr;











 


union byte_def pd11_addr;











 


union byte_def p12_addr;











 


union byte_def p13_addr;











 


union byte_def pd12_addr;











 


union byte_def pd13_addr;











 


union byte_def pur0_addr;











 


union byte_def pur1_addr;











 


union byte_def pur2_addr;









 


union byte_def pcr_addr;




 


union{
	struct{
		char	b0:1;
		char	b1:1;
		char	b2:1;
		char	b3:1;
		char	b4:1;
		char	b5:1;
		char	b6:1;
		char	b7:1;
		char	b8:1;
		char	b9:1;
		char	b10:1;
		char	b11:1;
		char	b12:1;
		char	b13:1;
		char	b14:1;
		char	b15:1;
	}bit;
	struct{
		char	low;							 
		char	high;							 
	}byte;
	unsigned short	word;
}tcr0_addr,tcr1_addr,
 u0tb_addr,u1tb_addr,u2tb_addr,u0rb_addr,u1rb_addr,u2rb_addr,
 crcd_addr,
 ad0_addr,ad1_addr,ad2_addr,ad3_addr,ad4_addr,ad5_addr,ad6_addr,ad7_addr;

 






 






 






 






 






 












 












 












 






 






 






 






 






 






 






 






 






 


union{
	struct{
		char	b0:1;
		char	b1:1;
		char	b2:1;
		char	b3:1;
		char	b4:1;
		char	b5:1;
		char	b6:1;
		char	b7:1;
		char	b8:1;
		char	b9:1;
		char	b10:1;
		char	b11:1;
		char	b12:1;
		char	b13:1;
		char	b14:1;
		char	b15:1;
		char	b16:1;
		char	b17:1;
		char	b18:1;
		char	b19:1;
	}bit;
	struct{
		char	low;							 
		char	mid;							 
		char	high;							 
		char	nc;								 
	}byte;
	unsigned long	dword;
}rmad0_addr,rmad1_addr,rmad2_addr,rmad3_addr,
 sar0_addr,sar1_addr,
 dar0_addr,dar1_addr;

 







 







 







 







 







 







 







 







#line 23 "C:/Documents and Settings/Administrator/桌面/IR_Good/int0aa/intprg.c"

#line 1 "C:/Documents and Settings/Administrator/桌面/IR_Good/int0aa/cstartdef.h"
 
 
 
 
 
 
 
 
 
 




#line 24 "C:/Documents and Settings/Administrator/桌面/IR_Good/int0aa/intprg.c"

unsigned int count;

 
volatile unsigned char IR_data=0; 				 
volatile unsigned char IR_OK=0;					 
volatile unsigned char IR_DATA[4]={0x00,0x00,0x00,0x00};	 

volatile unsigned char width=0;					 
static unsigned int width_pre=0;				 


void delay_100us_asm(void)		
{
	#pragma ASM
	wait_100us:
	MOV.B:S  #240,R0L
	WAIT_L100:
	NOP
	NOP
	NOP
	ADJNZ.B #-1,R0L, WAIT_L100
	RTS
	#pragma ENDASM
}

void PIN_2_0_light(void)						 
{	
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b0		  =0;
}
void PIN_2_1_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b1		  =0;

}
void PIN_2_2_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b2		  =0;
	
}
void PIN_2_3_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b3		  =0;
	
}
void PIN_2_4_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b4		  =0;
	
}
void PIN_2_5_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b5		  =0;
	
}
void PIN_2_6_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b6		  =0;
	
}
void PIN_2_7_light(void)
{
	pd2_addr.byte =0xff;
	p2_addr.byte =0xff;
	p2_addr.bit.b7		  =0;
	 
}
 

 
#pragma interrupt	_brk(vect=0)
void _brk(void){}

 
 
 

 
#pragma interrupt	_int3(vect=4)
void _int3(void){}

 
#pragma interrupt	_timer_b5(vect=5)
void _timer_b5(void){}

 
#pragma interrupt	_timer_b4(vect=6)
void _timer_b4(void){}

 
#pragma interrupt	_timer_b3(vect=7)
void _timer_b3(void){}

 
#pragma interrupt	_int5(vect=8)
void _int5(void){}

 
#pragma interrupt	_int4(vect=9)
void _int4(void){}

 
#pragma interrupt	_uart2_bus_collision(vect=10)
void _uart2_bus_collision(void){}

 
#pragma interrupt	_dma0(vect=11)
void _dma0(void){}

 
#pragma interrupt	_dma1(vect=12)
void _dma1(void){}

 
#pragma interrupt	_input_key(vect=13)
void _input_key(void){}

 
#pragma interrupt	_ad_converter(vect=14)
void _ad_converter(void){}

 
#pragma interrupt	_uart2_trance(vect=15)
void _uart2_trance(void){}

 
#pragma interrupt	_uart2_receive(vect=16)
void _uart2_receive(void){}




 
#pragma interrupt	_uart0_trance(vect=17)
void _uart0_trance(void){}


 
#pragma interrupt	_uart0_receive(vect=18)
void _uart0_receive(void){}


 






 
#pragma interrupt	_uart1_receive(vect=20)
void _uart1_receive(void){}

 
#pragma interrupt	_timer_a0(vect=21)
void _timer_a0(void){
	count++;
	if(count>50){
		p2_addr.byte ^=0xff;
		count=0;
	}
}

 
#pragma interrupt	_timer_a1(vect=22)
void _timer_a1(void){}

 
#pragma interrupt	_timer_a2(vect=23)
void _timer_a2(void){}

 
#pragma interrupt	_timer_a3(vect=24)
void _timer_a3(void){}

 
#pragma interrupt	_timer_a4(vect=25)
void _timer_a4(void){}

 
#pragma interrupt	_timer_b0(vect=26)
void _timer_b0(void){}

 
#pragma interrupt	_timer_b1(vect=27)
void _timer_b1(void){}

 
#pragma interrupt	_timer_b2(vect=28)
void _timer_b2(void){}

 
#pragma interrupt	_int0(vect=29)
void _int0(void){ 
	asm("fclr i");		 	
	
	if(p8_addr.bit.b2		  ==0)			 
		{
 
				width_pre=0;
				while(p8_addr.bit.b2		  ==0)			 
				{
					delay_100us_asm();	 
					width_pre++;
				}
				if(width_pre<80||width_pre>95)	 
				{
					int0ic_addr.bit.b3	  =0;	 
					asm("fset i");	 
					return;
				}
				width_pre=0;
				while(p8_addr.bit.b2		  ==1)			 
				{
					delay_100us_asm();	 
					width_pre++;
				}
				if(width_pre<40||width_pre>50)	 
				{
					int0ic_addr.bit.b3	  =0;	 
					asm("fset i");	 
					return;
				}
 
				width_pre=0;
				while(width_pre<32)
				{
					width_pre++;
					pd8_addr.bit.b2		  =0;				 
					while(p8_addr.bit.b2		  ==0);		 
					width=0;			
					while(p8_addr.bit.b2		  ==1)		 
					{
						delay_100us_asm();  
						++width;	
					}
					
					IR_data<<=1;
					  if (width > 8) 		 
					IR_data|=0x01;			 	
					
					if (width_pre==8)   
						IR_DATA[0] = IR_data;	 
					if (width_pre==16)
						IR_DATA[1] = IR_data;	 
					if (width_pre==24)
						IR_DATA[2] = IR_data;	 
					if (width_pre==32)
						IR_DATA[3] = IR_data;	 
				}

				if(IR_DATA[2]!=~IR_DATA[3])	
				{	
					int0ic_addr.bit.b3	  =0;	 
					asm("fset i");	  
					return;
				}
				IR_OK=1;			 
				
				if(IR_OK ==1)		 
			{
			   
				IR_OK=0;			
				
				switch(IR_DATA[2])	 
				{
					case 0xE8 :{PIN_2_0_light(); break;	} 
				 	case 0x48 :{PIN_2_1_light(); break;	} 
				 	case 0xA8 :{PIN_2_2_light(); break; } 
				 	case 0x98 :{PIN_2_3_light(); break; } 
					case 0x18 :{PIN_2_4_light(); break; } 
				 	default :  {PIN_2_5_light(); break;	} 
				}
			}
				
				
		}
	
	int0ic_addr.bit.b3	  =0;	 
	asm("fset i");	 
}

 
#pragma interrupt	_int1(vect=30)
void _int1(void){p2_addr.byte ^=0xff;}

 
#pragma interrupt	_int2(vect=31)
void _int2(void){p2_addr.byte ^=0xff;}


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

⌨️ 快捷键说明

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