.module main.c .area text(rom, con, rel) .dbfile ./main.c .dbfunc e main _main fV _main:: .dbline -1 .dbline 21 ; //---------------------------------------------------------------------------- ; // C main line ; //---------------------------------------------------------------------------- ; ; #include "psoc_defrostapi.h" ; ; #define MINUTE 60 ; #define TIMER_CLK 93750L // Needs to have the 'L' or the next two lines won't work ; #define HYSTERESIS 10 * TIMER_CLK // 10 Seconds ; #define DE_ICE 30 * MINUTE * TIMER_CLK // 30 Minutes ; #define HEATER 0x10 ; #define FAN 0x20 ; #define ACT 0x80 ; #define AIR_IN 4 ; ; extern unsigned char done; ; ; void delay(DWORD timer_value); ; ; void main(void) ; { .dbline 23 ; // Set pins 1, 2, and 7 to outputs ; PRT0DM0 = HEATER + FAN + ACT; or F,0x10 ; iopage = 1 mov REG[0],-80 and F,0xEF ; iopage = 0 .dbline 24 ; Timer32_1_EnableInt(); push X xcall _Timer32_1_EnableInt pop X .dbline 25 ; M8C_EnableGInt; or F, 01h xjmp L3 L2: .dbline 27 ; while (1) ; { .dbline 29 ; // Turn on fan and actuator ; PRT0DR = FAN + ACT; mov REG[0],-96 .dbline 30 ; delay(HYSTERESIS); mov A,0 push A mov A,14 push A mov A,78 push A mov A,28 push A xcall _delay add SP,-4 L5: .dbline 32 L6: .dbline 31 ; while (PRT0DR & AIR_IN) tst REG[0],4 jnz L5 .dbline 34 ; ; ; ; delay(HYSTERESIS); mov A,0 push A mov A,14 push A mov A,78 push A mov A,28 push A xcall _delay add SP,-4 .dbline 35 ; if (!(PRT0DR & AIR_IN)) tst REG[0],4 jnz L8 .dbline 36 ; { .dbline 38 ; // Turn off fan and actuator; turn on heater ; PRT0DR = HEATER; mov REG[0],16 .dbline 39 ; delay(DE_ICE); mov A,10 push A mov A,14 push A mov A,-21 push A mov A,-80 push A xcall _delay add SP,-4 .dbline 41 ; #if (!LOOP) ; PRT0DR = 0; mov REG[0],0 .dbline 42 ; return; xjmp L1 L8: .dbline 45 L3: .dbline 26 xjmp L2 X0: .dbline -2 .dbline 46 ; #endif ; } ; } ; } L1: .dbline 0 ; func end ret .dbend .dbfunc e delay _delay fV ; timer_value -> X-7 _delay:: .dbline -1 push X mov X,SP .dbline 49 ; ; void delay(DWORD timer_value) ; { .dbline 50 ; Timer32_1_WritePeriod(timer_value); push X mov A,[X-7] push A mov A,[X-6] push A mov A,[X-5] push A mov A,[X-4] push A mov X,SP dec X xcall _Timer32_1_WritePeriod add SP,-4 .dbline 51 ; Timer32_1_Start(); xcall _Timer32_1_Start pop X L11: .dbline 53 L12: .dbline 52 ; while (!done) cmp [_done],0 jz L11 .dbline 55 ; ; ; ; done = 0; mov [_done],0 .dbline -2 .dbline 56 ; } L10: pop X .dbline 0 ; func end ret .dbsym l timer_value -7 l .dbend