home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol235 / timer555.bqs / TIMER555.BAS
Encoding:
BASIC Source File  |  1986-02-10  |  5.6 KB  |  175 lines

  1. 1 REM BASICODE 2 ROUTINES DOOR HENK WEVERS
  2. 2 REM NADERE INLICHTINGEN BASICODE
  3. 3 REM NOS, HOBBYSCOOP HILVERSUM  
  4. 5 PRINT CHR$(26);:WIDTH(255)
  5. 10 GOTO 1000
  6. 20 GOTO 1010
  7. 100 PRINT CHR$(26);:RETURN
  8. 110 REM
  9. 111 IF HO>51 THEN HO=51
  10. 112 IF VE>23 THEN VE=23
  11. 113 PRINT CHR$(27);"=";CHR$(VE+32);CHR$(HO+32);
  12. 115 RETURN
  13. 120 HO=PEEK(&HEF5A):VE=PEEK(&HEF5B)-&HF0
  14. 121 VE=VE*2
  15. 122 IF HO>127 THEN HO=HO-128:VE=VE+1
  16. 123 VE=VE-PEEK(&HEF62):IF VE<0 THEN VE=32+VE
  17. 124 RETURN
  18. 200 IN$=INKEY$:RETURN
  19. 210 GOSUB 200:IF IN$="" THEN 210
  20. 211 RETURN
  21. 250 PRINT CHR$(7);:RETURN
  22. 260 RV=RND(1):RETURN
  23. 270 FR=FRE(2):RETURN
  24. 300 SR$=STR$(SR)
  25. 301 Q7=LEN(SR$):IF Q7=0 THEN RETURN
  26. 302 IF RIGHT$(SR$,1)<>" " THEN 304
  27. 303 SR$=LEFT$(SR$,Q7-1):GOTO 301
  28. 304 IF LEFT$(SR$,1)<>" " THEN RETURN
  29. 305 SR$=RIGHT$(SR$,Q7-1):GOTO 301
  30. 310 Q4=SR:IF CN<>0 THEN 316
  31. 312 SR=INT(SR+.5):GOSUB 300:GOTO 330
  32. 316 Q5=SGN(SR):SR=ABS(SR):Q8=INT(SR):Q9=SR-Q8
  33. 318 FOR Q6=1 TO CN:Q9=Q9*10:NEXT Q6
  34. 320 Q9=INT(Q9+.5):SR=Q9:GOSUB 300
  35. 322 Q9$=RIGHT$("00000000000000000000"+SR$,CN)
  36. 324 IF Q8=0 AND Q9=0 THEN Q5=1
  37. 326 SR=Q8:GOSUB 300:IF Q5=-1 THEN SR$="-"+SR$
  38. 328 SR$=SR$+"."+Q9$
  39. 330 IF LEN(SR$)<=CT THEN 334
  40. 332 SR$=LEFT$("********************",CT):GOTO 340
  41. 334 SR$=RIGHT$("                    "+SR$,CT)
  42. 340 SR=Q4:RETURN
  43. 350 LPRINT SR$;:RETURN
  44. 360 LPRINT:RETURN
  45. 1000 A=500:GOTO 20
  46. 1010 GOTO 6000
  47. 1020 GOSUB 100:GOSUB 5000
  48. 1030 PRINT"         Astabiele multivibrator":PRINT
  49. 1040 GOSUB 3000:PRINT:PRINT:GOSUB 4000
  50. 1170 GOSUB 100:GOSUB 5000
  51. 1180 PRINT"  Geef de gewenste duty-cycle van de"
  52. 1190 PRINT"  uitgangsspanning op punt 3.  Deze"
  53. 1200 PRINT"  moet liggen tussen 50% en 100%."
  54. 1210 HO=3:VE=9:GOSUB 110
  55. 1220 PRINT"Duty-cycle in %         ";
  56. 1240 INPUT D
  57. 1250 IF D>0 THEN 1280
  58. 1260 PRINT"* Duty-cycle mag niet negatief zijn! *";
  59. 1270 GOTO 1210
  60. 1280 IF D>50 THEN 1310
  61. 1290 PRINT"* Duty-cycle groter dan 50% kiezen! * ";
  62. 1300 GOTO 1210
  63. 1310 IF D<100 THEN 1340
  64. 1320 PRINT"* Duty-cycle kleiner dan 100% maken! * "
  65. 1330 GOTO 1210
  66. 1340 D=D/100
  67. 1350 HO=1:VE=10:GOSUB 110
  68. 1360 FOR I=0 TO 1
  69. 1370 PRINT"                                      "
  70. 1380 NEXT
  71. 1390 PRINT"  Geef nu de gewenste uitgangs-       "
  72. 1400 PRINT"  frequentie. Deze moet liggen tussen"
  73. 1410 PRINT"  0.1 Hz en 100 kHz."
  74. 1420 HO=3:VE=16:GOSUB 110
  75. 1430 PRINT"Uitgangsfrequentie in Hz ";
  76. 1450 INPUT F
  77. 1460 IF F>.1 THEN 1520
  78. 1470 PRINT"* Frequentie hoger dan 0.1 Hz kiezen * "
  79. 1480 GOTO 1420
  80. 1490 PRINT"* Frequentie lager dan 100 Khz kiezen *"
  81. 1500 GOTO 1420
  82. 1510 GOTO 1350
  83. 1520 IF F<10 THEN C=9.999999E-06:GOTO 1560
  84. 1530 IF F<1000 THEN C=9.999999E-07:GOTO 1560
  85. 1540 IF F<100000! THEN C=9.999999E-09:GOTO 1560
  86. 1550 GOTO 1490:REM FREQUENTIE TE HOOG
  87. 1560 PRINT"                                       "
  88. 1570 FOR I=0 TO 8:PRINT"  Ok";:NEXT
  89. 1580 K1=LOG(2):K2=1/(K1*F*C)
  90. 1590 RB=K2*(1-D)
  91. 1600 RA=K2-2*RB
  92. 1610 R=RB:GOSUB 2000:RB=R1
  93. 1620 R=RA:GOSUB 2000:RA=R1
  94. 1630 GOSUB 100:GOSUB 5000:GOSUB 3000
  95. 1640 K$=""
  96. 1650 IF RA>10000 THEN R1=RA/1000:K$="kilo-"
  97. 1660 PRINT"R1=";R1;K$;"ohm"
  98. 1670 K$="":R2=RB
  99. 1680 IF RB>10000 THEN R2=RB/1000:K$="kilo-"
  100. 1690 PRINT"R2=";R2;K$;"ohm"
  101. 1700 PRINT" C=";C*1000000!;"microfarad"
  102. 1710 PRINT"Frequentie=";1/(K1*(RA+2*RB)*C);"Hz"
  103. 1720 PRINT"Duty cycle=";100*(RA+RB)/(RA+2*RB);"%";
  104. 1730 GOSUB 4000
  105. 1740 GOSUB 100:GOSUB 5000
  106. 1750 PRINT"Dit was een P2000 BASICODE programma."
  107. 1760 END
  108. 1770 :
  109. 2000 F=0:REM  NIET BUITEN BEREIK
  110. 2010 K=0:REM  EXPONENT TELLER
  111. 2020 IF R<.1 THEN F=1:REM  TE KLEIN
  112. 2030 IF R>1E+07 THEN F=1:REM  TE GROOT
  113. 2040 R1=R
  114. 2050 REM  ZOEK WAARDE IN TABEL
  115. 2060 IF R1<=1 THEN 2100
  116. 2070 R1=R1/10:REM  SHUIF KOMMA
  117. 2080 K=K+1:REM  TEL VERSCHUIVINGEN
  118. 2090 GOTO 2060:REM  NOG BINNEN BEREIK?
  119. 2100 B=1:REM  POINTER NAAR ARRAY-BEGIN
  120. 2110 E=25:REM  POINTER NAAR ARRAY-EINDE
  121. 2120 M=INT((B+E)/2):REM  POINTER MIDDEN IN BRUIKBAAR VAK
  122. 2130 IF M=B THEN 2170
  123. 2140 IF R1=A(M)THEN 2200
  124. 2150 IF R1<A(M)THEN E=M:GOTO 2120
  125. 2160 IF R1>A(M)THEN B=M:GOTO 2120
  126. 2170 IF(R1-A(B))<(A(E)-R1)THEN R1=A(B):GOTO 2190
  127. 2180 R1=A(E)
  128. 2190 REM  NEEM DICHTSTBIJZIJNDE
  129. 2200 R1=R1*10^K
  130. 2210 IF R1>10 THEN R1=INT(R1+.5)
  131. 2220 RETURN
  132. 2230 :
  133. 3000 PRINT"           +-----------------+"
  134. 3010 PRINT"           !                 !"
  135. 3020 PRINT" +5V-+-----8                 3---OUTPUT"
  136. 3030 PRINT"     !     !       555       !"
  137. 3040 PRINT"     +-----4                 1---+--GND"
  138. 3050 PRINT"     !     !                 !   !"
  139. 3060 PRINT"     !     +--7--------6--2--+   !"
  140. 3070 PRINT"     !        !        !  !      !"
  141. 3080 PRINT"     ! +----+ ! +----+ !  !  !!C !"
  142. 3090 PRINT"     +-! R1 !-+-! R2 !-+--+--!!--+"
  143. 3100 PRINT"       +----+   +----+       !!"
  144. 3110 RETURN
  145. 3120 :
  146. 4000 HO=15:VE=23:GOSUB 110:PRINT"\ENTER\...";:GOSUB 210
  147. 4010 RETURN
  148. 4020 :
  149. 5000 PRINT:PRINT:PRINT:PRINT:RETURN
  150. 6000 DIM A(25)
  151. 6010 FOR I=1 TO 25
  152. 6020 READ A(I)
  153. 6030 NEXT I
  154. 6040 GOSUB 100:GOSUB 5000
  155. 6050 PRINT" - - -  DE ELECTRONICA ONTWERPER  - - -"
  156. 6060 PRINT
  157. 6070 PRINT"   ****    ***    ***    ***    ***"
  158. 6080 PRINT"   *   *  *   *  *   *  *   *  *   *"
  159. 6090 PRINT"   *   *     *   *   *  *   *  *   *"
  160. 6100 PRINT"   ****     *    *   *  *   *  *   *"
  161. 6110 PRINT"   *       *     *   *  *   *  *   *"
  162. 6120 PRINT"   *      *      *   *  *   *  *   *"
  163. 6130 PRINT"   *      *****   ***    ***    ***"
  164. 6140 PRINT
  165. 6150 PRINT"Astabiele multivibrator met de NE-555."
  166. 6160 PRINT:PRINT"Dit programma berekent de weerstanden"
  167. 6170 PRINT:PRINT"en de condensator in het volgende schema"
  168. 6180 GOSUB 4000:GOTO 1020
  169. 6190 :
  170. 30000 REM  STANDAARD WAARDEN
  171. 30010 DATA .1,.11,.12,.13,.15,.16,.18,.2
  172. 30020 DATA .22,.24,.27,.3,.33,.36,.39,.43
  173. 30030 DATA .47,.51,.56,.62,.68,.75,.82,.91,1
  174. 0 DATA .1,.11,.12,.13,.15,.16,.18,.2
  175. 30020 DATA .22,.24,.27,.3,.33,.36,.39,