📄 ir.lst
字号:
C51 COMPILER V7.01 IR 12/01/2005 09:38:54 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE IR
OBJECT MODULE PLACED IN IR.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IR.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2
3 //-------------------------------
4 //IR receive program for MXIC demo board:
5 //2 interrupt were occupy for IR receive
6 //1: timmer 1 interrupt
7 //2: external interrupt 1
8 //
9 //-------------------------------
10 //typedef unsigned char BYTE;
11 typedef unsigned int UINT;
12 typedef unsigned long ULONG;
13 //typedef unsigned char BYTE;
14
15 //#include "reg52.h"
16 //#include "public2.h"
17 //#include <stdio.h> /* define I/O functions */
18
19 #include "mxREG52.H"
20 //#include "Define.H"
21 #include "Mxic_IR.h"
22 //#include ".\inc\ir_var.h"
23
24 void InitialTimer1(void); //for IR period count
25 void InitialEx1Int(void); //check edge
26
27 bit CheckIrRepeatCode1(void);
28 extern BYTE GetIrCodeData(void);
29 extern BYTE GetIrIDData(void);
30
31 extern int T0_0Interval;
32 bit CheckIrCommand(void);
33 bit CheckIrRepeatCode(void);
34 bit CheckIrRepeatCode1(void);
35 //------------------------------------
36 //------------------------------------
37 //sbit testpin=P2^0;
38 //sbit testpin_1=P2^1;
39 //------------------------------------
40 union FLAME{
41 struct IR_ID{
42 //UINT ID;
43 BYTE ID0;
44 BYTE ID1;
45 BYTE Code0;
46 BYTE Code1;
47 }Mcode;
48
49 ULONG Code;
50 }Ir;
51
52 BYTE IrCount;//count1;
53 //UINT RemoteControllerID=0x0099; //for Mintek
54
55 union RM_ID{
C51 COMPILER V7.01 IR 12/01/2005 09:38:54 PAGE 2
56 struct REMOTE_ID{
57 BYTE MfgId;
58 BYTE DeviceId;
59 }Idx;
60
61 UINT Code;
62 }RmId;
63 //------------------------------------
64 //------------------------------------
65 bit FirstEdge;
66 bit LeadCode; //9ms_______-----4.2ms
67 //------------------------------------
68 //------------------------------------
69 bit EnableIr(void)
70 {
71 1 DisableIr(); //disable first
72 1 if ( MxicIr.Bits.b1IrOn == 0 )
73 1 {
74 2 InitialTimer1(); //for time cnt
75 2 InitialEx1Int(); //
76 2 //IrOn=1;
77 2 MxicIr.Bits.b1IrOn=1;
78 2 MxicIr.Bits.b1GetIrFlame=0;
79 2 MxicIr.Bits.b1GetIrRepeatCode=0;
80 2 MxicIr.Bits.b1GetIrCommand=0;
81 2
82 2 //initial IR parameters
83 2 LeadCode=0;
84 2 FirstEdge=0; //start wait IR cycle
85 2 }
86 1
87 1 return( MxicIr.Bits.b1IrOn );
88 1 }
89
90 //------------------------------------
91 bit DisableIr(void)
92 {
93 1 if ( MxicIr.Bits.b1IrOn == 1 )
94 1 {
95 2 MxicIr.Bits.b1IrOn=0;
96 2 //for ext_int_1:
97 2 EX1=0; //disable Ext_INT_1;
98 2
99 2 //for timer_int_1
100 2 ET1=0; //disable Timer_INT_1;
101 2 TR1=0; //stop counting
102 2 TH1=0;TL1=0; //clear timer cnt;
103 2 // //clear Ir parameters
104 2 }
105 1 return(MxicIr.Bits.b1IrOn);
106 1 }
107
108 /*
109 //------------------------------------
110 bit CheckIrRepeatCode(void)
111 {
112 if ( MxicIr.Bits.b1GetIrRepeatCode )
113 {
114 // MxicIr.Bits.b1GetIrRepeatCode=0;
115 return(1);
116 }
117 else
C51 COMPILER V7.01 IR 12/01/2005 09:38:54 PAGE 3
118 return(0);
119 // return( MxicIr.Bits.b1GetIrRepeatCode );
120 }
121
122 bit CheckIrRepeatCode1(void)
123 {
124 if ( MxicIr.Bits.b1GetIrRepeatCode )
125 {
126 MxicIr.Bits.b1GetIrRepeatCode=0;
127 return(1);
128 }
129 else
130 return(0);
131 // return( MxicIr.Bits.b1GetIrRepeatCode );
132 }
133 */
134 //------------------------------------
135 BYTE GetIrCodeData(void)
136 {
137 1 if ( MxicIr.Bits.b1GetIrFlame == 1 )
138 1 {
139 2 return(Ir.Mcode.Code0);
140 2 }
141 1 return(0xff);
142 1 }
143
144 BYTE GetIrIDData(void)
145 {
146 1 if ( MxicIr.Bits.b1GetIrFlame == 1 )
147 1 {
148 2 return(Ir.Mcode.ID1);
149 2 }
150 1 return(0xff);
151 1 }
152
153 //------------------------------------
154 //------------------------------------
155 //timer 1 interrupt rate:
156 //T=12/14.318M=0.838us
157 //interrupt rate=0.838us * 65536 = 55ms
158 //-----------------------------
159 void InitialTimer1(void) //for IR sampling
160 {
161 1
162 1 TF1=1;
163 1 TR1=0; //not start counting
164 1 ET1=1; //enable Timer_int_1
165 1 TMOD= 0x11; //timer1 mod=1 -> 16bits time count
166 1 TH1=0;
167 1 TL1=0;
168 1 //PT1=0; //low priority
169 1 }
170 //------------------------------------
171 //------------------------------------
172 void InitialEx1Int(void)
173 {
174 1 EX1=1; //enable external int 1
175 1 IT1=1; //negative trigger interrupt
176 1 EA=1; //enable all int
177 1 }
178 //------------------------------------
179 //
C51 COMPILER V7.01 IR 12/01/2005 09:38:54 PAGE 4
180 //------------------------------------
181 void timer1_int( void ) interrupt 3 //about 55ms interrupt
182 {
183 1 if ( LeadCode == 1 )
184 1 {
185 2 MxicIr.Bits.b1GetIrRepeatCode=1;
186 2 MxicIr.Bits.b1GetIrFlame = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -