📄 isr.lst
字号:
C51 COMPILER V7.50 ISR 03/18/2008 22:29:06 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN ..\1out\ISR.obj
COMPILER INVOKED BY: D:\设计软件\Keil\C51\BIN\C51.EXE ..\KERNEL\ISR.c BROWSE INCDIR(..\INC\;..\PANEL\;..\UI\;..\OPTION\;
-..\SCALER\DSP\) DEFINE(MCU_TYPE_SEL=0) DEBUG OBJECTEXTEND PRINT(..\1out\ISR.lst) OBJECT(..\1out\ISR.obj)
line level source
1 /******************************************************************************
2 Copyright (c) 2005 MStar Semiconductor, Inc.
3 All rights reserved.
4
5 [Module Name]: ISR.c
6 [Date]: 18-Oct-2005
7 [Comment]:
8 Interrupt service routines.
9 [Reversion History]:
10 *******************************************************************************/
11 #define _ISR_C_
12
13 /********************
14 * INCLUDE FILES *
15 *********************/
16 #include "Project.h"
17 #include "TypeDef.h"
18 #include "Ms7X_reg.h"
19 #include "Global.h"
20 #include "Mcu.h"
21 #include "Mcu_reg.h"
22 #include "Misc.h"
23 #include "Timer0.h"
24 #include "Debug.h"
25 #include "Sync.h"
26 #include "IR.h"
27 #include "SI2C.h"
28
29 #if ((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
#endif // ENABLE_VD_DSP
32
33
34 /**********************
35 * FUNCTION PROTOTYPES *
36 ***********************/
37 #if IR_ENABLE
38 void sysISRTimer2(void) interrupt 5 // for IR timer counter interruot
39 {
40 1 ET2 = 0; // disable timer2 interrupt
41 1 TR2 = 0; // stop timer2
42 1
43 1 if (!g_uwIrCycleTimer || g_bIrRepeatStatus)
44 1 g_bIrExecute = 0;
45 1
46 1 TR2 = 1; // start time12
47 1 }
48
49 ////////////////////////////////////////////////////////////////////////////////////////
50
51 void sysISRInt1(void) interrupt 2 // for IR interruot
52 {
53 1 TR2 = 0; // stop timer2
54 1 g_uwIrPeriodCnt = (((WORD)TH2) * 0x100) + TL2;
C51 COMPILER V7.50 ISR 03/18/2008 22:29:06 PAGE 2
55 1 TH2 = HIBYTE(IR_TIMER_COUNTER);
56 1 TL2 = LOBYTE(IR_TIMER_COUNTER);
57 1
58 1 TF2 = 0; // clear timer2 overflow flag
59 1 ET2 = 1; // enable timer2 interrupt
60 1 TR2 = 1; // start timer2
61 1
62 1 // --------------------------------------------------------------
63 1 if (g_bIrExecute == 0) // 1st tigger
64 1 {
65 2 g_bIrExecute = 1;
66 2 g_ucIrBitsCnt = 0;
67 2
68 2 g_uwIrCycleTimer = IR_CYCLE_TIME;
69 2 return;
70 2 }
71 1
72 1 // --------------------------------------------------------------
73 1 g_uwIrPeriodCnt -= IR_TIMER_COUNTER; // difference of triggers
74 1 if (g_ucIrBitsCnt == 0) // check lead header
75 1 {
76 2 // check repeat lead code
77 2 if (g_bIrRepeatStatus)
78 2 {
79 3 if (g_uwIrPeriodCnt > (IR_REPAEAT_LEAD_CNT-IR_TOLERANCE_CNT) && g_uwIrPeriodCnt < (IR_REPAEAT_LEAD_CNT+
-IR_TOLERANCE_CNT))
80 3 {
81 4 if (g_bIrCheckRepeat)
82 4 {
83 5 g_bIrRepeat = 1;
84 5 g_bIrDetect = 1;
85 5 g_uwIrTimer = IR_DELAY_TIME;
86 5 }
87 4 }
88 3
89 3 g_bIrExecute = 0;
90 3 g_uwIrCycleTimer = IR_CYCLE_TIME;
91 3 return;
92 3 }
93 2 // check genral lead code
94 2 if (g_uwIrPeriodCnt > (IR_1ST_LEAD_CNT-IR_TOLERANCE_CNT) && g_uwIrPeriodCnt < (IR_1ST_LEAD_CNT+IR_TOLERA
-NCE_CNT))
95 2 {
96 3 g_bIrError = 0;
97 3 g_bIrRepeat = 0;
98 3 g_ucDataCode = 0x00;
99 3 g_ucIrDataFifo = 0x00;
100 3 }
101 2 else // fail lead code
102 2 {
103 3 g_bIrExecute = 0;
104 3 return;
105 3 }
106 2 }
107 1 // --------------------------------------------------------------
108 1 else // receive byte code
109 1 {
110 2 // receive bit
111 2 g_ucIrDataFifo >>= 1;
112 2 if (g_uwIrPeriodCnt > (IR_LOGIC0_CNT-IR_TOLERANCE_CNT) && g_uwIrPeriodCnt < (IR_LOGIC0_CNT+IR_TOLERANCE_
-CNT))
113 2 g_ucIrDataFifo &= ~_BIT7; // logic 0
C51 COMPILER V7.50 ISR 03/18/2008 22:29:06 PAGE 3
114 2 else if (g_uwIrPeriodCnt > (IR_LOGIC1_CNT-IR_TOLERANCE_CNT) && g_uwIrPeriodCnt < (IR_LOGIC1_CNT+IR_TOLE
-RANCE_CNT))
115 2 g_ucIrDataFifo |= _BIT7; // logic 1
116 2 else // mismatch
117 2 g_bIrError = 1;
118 2
119 2 // check bits counter
120 2 switch(g_ucIrBitsCnt)
121 2 {
122 3 case 8: // 1st byte
123 3 if (g_ucIrDataFifo != IR_HEADER_CODE0)
124 3 g_bIrError = 1;
125 3 break;
126 3 case 16: // 2nd byte
127 3 if (g_ucIrDataFifo != IR_HEADER_CODE1)
128 3 g_bIrError = 1;
129 3 break;
130 3 case 24: // 3rd byte
131 3 g_ucDataCode = g_ucIrDataFifo;
132 3 break;
133 3 case 32: // 4th byte
134 3 if (g_ucDataCode != ~g_ucIrDataFifo)
135 3 g_bIrError = 1;
136 3
137 3 if (!g_bIrError)
138 3 {
139 4 g_bIrRepeatStatus = 1;
140 4 g_ucIrCode = g_ucDataCode;
141 4 g_uwIrCycleTimer = IR_CYCLE_TIME;
142 4
143 4 g_bIrDetect = 1;
144 4 g_bIrCommand = 1;
145 4 g_bIrTime = 0; // IR 1st time repeat
146 4 g_bIrCheckRepeat = 0;
147 4 g_uwIrTimer = IR_DELAY_TIME;
148 4 }
149 3 g_bIrExecute = 0;
150 3 return;
151 3 } // switch
152 2 } // if (g_ucIrBitsCnt == 0)
153 1
154 1 g_ucIrBitsCnt++; // next bit
155 1 }
156 #endif // IR_ENABLE
157
158 ////////////////////////////////////////////////////////////////////////////////////////
159
160 #if RS232DBG
161 void sysISRUart(void) interrupt 4 // For RS232 debug maseeage
162 {
163 1 if(g_ucUartRxFlag)
164 1 {
165 2 if(TI)
166 2 {
167 3 TI=0;
168 3 #if USEXDATABUFF
169 3 sysTxUartOneByte();
170 3 #endif
171 3 }
172 2
173 2 if(RI)
174 2 {
C51 COMPILER V7.50 ISR 03/18/2008 22:29:06 PAGE 4
175 3 RI=0;
176 3 #if (RS232DBG&MSG_CMDRECEIVE)
177 3 sysRxUartOneByte();
178 3 #endif
179 3 }
180 2 }
181 1 else
182 1 {
183 2 TI=RI=0;
184 2 }
185 1 }
186 #endif // RS232DBG
187
188 ////////////////////////////////////////////////////////////////////////////////////////
189
190 void sysISRTimer0(void) interrupt 1 using 1 // For 1ms timer counter
191 {
192 1 BYTE loop;
193 1
194 1 TR0 = 0;
195 1 TH0 = TH_RELOAD_VALUE;
196 1 TL0 = TL_RELOAD_VALUE;
197 1 TR0 = 1;
198 1
199 1 #if IR_ENABLE
200 1 sysIRDetectTimer0();
201 1 #endif
202 1 if((g_ucHTtuneTimer > 0) && (g_ucHTtuneCount < 11)) // 20050804 Antony
203 1 g_ucHTtuneTimer--; // 20050804 Antony
204 1
205 1 if(g_ucVDGainTimer > 0)
206 1 g_ucVDGainTimer--;
207 1
208 1 #if ENABLE_VD_COLOR_DETECT
if( g_ucVDColorBurstHandlerTimer )
g_ucVDColorBurstHandlerTimer --;
#endif // ENABLE_VD_COLOR_DETECT
212 1
213 1 #if 0 //((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
if(g_bEnableVDDSP)
VD_DSP_Int();
#endif
217 1
218 1 for (loop=0; loop<NUM_OF_TIMERS; loop++)
219 1 {
220 2 if (timer_data[loop]>TIMER_ZERO_VALUE)
221 2 {
222 3 if (timer_data[loop]!=TIMER_INVALID_VALUE)
223 3 {
224 4 timer_data[loop]--;
225 4 }
226 3 }
227 2 }
228 1 }
229
230 ////////////////////////////////////////////////////////////////////////////////////////
231
232 void sysISRInt0(void) interrupt 0 // For SI2C and MARIA interrupt
233 {
234 1 #if SI2C_ENABLE
235 1 BYTE ucStatus;
236 1 #endif // SI2C_ENABLE
C51 COMPILER V7.50 ISR 03/18/2008 22:29:06 PAGE 5
237 1
238 1 #if SI2C_ENABLE
239 1 ucStatus = MCUXFR_11_DDC2BI_FLAG;
240 1 if(ucStatus & DATW_INT) // Host write data to Maria
241 1 {
242 2 if(ucStatus & WORDADR)
243 2 g_ucSI2CBuffIndex = 0;
244 2 if(g_ucSI2CBuffIndex < 4)
245 2 g_ucSI2C_Buff[g_ucSI2CBuffIndex++] = MCUXFR_12_DDC2BI_W_BUF;
246 2 else
247 2 SI2C_GARBAGE = MCUXFR_12_DDC2BI_W_BUF;
248 2 }
249 1 else if (ucStatus & DATR_INT)
250 1 {
251 2 MCUXFR_13_DDC2BI_R_BUF = g_ucSI2C_Buff[3]; //cleatr datr flag
252 2 }
253 1 else if(ucStatus & STOP_INT) // stop
254 1 {
255 2 if(g_ucSI2CBuffIndex!=0)
256 2 g_bSI2CCommandFlag=1;//Receive one IIC command
257 2 }
258 1 MCUXFR_11_DDC2BI_FLAG = 0;
259 1 #endif // SI2C_ENABLE
260 1
261 1 }
262
263
264
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 757 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -