📄 pwmart.lst
字号:
206: INPUT/OUTPUT : Boolean
207:
208: DESCRIPTION : Indicates that the Time out period has expired.
209:
210: COMMENTS : This function has to be polled as often as possible to
211: minimize the error on expected Time Out period.
212: -----------------------------------------------------------------------------*/
213: BOOL ART_IsTimeOutElapsed(void)
214: {
Function: ART_IsTimeOutElapsed
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
215: if ( TimeBaseStatus & TIMEOUT_ELAPSED )
0000 c60000 LD A,TimeBaseStatus
0003 a501 BCP A,#1
0005 270b JREQ *13 ;abs = 0012
216: {
217: TimeBaseStatus &= (u8)(~TIMEOUT_ELAPSED); // Clear Flag
0007 c60000 LD A,TimeBaseStatus
000a a4fe AND A,#-2
000c c70000 LD TimeBaseStatus,A
218: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
219: }
220: else
221: {
222: return ( FALSE );
0012 4f CLR A
223: }
224: }
0013 81 RET
225:
226:
227: BOOL ART_IsRegPeriodElapsed(void)
228: {
Function: ART_IsRegPeriodElapsed
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
229: if ( TimeBaseStatus & REG_PERIOD_ELAPSED )
0000 c60000 LD A,TimeBaseStatus
0003 a502 BCP A,#2
0005 270b JREQ *13 ;abs = 0012
230: {
231: TimeBaseStatus &= (u8)(~REG_PERIOD_ELAPSED); // Clear Flag
0007 c60000 LD A,TimeBaseStatus
000a a4fd AND A,#-3
000c c70000 LD TimeBaseStatus,A
232: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
233: }
234: else
235: {
236: return ( FALSE );
0012 4f CLR A
237: }
238: }
0013 81 RET
239:
240:
241: BOOL ART_IsSequenceCompleted(void)
242: {
Function: ART_IsSequenceCompleted
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
243: if ( TimeBaseStatus & SEQUENCE_COMPLETED )
0000 c60000 LD A,TimeBaseStatus
0003 a504 BCP A,#4
0005 270b JREQ *13 ;abs = 0012
244: {
245: TimeBaseStatus &= (u8)(~SEQUENCE_COMPLETED); // Clear Flag
0007 c60000 LD A,TimeBaseStatus
000a a4fb AND A,#-5
000c c70000 LD TimeBaseStatus,A
246: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
247: }
248: else
249: {
250: return ( FALSE );
0012 4f CLR A
251: }
252: }
0013 81 RET
253:
254:
255: BOOL ART_Is_TimeInMsElapsed(void)
256: {
Function: ART_Is_TimeInMsElapsed
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
257: if ( TimeBaseStatus & MS_TIME_ELAPSED )
0000 c60000 LD A,TimeBaseStatus
0003 a508 BCP A,#8
0005 270b JREQ *13 ;abs = 0012
258: {
259: TimeBaseStatus &= (u8)(~MS_TIME_ELAPSED); // Clear Flag
0007 c60000 LD A,TimeBaseStatus
000a a4f7 AND A,#-9
000c c70000 LD TimeBaseStatus,A
260: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
261: }
262: else
263: {
264: return ( FALSE );
0012 4f CLR A
265: }
266: }
0013 81 RET
267:
268:
269: BOOL ART_IsMainTimeElapsed(void)
270: {
Function: ART_IsMainTimeElapsed
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
271: if ( TimeBaseStatus & MAIN_TIMEBASE_ELAPSED )
0000 c60000 LD A,TimeBaseStatus
0003 a580 BCP A,#128
0005 270b JREQ *13 ;abs = 0012
272: {
273: TimeBaseStatus &= (u8)(~MAIN_TIMEBASE_ELAPSED); // Clear Flag
0007 c60000 LD A,TimeBaseStatus
000a a47f AND A,#-129
000c c70000 LD TimeBaseStatus,A
274: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
275: }
276: else
277: {
278: return ( FALSE );
0012 4f CLR A
279: }
280:
281: }
0013 81 RET
282:
283: BOOL ART_IsWdgTimeElapsed(void)
284: {
Function: ART_IsWdgTimeElapsed
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
285: if ( Status & WDG_TIMEBASE_ELAPSED )
0000 c60000 LD A,Status
0003 a501 BCP A,#1
0005 270b JREQ *13 ;abs = 0012
286: {
287: Status &= (u8)(~WDG_TIMEBASE_ELAPSED); // Clear Flag
0007 c60000 LD A,Status
000a a4fe AND A,#-2
000c c70000 LD Status,A
288: return ( TRUE );
000f a601 LD A,#1
0011 81 RET
289: }
290: else
291: {
292: return ( FALSE );
0012 4f CLR A
293: }
294:
295: }
0013 81 RET
296:
297: #ifdef __HIWARE__ /* test for HIWARE Compiler */
298: #pragma TRAP_PROC SAVE_REGS /* additional registers will be saved */
299: #else
300: #ifdef __CSMC__ /* test for Cosmic Compiler */
301: @interrupt /* Cosmic interrupt handling */
302: #endif
303: #endif
304: /*-----------------------------------------------------------------------------
305: ROUTINE NAME : ART_Interrupt
306: INPUT/OUTPUT : None
307:
308: DESCRIPTION :
309:
310: COMMENTS :
311: -----------------------------------------------------------------------------*/
312: void ART_Interrupt(void)
313: {
Function: ART_Interrupt
Source : ..\..\source\pwmart.c
Options : -Cc -F7 -Lasm=%n.lst -Ml -N -Os -Ou -Of -Ol0 -OnPMNC -Or
0000 9089 PUSH Y
0002 b600 LD A,_R_Z
0004 88 PUSH A
0005 b601 LD A,_LEX:1
0007 88 PUSH A
0008 b600 LD A,_LEX
000a 88 PUSH A
000b b601 LD A,_SEX:1
000d 88 PUSH A
000e b600 LD A,_SEX
0010 88 PUSH A
314: u8 Dummy;
315:
316: Dummy = ARTCSR; // Clear OVF flag
0011 b600 LD A,ARTCSR
317:
318: if (DebounceButton != 0) DebounceButton--;
0013 c60000 LD A,DebounceButton
0016 4d TNZ A
0017 2707 JREQ *9 ;abs = 0020
0019 c60000 LD A,DebounceButton
001c 4a DEC A
001d c70000 LD DebounceButton,A
319:
320: RegCounter--;
0020 c60000 LD A,RegCounter
0023 4a DEC A
0024 c70000 LD RegCounter,A
321: if (RegCounter == 0)
0027 c60000 LD A,RegCounter
002a 4d TNZ A
002b 260e JRNE *16 ;abs = 003b
322: {
323: TimeBaseStatus |= REG_PERIOD_ELAPSED; // Used in IsTestTimeBaseElapsed
002d c60000 LD A,TimeBaseStatus
0030 aa02 OR A,#2
0032 c70000 LD TimeBaseStatus,A
324: RegCounter = RegTimeBase; // Continue with same period
0035 c60000 LD A,RegTimeBase
0038 c70000 LD RegCounter,A
325: }
326:
327: MainCounter--;
003b c60001 LD A,MainCounter:1
003e ce0000 LD X,MainCounter
0041 4d TNZ A
0042 2601 JRNE *3 ;abs = 0045
0044 5a DEC X
0045 4a DEC A
0046 c70001 LD MainCounter:1,A
0049 cf0000 LD MainCounter,X
328: if (MainCounter == 0)
004c c60001 LD A,MainCounter:1
004f ca0000 OR A,MainCounter
0052 2614 JRNE *22 ;abs = 0068
329: {
330: TimeBaseStatus |= MAIN_TIMEBASE_ELAPSED;// Used in ART_IsMainTimeElapsed
0054 c60000 LD A,TimeBaseStatus
0057 aa80 OR A,#128
0059 c70000 LD TimeBaseStatus,A
331: MainCounter = MainTimeBase; // Continue with same period
005c c60001 LD A,MainTimeBase:1
005f c70001 LD MainCounter:1,A
0062 c60000 LD A,MainTimeBase
0065 c70000 LD MainCounter,A
332: }
333:
334: WdgCounter--;
0068 c60000 LD A,WdgCounter
006b 4a DEC A
006c c70000 LD WdgCounter,A
335: if (WdgCounter == 0)
006f c60000 LD A,WdgCounter
0072 4d TNZ A
0073 260e JRNE *16 ;abs = 0083
336: {
337: Status |= WDG_TIMEBASE_ELAPSED;// Used in ART_SetWatchdogRefreshPeriod
0075 c60000 LD A,Status
0078 aa01 OR A,#1
007a c70000 LD Status,A
338: WdgCounter = WdgTimeBase; // Continue with same period
007d c60000 LD A,WdgTimeBase
0080 c70000 LD WdgCounter,A
339: }
340:
341: if ( !(TimeBaseStatus & TIMEOUT_LOCK)) // No TimeOut modification on-going
0083 c60000 LD A,TimeBaseStatus
0086 a510 BCP A,#16
0088 262d JRNE *47 ;abs = 00b7
342: {
343: TimeOutCounter--;
008a c60001 LD A,TimeOutCounter:1
008d ce0000 LD X,TimeOutCounter
0090 4d TNZ A
0091 2601 JRNE *3 ;abs = 0094
0093 5a DEC X
0094 4a DEC A
0095 c70001 LD TimeOutCounter:1,A
0098 cf0000 LD TimeOutCounter,X
344: if (TimeOutCounter == 0)
009b c60001 LD A,TimeOutCounter:1
009e ca0000 OR A,TimeOutCounter
00a1 2614 JRNE *22 ;abs = 00b7
345: {
346: TimeBaseStatus |= TIMEOUT_ELAPSED; // Used in ART_IsTimeOutElapsed
00a3 c60000 LD A,TimeBaseStatus
00a6 aa01 OR A,#1
00a8 c70000 LD TimeBaseStatus,A
347: TimeOutCounter = TimeOutPeriod; // Reload programmed period
00ab c60001 LD A,TimeOutPeriod:1
00ae c70001 LD TimeOutCounter:1,A
00b1 c60000 LD A,TimeOutPeriod
00b4 c70000 LD TimeOutCounter,A
348: }
349: }
350:
351: if ( !(TimeBaseStatus & SEQUENCE_LOCK)) // No Sequence modification on-going
00b7 c60000 LD A,TimeBaseStatus
00ba a520 BCP A,#32
00bc 262d JRNE *47 ;abs = 00eb
352: {
353: SequenceCounter--;
00be c60001 LD A,SequenceCounter:1
00c1 ce0000 LD X,SequenceCounter
00c4 4d TNZ A
00c5 2601 JRNE *3 ;abs = 00c8
00c7 5a DEC X
00c8 4a DEC A
00c9 c70001 LD SequenceCounter:1,A
00cc cf0000 LD SequenceCounter,X
354: if (SequenceCounter == 0)
00cf c60001 LD A,SequenceCounter:1
00d2 ca0000 OR A,SequenceCounter
00d5 2614 JRNE *22 ;abs = 00eb
355: {
356: TimeBaseStatus |= SEQUENCE_COMPLETED; // Used in ART_IsTimeOutElapsed
00d7 c60000 LD A,TimeBaseStatus
00da aa04 OR A,#4
00dc c70000 LD TimeBaseStatus,A
357: SequenceCounter = SequencePeriod; // Reload programmed period
00df c60001 LD A,SequencePeriod:1
00e2 c70001 LD SequenceCounter:1,A
00e5 c60000 LD A,SequencePeriod
00e8 c70000 LD SequenceCounter,A
358: }
359: }
360:
361: if ( !(TimeBaseStatus & MS_TIME_LOCK)) // No Sequence modification on-going
00eb c60000 LD A,TimeBaseStatus
00ee a540 BCP A,#64
00f0 262d JRNE *47 ;abs = 011f
362: {
363: ms_Counter--;
00f2 c60001 LD A,ms_Counter:1
00f5 ce0000 LD X,ms_Counter
00f8 4d TNZ A
00f9 2601 JRNE *3 ;abs = 00fc
00fb 5a DEC X
00fc 4a DEC A
00fd c70001 LD ms_Counter:1,A
0100 cf0000 LD ms_Counter,X
364: if (ms_Counter == 0)
0103 c60001 LD A,ms_Counter:1
0106 ca0000 OR A,ms_Counter
0109 2614 JRNE *22 ;abs = 011f
365: {
366: TimeBaseStatus |= MS_TIME_ELAPSED; // Used in ART_IsTimeOutElapsed
010b c60000 LD A,TimeBaseStatus
010e aa08 OR A,#8
0110 c70000 LD TimeBaseStatus,A
367: ms_Counter = ms_TimeBase; // Reload programmed period
0113 c60001 LD A,ms_TimeBase:1
0116 c70001 LD ms_Counter:1,A
0119 c60000 LD A,ms_TimeBase
011c c70000 LD ms_Counter,A
368: }
369: }
370:
371: }
011f 84 POP A
0120 b700 LD _SEX,A
0122 84 POP A
0123 b701 LD _SEX:1,A
0125 84 POP A
0126 b700 LD _LEX,A
0128 84 POP A
0129 b701 LD _LEX:1,A
012b 84 POP A
012c b700 LD _R_Z,A
012e 9085 POP Y
0130 80 IRET
372: /*** (c) 2004 STMicroelectronics **************************** END OF FILE ***/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -