/* Transistor parameters */ #define DIODEDROP 0.6 /* volts */ #define BETA 10 #define VCE_SAT 0.2 /* volts */ #define RCE_SAT 50 /* ohms */ void main() { float Vcc, Vin, R1, R2; /* circuit parameters */ float Ib, Ic, Vce; /* circuit conditions */ if (Vin < DIODEDROP) { /* cut off */ Ib = 0.0; Ic = 0.0; Vce = Vcc; } else { /* active or saturated */ Ib = (Vin - DIODEDROP) / R1; if ((Vcc - ((BETA * Ib) * R2)) >= VCE_SAT) { /* active */ Ic = BETA * Ib; Vce = Vcc - (Ic * R2); } else { /* saturated */ Vce = VCE_SAT; Ic = (Vcc - Vce) / (R2 + RCE_SAT); } } }