📄 cpu.lst
字号:
962 2 RemoPhase2 = P3_2;
963 2 else
964 2 ;
965 2 if( i==0 ) { //every 8 tm01
966 3 if( RemoPhase1==RemoPhase2 ) { // error
967 4 ClearRemoTimer();
968 4 EnableRemoconInt();
969 4 return;
970 4 }
971 3 if( tm01<=(8*8) ) { // start control system
972 4 RemoSystemCode <<=1;
973 4 if( RemoPhase1==1 && RemoPhase2==0 )
974 4 RemoSystemCode |=1;
975 4 }
976 3 else { // data
977 4 RemoDataCode <<=1;
978 4 if( RemoPhase1==1 && RemoPhase2==0 )
979 4 RemoDataCode |=1;
980 4 }
981 3 }
C51 COMPILER V7.50 CPU 04/01/2008 15:02:02 PAGE 17
982 2 if( tm01 > (8*14) ) {
983 3 RemoDataReady++; //LJY051502 RemoDataReady = 1; // new key
984 3 ClearRemoTimer();
985 3 //RemoOver = 0;
986 3 }
987 2 }
988 1
989 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;
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
C51 COMPILER V7.50 CPU 04/01/2008 15:02:02 PAGE 18
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
1083 1 }
1084
1085
1086 void delay(BYTE cnt)
1087 {
1088 1 WORD ttic01;
1089 1
1090 1 ttic01 = ( tic01 + cnt ) % 100;
1091 1 do {
1092 2 ;
1093 2 } while( tic01 != ttic01 );
1094 1 }
1095
1096
1097 //=============================================================================
1098 // Time
1099 //=============================================================================
1100 #define _24H_SECS 86400L // 24*60*60
1101 WORD GetTime_ms(void)
1102 {
1103 1 WORD tms;
1104 1
1105 1 tms = tic01;
C51 COMPILER V7.50 CPU 04/01/2008 15:02:02 PAGE 19
1106 1 tms += ( SystemClock % 60 ) * 100;
1107 1 return tms; // in ms
1108 1 }
1109 BYTE GetTime_H(void)
1110 {
1111 1 return ( SystemClock / 60 / 60 ) % 24 ;
1112 1 }
1113
1114 BYTE GetTime_M(void)
1115 {
1116 1 return ( SystemClock / 60 ) % 60 ;
1117 1 }
1118
1119 BYTE GetSleepTimer(void)
1120 {
1121 1 WORD val;
1122 1
1123 1 val = SleepTimer;
1124 1 if( val ) { // already set, display rest of time
1125 2 val = ( SleepTime >> 8 ) * 60 + ( SleepTime & 0xff );
1126 2 val -= ( GetTime_H() * 60 + GetTime_M() );
1127 2 }
1128 1 return (BYTE)val;
1129 1 }
1130
1131 void SetSleepTimer(BYTE stime)
1132 {
1133 1 SleepTimer = stime;
1134 1 if( SleepTimer==0 )
1135 1 SleepTime = 0xffff;
1136 1 else {
1137 2 SleepTime = GetTime_H() + ( GetTime_M() + SleepTimer ) / 60;
1138 2 SleepTime = ( SleepTime << 8 ) | ( ( GetTime_M() + SleepTimer ) % 60 );
1139 2 }
1140 1
1141 1 #ifdef DEBUG_TIME
dPrintf("\r\n++(SetSleepTimer) SleepTime:0x%x__", (WORD)SleepTime);
#endif
1144 1 }
1145
1146 BYTE OKSleepTime(void)
1147 {
1148 1 if( GetTime_H() == ( SleepTime >>8 ) &&
1149 1 GetTime_M() == ( SleepTime & 0xff ) ) {
1150 2 SleepTimer=0;
1151 2 SleepTime = 0xffff;
1152 2 return 1;
1153 2 }
1154 1 return 0;
1155 1 }
1156
1157 WORD DiffTime_ms( WORD stime, WORD etime )
1158 {
1159 1 //#ifdef DEBUG
1160 1 //dPrintf("\r\n(DiffTime) stime:%d, etime:%d", (WORD)stime, (WORD)etime );
1161 1 //#endif
1162 1 if( etime < stime ) { // resetted
1163 2 return etime + (6000 - stime);
1164 2 }
1165 1 else {
1166 2 return etime - stime;
1167 2 }
C51 COMPILER V7.50 CPU 04/01/2008 15:02:02 PAGE 20
1168 1 }
1169
1170 // cCount X 0.01 sec delay
1171 void SetDelayCount(BYTE cCount)
1172 {
1173 1 cDelayCounter = cCount;
1174 1 }
1175
1176 BYTE GetDelayCount(void)
1177 {
1178 1 return cDelayCounter;
1179 1 }
1180
1181 // cCount X 0.01 sec delay
1182 // Don't call this function between "ssMeasureSetup" state and "ssModeDetect" state.
1183 void WaitDelay(BYTE cWaitCount)
1184 {
1185 1 cDelayCounter = cWaitCount;
1186 1 do {
1187 2 ;
1188 2 } while(cDelayCounter);
1189 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1551 ----
CONSTANT SIZE = 408 ----
XDATA SIZE = ---- ----
PDATA SIZE = 2 8
DATA SIZE = 33 ----
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -