cpu.lst

来自「显示屏驱动源代码」· LST 代码 · 共 1,256 行 · 第 1/5 页

LST
1,256
字号
 966   1              #ifdef REMO_RC5
 967   1              {
 968   2                      BYTE    i;
 969   2      
 970   2                      i = tm01 & 0x07;
 971   2                      if( i>=1 && i<=2 )
 972   2                              RemoPhase1 = P3_2;
 973   2                      else if( i>=5 && i<=6 )
 974   2                              RemoPhase2 = P3_2;
 975   2                      else
 976   2                              ;
 977   2                      if( i==0 ) {    //every 8 tm01
 978   3                              if( RemoPhase1==RemoPhase2 ) {  // error
 979   4                                      ClearRemoTimer();                       
 980   4                                      EnableRemoconInt();
 981   4                                      return;
C51 COMPILER V7.06   CPU                                                                   02/21/2008 14:00:25 PAGE 17  

 982   4                              }
 983   3                              if( tm01<=(8*8) ) {                             // start control system
 984   4                                      RemoSystemCode <<=1;
 985   4                                      if( RemoPhase1==1 && RemoPhase2==0 )
 986   4                                              RemoSystemCode |=1;
 987   4                              }
 988   3                              else {                                                  // data
 989   4                                      RemoDataCode <<=1;
 990   4                                      if( RemoPhase1==1 && RemoPhase2==0 )
 991   4                                              RemoDataCode |=1;
 992   4                              }
 993   3                      }
 994   2                      if( tm01 > (8*14) ) {
 995   3                              RemoDataReady++;        //LJY051502 RemoDataReady = 1;                          // new key
 996   3                              ClearRemoTimer();                               
 997   3                              //RemoOver = 0;
 998   3                      }
 999   2              }
1000   1      
1001   1              #elif defined REMO_NEC
                      
                      {
                              if( RemoDataReady ) return;
              
                              switch( RemoStep ) {
              
                              case 0:
                                      if( P3_2==0 ) {
                                              RemoLcnt++;
                                              if( RemoLcnt==0xff ) goto RemoError;
                                      }
                                      else {
                                              RemoHcnt = 0;
                                              RemoStep++;
                                      }
                                      break;
              
                              case 1:
                                      if( P3_2==1 ) {
                                              RemoHcnt++;
                                              if( RemoHcnt==0xff ) goto RemoError;
                                      }
                                      else {
                                              if( RemoLcnt>=15*3 && RemoLcnt<=17*3 ) {
                                                      
                                                      if( RemoHcnt>=3*3 && RemoHcnt<=5*3 ) {
                                                              RemoStep = 3;
                                                              RemoDataReady = 2;
                                                              break;
                                                      }
                                                      else if( RemoHcnt>=7*3 && RemoHcnt<=9*3 ) {
                                                              RemoStep++;
                                                              RemoPhase = 0;
                                                              RemoLcnt = 0;
                                                              RemoNum  = 0;
                                                              RemoBit  = 0;
                                                              break;
                                                      }
                                              }
                                              else goto RemoError;
                                      }
                                      break;
C51 COMPILER V7.06   CPU                                                                   02/21/2008 14:00:25 PAGE 18  

              
                              case 2:
                                      if( RemoPhase==0 ) {
                                              if( P3_2==0 )                                   // Phase=0  Input=0
                                                      RemoLcnt++;
                                              else {                                                  // Phase=0  Input=1
                                                      RemoPhase = 1;
                                                      RemoHcnt = 0;
                                              }
                                      }
                                      else {                                                          
                                              if( P3_2==1 )                                   // Phase=1  Input=1
                                                      RemoHcnt++;
                                              else {                                                  // Phase=1  Input=0
                                                      RemoPhase = 0;
                                                      if( RemoLcnt>=1 && RemoLcnt<=5 ) {
                                                              if( RemoHcnt<=2*3 )                     // bit 0
                                                                      RemoData[RemoNum] <<= 1;
                                                              else if( RemoHcnt<=4*3 ) {              // bit 1
                                                                      RemoData[RemoNum] <<= 1;
                                                                      RemoData[RemoNum]++;
                                                              }
                                                              else goto RemoError;
              
                                                              if( ++RemoBit>=8 ) {
                                                                      RemoBit = 0;
                                                                      if( ++RemoNum>=4 ) {
                                                                              RemoDataReady = 1;
                                                                              RemoStep++;
                                                                      }
                                                              }
                                                              RemoLcnt = 0;
              
                                                      }
                                                      else goto RemoError;
                                              }
                                      }
                                      break;
              
                              case 3:
                                      break;
                              
                              }
                              return;
              
              RemoError:
                              ClearRemoTimer();                               //TimerFor208us();
                              EnableRemoconInt();
                      }
              
                      #endif  // REMO_NEC
1095   1      }
1096          
1097          
1098          void delay(BYTE cnt)
1099          {
1100   1              WORD ttic01;
1101   1      
1102   1              ttic01 =  ( tic01 + cnt ) % 100;
1103   1              do {
1104   2                      ;
1105   2              } while( tic01 != ttic01 );
C51 COMPILER V7.06   CPU                                                                   02/21/2008 14:00:25 PAGE 19  

1106   1      }
1107          
1108          
1109          //=============================================================================
1110          //              Time
1111          //=============================================================================
1112          #define _24H_SECS                       86400L                  // 24*60*60
1113          WORD GetTime_ms(void)
1114          {
1115   1              WORD tms;
1116   1      
1117   1              tms = tic01;
1118   1              tms += ( SystemClock % 60 ) * 100;
1119   1              return tms;     // in ms
1120   1      }
1121          BYTE GetTime_H(void)
1122          {
1123   1              return ( SystemClock / 60 / 60 ) % 24 ;
1124   1      }
1125          
1126          BYTE GetTime_M(void)
1127          {
1128   1              return ( SystemClock / 60  ) % 60 ;
1129   1      }
1130          
1131          BYTE GetSleepTimer(void)
1132          {
1133   1              WORD val;
1134   1      
1135   1              val = SleepTimer;
1136   1              if( val )       {       // already set, display rest of time
1137   2                      val = ( SleepTime >> 8 ) * 60 + ( SleepTime & 0xff );
1138   2                      val -= ( GetTime_H() * 60 + GetTime_M() );
1139   2              }
1140   1              return (BYTE)val;
1141   1      }
1142          
1143          void SetSleepTimer(BYTE stime)
1144          {
1145   1              SleepTimer = stime;
1146   1              if( SleepTimer==0 )
1147   1                      SleepTime = 0xffff;
1148   1              else {
1149   2                      SleepTime = GetTime_H() + ( GetTime_M() + SleepTimer ) / 60;
1150   2                      SleepTime = ( SleepTime << 8 ) | ( ( GetTime_M() + SleepTimer ) % 60 );
1151   2              }
1152   1      
1153   1              #ifdef DEBUG_TIME
                      dPrintf("\r\n++(SetSleepTimer) SleepTime:0x%x__", (WORD)SleepTime);
                      #endif
1156   1      }
1157          
1158          BYTE OKSleepTime(void)
1159          {
1160   1              if( GetTime_H() == ( SleepTime >>8 ) && 
1161   1                      GetTime_M() == ( SleepTime & 0xff ) )   {
1162   2                      SleepTimer=0;
1163   2                      SleepTime = 0xffff;
1164   2                      return 1;
1165   2              }
1166   1              return 0;
1167   1      }
C51 COMPILER V7.06   CPU                                                                   02/21/2008 14:00:25 PAGE 20  

1168          
1169          WORD DiffTime_ms( WORD stime, WORD etime )
1170          {
1171   1              //#ifdef DEBUG
1172   1              //dPrintf("\r\n(DiffTime) stime:%d, etime:%d", (WORD)stime, (WORD)etime );
1173   1              //#endif
1174   1              if( etime < stime ) {                   // resetted
1175   2                      return etime + (6000 - stime);
1176   2              }
1177   1              else {
1178   2                      return etime - stime;
1179   2              }
1180   1      }
1181          
1182          // cCount X 0.01 sec  delay 
1183          void SetDelayCount(BYTE cCount)
1184          {
1185   1              cDelayCounter = cCount;
1186   1      }
1187          
1188          BYTE GetDelayCount(void)
1189          {
1190   1              return cDelayCounter;
1191   1      }
1192          
1193          // cCount X 0.01 sec  delay 
1194          // Don't call this function between "ssMeasureSetup" state and "ssModeDetect" state.
1195          void WaitDelay(BYTE cWaitCount)
1196          {
1197   1              cDelayCounter = cWaitCount;
1198   1              do {
1199   2                      ;
1200   2              } while(cDelayCounter);
1201   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1430    ----

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?