home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / basic / ic-timer.bas < prev    next >
BASIC Source File  |  1994-07-13  |  3KB  |  90 lines

  1. 10 REM ****************** Timer Calculations *************
  2. 20 REM By Ken L. Greene
  3. 30 REM #63 - 13435 97 Street
  4. 40 REM Edmonton, Alberta, Canada
  5. 50 REM T5E 4C8
  6. 60 REM (403) 475 2456
  7. 70 N=8
  8. 80 GOSUB 770
  9. 90 PRINT" TIMER CALCULATIONS"
  10. 100 PRINT" This program calculates values and times for these timers:"
  11. 110 PRINT TAB(10)"1     9601"
  12. 120 PRINT TAB(10)"2     9602"
  13. 130 PRINT TAB(10)"3     96L02"
  14. 140 PRINT TAB(10)"4     74121"
  15. 150 PRINT TAB(10)"5     74122"
  16. 160 PRINT TAB(10)"6     74123"
  17. 170 PRINT TAB(10)"7     555"
  18. 180 PRINT TAB(10)"8     556  (Dual 555)"
  19. 190 PRINT TAB(10)"9     To end"
  20. 200 PRINT:PRINT
  21. 210 INPUT"Enter the number corresponding to the desired timer :";T
  22. 220 IF T=9 THEN END
  23. 230 IF T>9 THEN GOTO 10
  24. 240 K1=K1(T):K2=K2(T):K3=K3(T)
  25. 250 RMAX=RMAX(T)
  26. 260 GOSUB 600
  27. 270 IF T$<>"T" AND T$<>"t" GOTO 340
  28. 280 GOSUB 540:GOSUB 560
  29. 290 T=K1+K2*R*C*(1+K3)/R)
  30. 300 SC=T:GOSUB 670:T=SC
  31. 310 T= INT(T*10)/10
  32. 320 PRINT "THE TIME IS ";T;SC$;"sec"
  33. 330 GOTO 260
  34. 340 IF T$<>"R" AND T$<>"r" THEN GOTO 450
  35. 350 GOSUB 560:GOSUB 580
  36. 360 R=((T-K1)/(K2*C))-K3
  37. 370 R1=R
  38. 380 SC=R:GOSUB 670:R=SC
  39. 390 R=INT(R*10)/10
  40. 400 PRINT "THE RESISTANCE IS ";R;SC$;"ohms"
  41. 410 IF R1<=RMAX THEN GOTO 260
  42. 420 PRINT:PRINT:PRINT"Resistance is greater than maximum resistance for this timer."
  43. 430 PRINT"use a larger value of capacitance for this time value.":PRINT:PRINT
  44. 440 GOTO 260
  45. 450 IF T$<>"C" AND T$<>"c" THEN GOTO 520
  46. 460 GOSUB 550:GOSUB 580
  47. 470 C=((T-K1)/K2)/(R+K3)
  48. 480 SC=C:GOSUB 670:C=SC
  49. 490 C=INT(C*10)/10
  50. 500 PRINT "THE CAPACITANCE IS ";C;SC$;"farads"
  51. 510 GOTO 260
  52. 520 IF T$<>"E" AND T$<> "e" THEN GOTO 260
  53. 530 GOTO 90
  54. 540 REM SUBROUTINE TO ASK FOR VALUE OF "R"
  55. 550 INPUT "Enter value for 'R' in ohms :";R:RETURN
  56. 560 REM SUBROUTINE TO ASK FOR VALUE FOR "C"
  57. 570 INPUT"Enter value for 'C' in farads";C:RETURN
  58. 580 REM SUBROUTINE TO ASK FOR VALUE FOR "T"
  59. 590 INPUT"Enter value for 'T' in seconds :";T:RETURN
  60. 600 REM SUBROUTINE TO ASK WHICH VARIABLE
  61. 610 PRINT"Enter letter for variable you wish to find :"
  62. 620 PRINT TAB(10)"R      resistor"
  63. 630 PRINT TAB(10)"C      Capacitor"
  64. 640 PRINT TAB(10)"T      Time"
  65. 650 PRINT TAB(10)"E      Exit"
  66. 660 INPUT T$:RETURN
  67. 670 REM SUBROUTINE TO SCALE VARIABLES & FIND SCALE FACTOR
  68. 680 IF SC>1E+06 THEN SC=SC/1E+06:SC$="M":RETURN
  69. 690 IF SC>1000! THEN SC=SC/1000!:SC$="K":RETURN
  70. 700 IF SC<1 THEN SC$="":RETURN
  71. 710 IF SC<1E-12 THEN SC=0:SC$="":RETURN
  72. 720 IF SC<1E-09 THEN SC=SC/1E-12:SC$="p":RETURN
  73. 730 IF SC<.000001 THEN SC=SC/1E-09:SC$="n":RETURN
  74. 740 IF SC<.001 THEN SC=SC/.000001:SC$="u":RETURN
  75. 750 IF SC<1 THEN SC=SC/.001:SC$="m":RETURN
  76. 760 RETURN
  77. 770 REM INITIALIZE TIMER CONSTANTS
  78. 780 FOR I=1 TO N
  79. 790 READ K1(I),K2(I),K3(I),RMAX(I):NEXT
  80. 800 RESTORE
  81. 810 DATA 0,.32,.7,20000
  82. 820 DATA 0,.31,1,20000
  83. 830 DATA 0,.33,3,200000
  84. 840 DATA 0,.693147,0,40000
  85. 850 DATA 0,.693147,0,40000
  86. 860 DATA 0,.693147,0,40000
  87. 870 DATA 0,1.1,0,20E6
  88. 880 DATA 0,1.1,0,20E6
  89. 890 RETURN
  90.