📄 int_timer.lst
字号:
C51 COMPILER V7.06 INT_TIMER 01/29/2008 16:50:11 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE INT_TIMER
OBJECT MODULE PLACED IN .\bin\int_timer.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE int_timer.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\bin\int_timer.obj)
stmt level source
1 #include <reg51.h>
2 #include <stdio.h>
3 #include <main_define.h>
4
5 uint IR_RECEIVE_COMMAND;
6 bit IR_STATS;// static bit IR_STATS;
7
8
9 // ------------IR 外部 INT0 中断服务程序------------------
10 #if(NEC_IR_TYPE)
void int0Remote() interrupt 0 // IR 外部 INT0 中断服务程序
{
static uint oldFall;
uint temp,newFall,times;
times=(TH0<<8)+TL0;
newFall=times;
temp=newFall-oldFall; //计算脉冲加间隔的时间
oldFall=newFall;
//printf("t=%d,w=%d\n",times,temp);
if(temp>1024 && temp<1225) // "0"信号
{
temp=0;
// printf("zero\n");
}
else if(temp>2145 && temp<2345) //"1"信号
{
temp=1;
// printf("one\n");
}
// else if(temp>100 && temp<13600) //header信号
else if(temp>13400 && temp<13600) //header信号
{
bitcnt=0;
data0=0;
data1=0;
return; //返回,等待下次开始接收
}
else ///干扰信号
{
return;
}
bitcnt++;
if(bitcnt<16) //开始接收前16位
{
data0=data0|(uint)temp;
data0=data0<<1;
}
else if(bitcnt==16)
{
data0=data0|(uint)temp;
}
else if(bitcnt<32) //开始接收后16位
{
data1=data1|(uint)temp;
C51 COMPILER V7.06 INT_TIMER 01/29/2008 16:50:11 PAGE 2
data1=data1<<1;
}
else if(bitcnt==32) //接收完最后一位
{
data1=data1|(uint)temp;
printf("ir=%x,%x\n",data0,data1);
}
}
#endif
66
67 #if(SHARP_IR_TYPE)
68 void int0Remote() interrupt 0 // IR 外部 INT0 中断服务程序
69 {
70 1 static uint oldFall;
71 1 uint temp,newFall,times;
72 1
73 1 times=(TH0<<8)+TL0;
74 1 newFall=times;
75 1 temp=newFall-oldFall; //计算脉冲加间隔的时间
76 1 oldFall=newFall;
77 1 if(temp>830 && temp<1230) // "0"信号
78 1 {
79 2 temp=0;
80 2 }
81 1 else if(temp>1870 && temp<2270) //"1"信号
82 1 {
83 2 temp=1;
84 2 }
85 1 else ///干扰信号
86 1 {
87 2 return;
88 2 }
89 1 bitcnt++;
90 1 //printf("bit%d\n",bitcnt);
91 1 if(bitcnt<5) //开始接收前5位用户码
92 1 {
93 2 data0=data0|(uint)temp;
94 2 data0=data0<<1;
95 2 }
96 1 else if(bitcnt==5)//将5位用户码存到data0
97 1 {
98 2 data0=data0|(uint)temp;
99 2 }
100 1 else if(bitcnt<13) //开始接收后8位命令
101 1 {
102 2 data1=data1|(uint)temp;
103 2 data1=data1<<1;
104 2 }
105 1 else if(bitcnt==13) //接收完最后一位命令,将8位命令存到data1
106 1 {
107 2 data1=data1|(uint)temp;
108 2 }
109 1 else if(bitcnt==15) //接收完最后两位尾缀
110 1 {
111 2 if (IR_RECEIVE_SYS_CODE==data0)
112 2 {
113 3 IR_RECEIVE_COMMAND=data1;
114 3 // printf("in_ir=%x\n",IR_RECEIVE_COMMAND);
115 3 IR_STATS=IR_OK;
116 3 }
117 2 data0=0;
C51 COMPILER V7.06 INT_TIMER 01/29/2008 16:50:11 PAGE 3
118 2 data1=0;
119 2 bitcnt=0;
120 2 delay_xms(40);
121 2 }
122 1
123 1 }
124 #endif
125
126 // ------------IR 外部 INT0 中断服务程序------------------
127 #if SUPPORT_INT1
128 void int1() interrupt 2// INT1 外部中断服务程序
129 {
130 1 LED_RED=1;
131 1 delay_xms(200);
132 1 LED_RED=0;
133 1 delay_xms(200);
134 1 printf("int1\n");
135 1 }
136 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 337 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -