📄 intprg.i
字号:
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 + -