home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / developmen / oplexamp / ATTEN.OPL < prev    next >
Text File  |  1994-03-30  |  7KB  |  406 lines

  1.  
  2. PROC ATTEN:
  3. GLOBAL zi,c%,db,e,r1,r2,r3,r4,r5,r6
  4. GLOBAL r1$(10),r2$(10),r3$(10)
  5. GLOBAL r4$(10),r5$(10),r6$(10)
  6. GLOBAL ra$(1),rb$(1),ry$(10),rz$(10),res$(20)
  7. GLOBAL newx%,newy%,k%,Res,low,hi
  8. GLOBAL ra,rb,ral,rah,rbl,rbh,z
  9. LOADM "E12R"
  10.   k%=1 :ESCAPE OFF
  11.   Start::
  12.   IF k%=0 :beep 5,234 :beep 3,200 :ENDIF
  13.  
  14. DINIT"ATTENUATION REQUIRED"
  15. dFLOAT db,"ATTENUATION IN dBs",3,60
  16.     k%= DIALOG
  17.        IF K%=0
  18.        GOTO start
  19.     ENDIF
  20.     CLS
  21.     e=10**(-db/20)
  22.     DINIT "IMPEDANCE IN/OUT "
  23.     dFLOAT zi,"Input Impedance in Ohms",50,1000
  24.     k%=DIALOG
  25.     
  26.    IF k%=0
  27.      GOTO start
  28.   ENDIF
  29. CLS
  30.     
  31.     DINIT "TYPE OF ATTENUATOR"
  32.     DCHOICE c%,"CHOOSE FROM LIST","Pi,Bal-Pi,Tee,Bal-Tee,Lattice"
  33.     k%=DIALOG
  34.      IF k%=0
  35.       GOTO start
  36.   ENDIF
  37. CLS
  38.  
  39.     VECTOR c%
  40.      P,Bp,T,Bt,L
  41.     ENDV
  42.     
  43.   
  44.   P:: :Pi: :Pipoly: :Quit: :STOP
  45.   Bp:: :Pi: :Pipoly: :Quit: :STOP
  46.   T:: :Tee: :Teepoly: :Quit: :STOP
  47.   Bt:: :Tee: :Teepoly: :Quit: :STOP
  48.     L:: :Lattice: :Latpoly: :Quit: :STOP
  49.     ENDP
  50.     
  51.     PROC Quit:
  52.   LOCAL k%
  53.   DO :k%=GET :UNTIL k%>=0
  54.     k%=ALERT("Optional E12 Resistors ?","Run Program again ?","options","run again","quit")
  55.     IF k%=3
  56.       STOP
  57.        ELSEIF k%=2
  58.          CLS :gCLS :BEEP 4,400 :BEEP 3,347
  59.          UNLOADM"E12R" :Atten:
  60.      ELSEIF k%=1
  61.   OptionR: 
  62.     ENDIF
  63.     ENDP
  64.  
  65.     PROC Pi:
  66.     r2=zi*(1+e)/(1-e)
  67.     r3=zi*(1-e**2)/(2*e)
  68.     r2$=FIX$(r2,2,10) :ry$=r2$ :ra$="2" :res$="Pi Network"
  69.     r3$=FIX$(r3,2,10) :rz$=r3$ :rb$="3"
  70.     r5=r3/2 :r5$=FIX$(r5,2,10)
  71.     IF c%=2 
  72.     bpPrint:
  73.     ENDIF
  74.     Allprint:
  75.     ENDP  
  76.     
  77. PROC bpPrint:
  78.     rz$=r5$
  79.     res$="Balanced Pi Network"
  80.     ENDP
  81.  
  82. PROC Pipoly:
  83. newx%=145 :newy%=20
  84. pPolyln1:
  85. newx%=160 :newy%=50
  86. Vpolybox:
  87. newx%=200 :newy%=50
  88. Vpolybox:
  89. newx%=165 :newy%=15
  90. Hpolybox:
  91. IF c%=2
  92. newx%=165 :newy%=55
  93. Hpolybox:
  94. ENDIF
  95. IF c%=1
  96. newx%=165 :newy%=60
  97. polyLn2:
  98. ENDIF
  99. ENDP
  100.  
  101. PROC Teepoly:
  102. newx%=135 :newy%=20
  103. TpolyLn:
  104. IF c%=3
  105. newx%=145 :newy%=60
  106. polyLn3:
  107. ENDIF
  108. IF c%=4
  109. newx%=145 :newy%=55
  110. Hpolybox:
  111. newx%=185 :newy%=55
  112. Hpolybox:
  113. ENDIF
  114. newx%=145 :newy%=15
  115. Hpolybox:
  116. newx%=185 :newy%=15
  117. Hpolybox:
  118. newx%=180 :newy%=50
  119. Vpolybox:
  120. pause 5
  121. ENDP
  122.  
  123. PROC pPolyLn1:
  124. LOCAL a%(35) rem declare array first
  125. a%(1)=newx% :a%(2)=newy%
  126. a%(3)=16  rem no of pairs of moves
  127. a%(4)=20*2 :a%(5)=0
  128. a%(6)=20*2+1 :a%(7)=0
  129. a%(8)=20*2 :a%(9)=0
  130. a%(10)=0*2+1 :a%(11)=40
  131. a%(12)=-20*2 :a%(13)=0
  132. a%(14)=0*2+1 :a%(15)=0
  133. a%(16)=-40*2+1 :a%(17)=0
  134. a%(18)=20*2 :a%(19)=0
  135. a%(20)=-10*2+1 :a%(21)=0
  136. a%(22)=0*2 :a%(23)=-10
  137. a%(24)=0*2+1 :a%(25)=-20
  138. a%(26)=0*2 :a%(27)=-10
  139. a%(28)=40*2+1 :a%(29)=0
  140. a%(30)=0*2 :a%(31)=10
  141. a%(32)=0*2+1 :a%(33)=20
  142. a%(34)=0*2 :a%(35)=10
  143. gPOLY a%()
  144. ENDP
  145.  
  146. PROC polyLn2:
  147. LOCAL a%(5)
  148. a%(1)=newx% :a%(2)=newy%
  149. a%(3)=1
  150. a%(4)=20*2 :a%(5)=0
  151. gPOLY a%()
  152. ENDP
  153.  
  154. PROC TpolyLn:
  155. LOCAL a%(33)
  156. a%(1)=newx%  :a%(2)=newy%
  157. a%(3)=15
  158. a%(4)=10*2  :a%(5)=0
  159. a%(6)=20*2+1 :a%(7)=0
  160. a%(8)=20*2 :a%(9)=0
  161. a%(10)=20*2+1 :a%(11)=0
  162. a%(12)=10*2  :a%(13)=0
  163. a%(14)=-40*2+1 :a%(15)=0
  164. a%(16)=0*2 :a%(17)=10
  165. a%(18)=0*2+1 :a%(19)=20
  166. a%(20)=0*2 :a%(21)=10
  167. a%(22)=40*2+1 :a%(23)=0
  168. a%(24)=-10*2 :a%(25)=0
  169. a%(26)=-20*2+1 :a%(27)=0
  170. a%(28)=-20*2 :a%(29)=0
  171. a%(30)=-20*2+1 :a%(31)=0
  172. a%(32)=-10*2 :a%(33)=0
  173. gPOLY a%()
  174. ENDP
  175.  
  176.  
  177.  
  178. PROC Latpoly:
  179. newx%=145 :newy%=10
  180. Lpoly:
  181. newx%=165 :newy%=5
  182. Hpolybox:
  183. newx%=165 :newy%=65
  184. Hpolybox:
  185. newx%=160 :newy%=40
  186. Vpolybox:
  187. newx%=200 :newy%=40
  188. Vpolybox:
  189. ENDP
  190.  
  191.  
  192.  
  193. PROC Lpoly:
  194. LOCAL a%(41)
  195. a%(1)=newx% :a%(2)=newy%
  196. a%(3)=19
  197. a%(4)=20*2 :a%(5)=0
  198. a%(6)=20*2+1 :a%(7)=0
  199. a%(8)=20*2 :a%(9)=0
  200. a%(10)=0*2+1 :a%(11)=60
  201. a%(12)=-20*2 :a%(13)=0
  202. a%(14)=-20*2+1 :a%(15)=0
  203. a%(16)=-20*2 :a%(17)=0
  204. a%(18)=10*2+1 :a%(19)=-60
  205. a%(20)=0*2 :a%(21)=10
  206. a%(22)=0*2+1 :a%(23)=20
  207. a%(24)=0*2 :a%(25)=5
  208. a%(26)=40*2 :a%(27)=20
  209. a%(28)=0*2 :a%(29)=5
  210. a%(30)=0*2+1 :a%(31)=-60
  211. a%(32)=0*2 :a%(33)=10
  212. a%(34)=0*2+1 :a%(35)=20
  213. a%(36)=0*2 :a%(37)=5
  214. a%(38)=-40*2 :a%(39)=20
  215. a%(40)=0*2 :a%(41)=5
  216.  gPoly a%()
  217.  ENDP
  218.  
  219. PROC polyLn3:
  220. LOCAL a%(9)
  221. a%(1)=newx% :a%(2)=newy%
  222. a%(3)=3
  223. a%(4)=20*2 :a%(5)=0
  224. a%(6)=20*2+1 :a%(7)=0
  225. a%(8)=20*2 :a%(9)=0
  226. gPOLY a%()
  227. ENDP
  228.  
  229. PROC Vpolybox:
  230. LOCAL a%(13)
  231. a%(1)=newx% :a%(2)=newy%
  232. a%(3)=(5)
  233. a%(4)=0*2 :a%(5)=-20
  234. a%(6)=-10*2 :a%(7)=0
  235. a%(8)=0*2 :a%(9)=20
  236. a%(10)=10*2 :a%(11)=0
  237. a%(12)=0*2 :a%(13)=0
  238. gPOLY a%()
  239. ENDP
  240.  
  241. PROC Hpolybox:
  242. LOCAL a%(13)
  243. a%(1)=newx% :a%(2)=newy%
  244. a%(3)=(5)
  245. a%(4)=0*2 :a%(5)=10
  246. a%(6)=20*2 :a%(7)=0
  247. a%(8)=0*2 :a%(9)=-10
  248. a%(10)=-20*2 :a%(11)=0
  249. a%(12)=0*2 :a%(13)=0
  250. gPOLY a%()
  251. ENDP
  252.  
  253.  
  254.  
  255.     PROC Tee:
  256.     r1=zi*(1-e)/(1+e)
  257.     r4=(zi**2-r1**2)/(2*r1)
  258.     r1$=FIX$(r1,2,10) :ry$=r1$ :ra$="1" :res$="Tee Network"
  259.     r4$=FIX$(r4,2,10) :rz$=r4$ :rb$="4"
  260.     r6=r1/2 :r6$=FIX$(r6,2,10)
  261.     IF c%=4
  262.     btPrint:
  263.     ENDIF
  264.     AllPrint:
  265.     ENDP
  266.  
  267.     PROC btPrint:
  268.     ry$=r6$
  269.     res$="Balanced Tee Network"
  270.     ENDP
  271.  
  272.  
  273.     PROC Lattice:
  274.     r1=zi*(1-e)/(1+e)
  275.     r2=zi*(1+e)/(1-e)
  276.     r1$=FIX$(r1,2,10) :ry$=r1$ :ra$="1" :res$="Lattice Network "
  277.     r2$=FIX$(r2,2,10) :rz$=r2$ :rb$="2"
  278.     AllPrint:
  279.     ENDP
  280.  
  281.     
  282.     PROC Allprint:
  283.  LOCAL a%
  284.     gAT 0,0 :gBorder 2,239,79
  285.     gAT 4,48
  286.     gFONT 1 :gSTYLE 9
  287.     gPRINT res$ 
  288.     gAT 4,60 :gSTYLE 0
  289.     gPRINT db;"Db ";zi;" Ohm attenuator"
  290.   gAT 2,9 :gSTYLE 0
  291.     gPRINT " R";ra$;" = ";ry$;" Ohms"
  292.   gAT 2,19
  293.     gPRINT " R";rb$;" = ";rz$;" Ohms"
  294.   IF c%=1 OR c%=2
  295.      gAT 169,24 :gPRINT "R";rb$
  296.      gAT 152,40 :gPRINT "R"
  297.      gAT 152,48 :gPRINT ra$
  298.      gAT 192,40 :gPRINT "R"
  299.      gAT 192,48 :gPRINT ra$
  300.      
  301.        IF c%=2
  302.        gAT 169,64 :gPRINT "R";rb$ 
  303.        ENDIF
  304.        
  305.   ELSEIF c%=3 OR c%=4
  306.      gAT 151,24 :gPRINT "R";ra$
  307.      gAT 191,24 :gPRINT "R";ra$
  308.      gAT 173,40 :gPRINT "R"
  309.      gAT 173,48 :gPRINT rb$
  310.  
  311.       IF c%=4
  312.       gAT 151,64 :gPRINT "R";ra$
  313.       gAT 191,64 :gPRINT "R";ra$
  314.       ENDIF
  315.       
  316.     ELSEIF c%=5
  317.      gAT 169,14 :gPRINT "R";ra$
  318.      gAT 169,74 :gPRINT "R";ra$
  319.      gAT 152,30 :gPRINT "R"
  320.      gAT 152,38 :gPRINT rb$
  321.      gAT 192,30 :gPRINT "R"
  322.      gAT 192,38 :gPRINT rb$
  323.    ENDIF
  324.   ENDP
  325.  
  326.   PROC optionR:
  327.   LOCAL a%
  328.   cls :z=zi
  329.     Res=VAL(Ry$)
  330.     RE12calc: :ral=low :rah=hi
  331.     Res=VAL(Rz$)
  332.     RE12calc: :rbl=low :rbh=hi
  333.     Ry$=FIX$(ral,2,10) :ra=ral
  334.     Rz$=FIX$(rbl,2,10) :rb=rbl
  335. Changepi:
  336.     VEKTOR2: :a%=GET :cls
  337.     Ry$=FIX$(ral,2,10) :ra=ral
  338.     Rz$=FIX$(rbh,2,10) :rb=rbh
  339. Changepi:
  340.     VEKTOR2: :a%=GET :cls
  341.     Ry$=FIX$(rah,2,10) :ra=rah
  342.     Rz$=FIX$(rbl,2,10) :rb=rbl
  343. Changepi:
  344.     VEKTOR2: :a%=GET :cls 
  345.     Ry$=FIX$(rah,2,10) :ra=rah
  346.     Rz$=FIX$(rbh,2,10) :rb=rbh
  347. Changepi:
  348.     VEKTOR2: :pause -500 :cls
  349.     QUIT:
  350.     ENDP
  351.     
  352.  
  353. PROC VEKTOR2:
  354. VECTOR c%
  355. p,bp,t,bt,l
  356. ENDV  
  357. p:: 
  358. Allprint: :Pipoly: :GOTO domore
  359. bp:: 
  360. Allprint: :Pipoly: :GOTO domore
  361. t:: 
  362. Allprint: :Teepoly: :GOTO domore
  363. bt::
  364. Allprint: :Teepoly: :GOTO domore
  365. l:: 
  366. Allprint: :Latpoly: :GOTO domore
  367. domore:: 
  368. ENDP
  369.  
  370. Proc Changepi:
  371. LOCAL r,v,dbs,a%
  372. IF c%=2 
  373. rb=rb*2
  374. ELSEIF c%=3 OR c%=4
  375. GOTO Change
  376. ELSEIF c%=5
  377. cls :beep 10,2000 :gAT 30,40
  378. gFONT 1 :gSTYLE 9 :gPRINT"No Data Available * press enter"
  379. pause 0 :QUIT:
  380. ENDIF 
  381. r=ra*z/(ra+z)
  382. v=r/(r+rb)
  383. r=ra*(r+rb)/(r+ra+rb)
  384. dbs=-20*LOG(v)/LOG(10)
  385. db=INT(dbs*100+0.5)/100
  386. zi=INT(r*100+.5)/100
  387. GOTO done
  388. change::
  389. Changete:
  390. done::
  391. ENDP
  392.  
  393.  
  394. PROC Changete:
  395. LOCAL r,v,dbs
  396. IF c%=4
  397. ra=ra*2
  398. ENDIF
  399. r=rb*(z+ra)/(rb+z+ra)
  400. v=z/(z+ra)*r/(r+ra)
  401. r=r+ra
  402. dbs=-20*(LOG(v)/LOG(10))
  403. db=INT(dbs*100+0.5)/100
  404. zi=INT(r*100+0.5)/100
  405. ENDP
  406.