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

📄 isr.lst

📁 MST720-DEMO程序
💻 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 + -