/////////////////////////////////////////////////////////////////////////
//// GREENHOUSE CORE ////
//// ////
//// Countdown timer logic. ////
//// ////
//// Configure PIC as follows: ////
//// LED seg a Pin B0 ////
//// LED seg b Pin B1 ////
//// LED seg c Pin B2 ////
//// LED seg d Pin B3 ////
//// LED seg e Pin B4 ////
//// LED seg f Pin B5 ////
//// LED seg g Pin B6 ////
//// LED Control 1 Pin A0 ////
//// LED Control 2 Pin A1 ////
//// LED Control 3 Pin A2 ////
//// ////
//// Jumpers: ////
//// PCB pin A2 to RS232 RX, pin A3 to RS232 TX ////
//// PCM,PCH pin C7 to RS232 RX, pin C6 to RS232 TX ////
//// ////
//// This example will work with the PCB, PCM and PCH compilers. ////
//// The following conditional compilation lines are used to ////
//// include a valid device for each compiler. Change the device, ////
//// clock and RS232 pins for your hardware if needed. ////
/////////////////////////////////////////////////////////////////////////
//// (C) Copyright 1996,2003 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS ////
//// C compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, ////
//// reproduction or distribution is permitted without written ////
//// permission. Derivative programs created using this software ////
//// in object code form are not restricted in any way. ////
/////////////////////////////////////////////////////////////////////////
#if defined(__PCB__)
#include <16C56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#endif
void number(int num) {
output_low(PIN_B0);
output_low(PIN_B1);
output_low(PIN_B2);
output_low(PIN_B3);
output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);
switch(num) {
case 0:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
break;
case 1:
output_high(PIN_B1);
output_high(PIN_B2);
break;
case 2:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B6);
break;
case 3:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B6);
break;
case 4:
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 5:
output_high(PIN_B0);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 6:
output_high(PIN_B0);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
break;
case 7:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
break;
case 8:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B3);
output_high(PIN_B4);
output_high(PIN_B5);
output_high(PIN_B6);
break;
case 9:
output_high(PIN_B0);
output_high(PIN_B1);
output_high(PIN_B2);
output_high(PIN_B5);
output_high(PIN_B6);
}
}
void control(int place) {
switch(place) {
case 0:
output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
break;
case 1:
output_low(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
break;
case 2:
output_high(PIN_A0);
output_low(PIN_A1);
output_low(PIN_A2);
break;
case 3:
output_low(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
break;
case 4:
output_high(PIN_A0);
output_high(PIN_A1);
output_low(PIN_A2);
break;
case 5:
output_low(PIN_A0);
output_low(PIN_A1);
output_high(PIN_A2);
}
}
void main() {
int i;
int uni, dec;
//set_tris_b(0);
//output_b(0);
control(1);
number(5);
control(2);
number(4);
control(3);
number(3);
control(4);
number(2);
control(5);
number(1);
/*
for(i=1;i<=5;i++) {
control(i);
number(10);
}
*/ /*
control(1);
for(i=3;i>=0;i--) {
number(i);
//delay_us(10);
}
//while(TRUE) { }
control(4);
for(i=99;i>=0;i--) {
uni=i%10;
number(uni);
/*if(uni==999.7687) {
dec=i/10;
control(10);
number(dec);
control(5);
//delay_ms(50);
control(10);
} */
//}
//}
}