'------------------------------------- 'PropBasic GC-2 '------------------------------------- DEVICE P8X32A, XTAL1, PLL16X FREQ 80_000_700 hub_Time HUB BYTE(4) = 0 'seconds, minutes, hours, seconds LED2 PIN 27 LED1 PIN 26 DQPin PIN 14 Bus7 PIN 13 Bus6 PIN 12 Bus5 Pin 11 Bus4 PIN 10 Bus3 PIN 9 Bus2 PIN 8 Bus1 Pin 7 Bus0 PIN 6 Water PIN 5 Valve1 PIN 4 B_Nutrient PIN 3 A_Nutrient PIN 2 Acid PIN 1 PushButton PIN 0 RTC TASK AUTO 'CONS 'VARs seconds VAR LONG minutes VAR LONG hours VAR LONG temp VAR LONG value VAR LONG Air VAR LONG Vent VAR LONG Valve VAR LONG AcidTime VAR LONG AnutrientTime VAR LONG BnutrientTime VAR LONG WaterTime VAR LONG AirTime VAR LONG VentTime VAR LONG PROGRAM Start LMM '{$DEFINE LMM} Start: DO WHILE PushButton=1 'Push to Start the Clock LOOP WRBYTE hub_Time, 00,15,13 'Seconds Minutes Hours CLOCK TIME DO 'Read until seconds are stable DO RDBYTE hub_Time, seconds, minutes, hours, temp LOOP UNTIL seconds = temp HIGH LED1 'START THE PROGRAM 'Perform a temperature conversion OWRESET DQPin PAUSE 750 OWWRITE DQPin, $44CC\16 'SkipROM($CC) & Convert($44) 'Read temperature value OWRESET DQPin PAUSE 750 OWWRITE DQPin, $BECC\16 'SkipROM($CC) & Read Scratch($BE) OWREAD DQPin, value\16 'Sign extend value from 16 bits to 32 bits \ SHL value,#16 \ SAR value,#16 'converted temperature appears ten times too large IF value > 195 and value < 215 THEN HIGH LED2 PAUSE 2000 LOW LED2 ENDIF 'List of Start Times LOOP END TASK RTC clocks VAR LONG seconds VAR LONG minutes VAR LONG hours VAR LONG clocks = CNT + 80_000_700 DO WAITCNT clocks, 80_000_700 RDBYTE hub_Time, seconds, minutes, hours INC seconds IF seconds = 60 THEN seconds = 0 INC minutes IF minutes = 60 THEN minutes = 0 INC hours IF hours = 24 THEN hours = 0 ENDIF ENDIF ENDIF WRBYTE hub_Time, seconds, minutes, hours, seconds LOOP ENDTASK