#picaxe 28x1 setfreq em16 '************************************************************************************ ' LEGAL RESTRICTIONS ON PROGRAM USE '************************************************************************************ start: 'This program is fully protected by the provisions of the 'Commonwealth Copyright Act (Australia). Although any form 'of reproduction contravenes the Act, the author is not concerned 'about bona fide electronic hobbyists (and particularly radio 'amateurs) making single copies of it for their own personal 'use. However, commercial organisations should note that no 'significant part of this software can be offered for sale or 'sold, either on its own or as part of an assembly, unless a 'licence to do so has been obtained from myself-James Tregellas, '14 Sheringa Drive, Morphett Vale 5162 June 2005 '************************************************************************************ '**** Revision information can be found at the end of this file**** '************************************************************************************ ' ' ' Basic PICAXE-28X variable & storage info ' Added by VK3DPM for reference ' bx = byte variables ' wx = integer variables (double byte) and are made up of bx pairs, refer to the ' PICAXE documentation for detail. ' memory locations 80-127 & 192-239 are available for byte storage only by ' using the peek & poke instructions. ' ' w0 = b1 : b0 ' w1 = b3 : b2 ' w2 = b5 : b4 ' w3 = b7 : b6 ' w4 = b9 : b8 ' w5 = b11 : b10 ' w6 = b13 : b12 ' '************************************************************************************ ' VA3SMM Display flickering eliminated '************************************************************************************ 'This version incorporates most of the improvements that users have made to Jim 'Tregellas' excellent piece of work. This is basically the David Milne VK3DPM version 'with the display flickering eliminated - inspired by John Dekker ZL2TTM(JV). ' Stan Madore - VA3SMM '************************************************************************************ ' HD44780 LCD SETUP ROUTINE '************************************************************************************ ' gosub init 'initialise lcd ' '************************************************************************************ ' MEASURE BATTERY VOLTS AND DISPLAY VERSION '************************************************************************************ battery: readadc 3,b0 'External resistors are scaled to give a resulting 'count of around 120 for a 12volt battery-16K from +12volt to 'adc input 3 and 3K9 from adc input 3 to ground. w2=b0*102 'adjust the adc count by multiplication and then division so that w2=w2/93 'the display shows the correct voltage - change say division only w3=w2/100 'Derive individual digits for display w4=w2//100 w4=w4/10 w5=w2//10 w3=w3+48 'convert individual digits to ASCII w4=w4+48 w5=w5+48 b1=1 'ASCII characters are formatted,punctuated,and labelled, gosub wrins 'and fed to 16 character X 2 line alphanumeric display- 'display starts at position 1- Display uses industry 'standard Hitachi HD44780 chip. Display format can be 'simply altered to accomodate 2X20,2X40,4X16 displays b0=0 loop10: lookup b0,("BATTERY=",b6,b8,".",b10,"V"),b1 b0=b0+1 gosub wrchr if b0<13 then loop10 b1=192 'VK3DPM setup to display on line 2 gosub wrins 'VK3DPM send it b0=0 'VK3DPM reset character counter loopver: 'VK3DPM new label required here lookup b0,("Version 3.21"),b1 'VK3DPM bump this version number after every mod 'VK3DPM and add revision info at the end of file b0=b0+1 'VK3DPM increment display counter gosub wrchr 'VK3DPM output character if b0<12 then loopver 'VK3DPM if not finished do it again pause 8000 'display battery volts & version for 2 seconds & VK3DPM '************************************************************************************ ' WRITE THE OWNER'S NAME '************************************************************************************ b1=1 'go to the first position on the upper line of the display gosub wrins 'go to the "write instruction" subroutine b0=0 'make sure that the variable b0 is set to zero loop20: lookup b0,("Stan VA3SMM,",b6,b8,".",b10), b1'Write ident, name and repeat battery voltage 'use the counter b0 to successively place each character into b1 b0=b0+1 'increment the counter by 1 gosub wrchr 'go to the "write character" subroutine if b0<16 then loop20 'the number in this line must equal the number of characters being displayed b1=192 'go to the first position on the lower line of the display gosub wrins 'go to the "write instruction" subroutine b0=0 'reset the variable b0 to zero loop30: lookup b0,("Bernie VA3BMZ"),b1 b0=b0+1 gosub wrchr if b0<13 then loop30 pause 8000 b1=1 'clear svreen gosub wrins '************************************************************************************ ' VK3DPM - Check at startup if we are in Antenna or Component measurement mode '************************************************************************************ ' At startup if set to quick then put into component mode, once ' switched to slow mode we then remain in Analyser mode Poke 107,0 'VK3DPM initialize mode If pin2=0 Then cont 'VK3DPM we're in analyser mode Poke 107,255 'VK3DPM we're in component mode ' '************************************************************************************ ' MEASURE FREQUENCY and store for later display '************************************************************************************ main: Peek 107,b0 'VK3DPM read mode If pin2=1 And bit0=1 Then cont 'VK3DPM check it if pin2=0 and bit0=1 then modechangeclrdisp Poke 107,0 'VK3DPM must now be in Analyser mode goto cont modechangeclrdisp: b1=1 'Clear screen after component mode gosub wrins 'Lifted from John VK2TTM's version poke 107,0 cont: Poke 80,0 poke 84,0 poke 88,0 poke 103,0 poke 104,0 if pin2=1 And bit0=0 then quick 'VK3DPM if in component mode go slow ' ' count 3,4068,w0 'Frequency counter routine. 5 digit resolution Poke 108,b0 'VK3DPM save LSB freq for component calculations Poke 109,b1 'VK3DPM save MSB freq for component calculations w2=w0/10000 'Max input frequency is 50KHz on digital input 3 (IC pin14)- w3=w0//10000 'NOTE-careful measurement shows 100KHz published is WRONG. w3=w3/1000 w4=w0//1000 'Routines with w1,w2,w3,w4,w6 recover individual digits from w4=w4/100 'count total w0. Clock rate used is 16MHz. Prescaler divider w5=w0//100 'ratio used to feed input 3 is 1024. w5=w5/10 w6=w0//10 ' ' w2=w2+48 'Individual digits are converted to ASCII by adding 48 w3=w3+48 w4=w4+48 w5=w5+48 w6=w6+48 poke 92,b4 poke 93,b6 poke 94,b8 poke 95,b10 poke 96,b12 goto rxcalc: 'These two frequency counting routines produce 5 ASCII 'characters which are formatted,punctuated,labelled, 'and fed to 16 character X 2 line alphanumeric display- 'display starts at position 1- Display uses industry 'standard Hitachi HD44780 chip. Display format can be 'simply altered to accomodate 2X20,2X40,4X16 displays '(loop counter b0,data to display b1,do not use b2) 'display frequency "xx.xxxMHz" at start of display line 1 quick: count 3,407,w0 'Frequency counter routine. 4 digit resolution w2=w0/1000 'Comments as for preceding routine w3=w0//1000 w3=w3/100 w4=w0//100 w4=w4/10 w5=w0//10 w2=w2+48 w3=w3+48 w4=w4+48 w5=w5+48 poke 92,b4 poke 93,b6 poke 94,b8 poke 95,b10 poke 96,48 ' '************************************************************************************ ' CALCULATE RESISTANCE AND REACTANCE '************************************************************************************ rxcalc: '3 voltages are read from test network via ADC 'inputs AN0(ICpin2),AN1(ICpin3)AN2(ICpin4) and 'used to calculate magnitudes of real and 'complex parts of antenna load attached readadc 0,w2 'w2=network input volts (Vin) readadc 1,w3 'w3=voltage proportional to network current (V50) readadc 2,w4 'w4=network output voltage (Vout) rem w2=240 'presetting variables to test R/X/SWR calculations rem w3=207 rem w4=33 poke 98,b6 'save V50 for later ' if w2<25 then cactus 'no rf oscillator output to drive network if w3<5 then oc 'no network current.Display "open" on line 2 if w4<5 then sc 'no network output volts-display "short" on line 2 goto rxcontd ' oc: poke 103,10 'set flag to print "OPEN CCT LOAD" later goto freq ' sc: poke 104,10 'set flag to print "SHORT CCT LOAD" later goto freq ' rxcontd: w5=w3+w4 if w5>w2 then square 'impossible output from network w2>w3+w4 if w5=w2 then square '-modify w2 and treat as pure resistance w2=w5 ' square: w5=w4 'save vout for later w2=w2*w2 'calculate w2 squared-VIN squared w3=w3*w3 'calculate w3 squared-V50 squared w4=w4*w4 'calculate w4 squared-VOUT squared w6=w3+w4 if w220 (approx) if w2<10 and w6>50 then swr2large if w2<20 and w6>100 then swr2large if w2<50 and w6>150 then swr2large if w6>250 then swr2large if w2>500 then swr2large goto printr ' swr2large: poke 88,10 'set flag to print "SWR>10" ' 'inputs w2-ADC output for network input volts (0-255max 240max preferred) ' w3-ADC output for volts across 50 ohm series R (network current) ' w4-ADC output for network output volts (volts across load) 'outputs w2-unknown series load resistance in ohms ' w6-unknown reactance in ohms 'voltage across aerial load resistance is in 97 'voltage across 50 ohm series resistor is in 98 'voltage across aerial load reactance is in 99 ' printr: if w2>500 then r2large w0=w2 'recover individual digits from w2 (resistance) w1=w0/100 w2=w0//100 w2=w2/10 w3=w0//10 w1=w1+48 'Convert individual digits to ASCII w2=w2+48 w3=w3+48 poke 81,b2 poke 82,b4 poke 83,b6 goto printx r2large: poke 80,10 'set flag to print "R>500 ohms" printx: if w6>500 then x2large w0=w6 'recover individual digits from w6 (reactance) w1=w0/100 w2=w0//100 w2=w2/10 w3=w0//10 w1=w1+48 'Convert individual digits to ASCII w2=w2+48 w3=w3+48 poke 85,b2 poke 86,b4 poke 87,b6 goto calca x2large: poke 84,10 'set flag to print "X>500 ohms" '************************************************************************************ ' SWR CALCULATIONS '************************************************************************************ calca: peek 88,b10 if b10>0 then freq peek 97,b4 peek 98,b5 peek 99,b6 w4=b6*b6 w5=b5+b4 w5=w5*w5 w4=w4+w5 'w4= A squared in swr equation squrt1: w5=0 'square root routine (using Naperian w6=w4/2 'successive approximation) calculates opt1: 'A (=w6) in swr equation from w4. w6=w4/w6+w6 w6=w6/2 if w5=w6 then calcb w5=w5+1 if w5=w6 then calcb w5=w6 goto opt1 calcb: poke 100,b12 'save value of A for later if b4>b5 then calcb1 if b4=b5 then calcb1 w4=b6*b6 w5=b5-b4 w5=w5*w5 w4=w4+w5 goto squrt2 calcb1: w4=b6*b6 w5=b4-b5 w5=w5*w5 w4=w4+w5 'w4=B squared in swr equation squrt2: 'square root routine (using Naperian w5=0 'successive approximation) calculates w6=w4/2 'B (=w6) in swr equation from w4. opt2: w6=w4/w6+w6 w6=w6/2 if w5=w6 then swr w5=w5+1 if w5=w6 then swr w5=w6 goto opt2 swr: peek 100,b4 w3=b4+b12 w3=w3*100 w4=b4-b12 w3=w3/w4 printswr: if w3>999 then swr2large1 w0=w3 'recover individual digits from w5 (resistance) w1=w0/100 w2=w0//100 w2=w2/10 w3=w0//10 w1=w1+48 'Convert individual digits to ASCII w2=w2+48 w3=w3+48 poke 89,b2 poke 90,b4 poke 91,b6 goto freq swr2large1: poke 88,10 goto freq '************************************************************************************ ' VK3DPM Component Routines ' We don't have floating point so I cheat - OK! ' ' I've grabbed the full freq count but only calculate to 100 Khz resolution. '************************************************************************************ compt: Peek 108,b8 'Get LSB of raw freq Peek 109,b9 'Get MSB of raw freq Peek 114,b12 'w4 = raw freq count, 2Mhz=2000, 32Mhz=32000 Peek 115,b13 'w6 = reactance w4=w4/100 'decrease the freq resolution to improve the division result w5=w6*159/w4 'Calculate L but keep the dividend value as high as possible w5=w5*10 'and re-adjust for the deliberate error w3=63662/w4 'Calculate C but keep the dividend value as high as possible w3=w3*10/w6 'it's really 400000/2*Pi then adjust for the deliberate error w3=w3*10/4 'and again. w3 = C pF, w5 = L nH poke 110,b10 'Store LSB of L poke 111,b11 'Store MSB of L poke 112,b6 'Store LSB of C poke 113,b7 'Store MSB of C '************************************************************************************ ' Component message routines - some code plagiarised & modified cause I couldn't ' be bothered restructuring a heap of code. '************************************************************************************ ' Frequency display start of line 1 '************************************************************************************ cfreq: b1=128 'display frequency "xx.xxxMHz" at start of display line 1 gosub wrins peek 92,b4 if b4<>48 Then cfreq1 'VK3DPM check for a leading disp zero b4=32 'VK3DPM simply deposit a space char cfreq1: 'VK3DPM add a label peek 93,b5 peek 94,b6 peek 95,b7 peek 96,b8 b0=0 cfloop0: lookup b0,(b4,b5,".",b6,b7,b8,"MHz"),b1 b0=b0+1 gosub wrchr If b0<9 Then cfloop0 '************************************************************************************ ' Reactance display end of line 1 '************************************************************************************ cxwrite: Peek 114,b12 'LSB of reactance to w6 Peek 115,b13 'MSB of reactance to w6 If w6>500 Or w6<5 Then rangeout 'rangecheck - leave if we are out of range w0=w6 'recover individual digits from w6 (reactance) w2=w0/100 w3=w0//100 w3=w3/10 w4=w0//10 w2=w2+48 'Convert individual digits to ASCII w3=w3+48 w4=w4+48 if b4>48 Then cxwrite1 'leading zero suppression if b6>48 then cxwrite2 b6=32 cxwrite2: b4=32 cxwrite1: b0=0 'Append message "X=xxx ohms" to end of display line 1 cxloop1: lookup b0,(" X=",b4,b6,b8,$f4),b1 'the $f4 is hex f4 and displays the omega symbol b0=b0+1 gosub wrchr If b0<7 Then cxloop1 '************************************************************************************ ' Inductance display at the start of line 2 - allowing for 5 digits in nH ' Calculated measurement range is approx 25nH to 49000nH '************************************************************************************ b1=192 gosub wrins clwrite: peek 110,b0 'Grab Inductance LSB peek 111,b1 'Grab Inductance LSB w2=w0/10000 'Strip least significant 4 digits w3=w0//10000 'Grab the remainder w3=w3/1000 'Strip least significant 3 digits w4=w0//1000 'Grab the remainder w4=w4/100 'Strip least significant 2 digits w5=w0//100 'Grab the remainder w5=w5/10 'Strip least significant digit w6=w0//10 'Grab the remainder w2=w2+48 'Convert individual digits to ASCII by adding 48 w3=w3+48 ' " w4=w4+48 ' " w5=w5+48 ' " w6=w6+48 ' " ' 'leading zero suppression if b4>48 then clwrite1 'display if most significant digit is not a 0 If b6>48 Then clwrite2 'and check the rest except for the least If b8>48 Then clwrite3 'significant digit - it's 0 then display a 0 If b10>48 Then clwrite4 b10=32 'If we get here the previous digit was a 0 so convert to a space clwrite4: b8=32 'If we get here the previous digit was a 0 so convert to a space clwrite3: b6=32 'If we get here the previous digit was a 0 so convert to a space clwrite2: b4=32 'If we get here the previous digit was a 0 so convert to a space clwrite1: b0=0 'display message "xxxxx nH" at start of display line 2 clloop3: 'Simple display loop - grab each character in turn and send to the display lookup b0,(b4,b6,b8,b10,b12,"nH"),b1 b0=b0+1 gosub wrchr if b0<7 Then clloop3 'Continue looping until we're done '************************************************************************************ ' Capacitance display at the end of line 2 - allowing for 5 digits in pF ' although in practice it shouldn't exceed 4 unless the rangecheck is changed ' Calculated measurement range is approx 10pF to 20,000pF or 20nF '************************************************************************************ ccwrite: peek 112,b0 'Grab Capacitance LSB peek 113,b1 'Grab Capacitance MSB w2=w0/10000 'Strip least significant 4 digits w3=w0//10000 'Grab the remainder w3=w3/1000 'Strip least significant 3 digits w4=w0//1000 'Grab the remainder w4=w4/100 'Strip least significant 2 digits w5=w0//100 'Grab the remainder w5=w5/10 'Strip least significant digit w6=w0//10 'Grab the remainder w2=w2+48 'Convert individual digits to ASCII by adding 48 w3=w3+48 ' " w4=w4+48 ' " w5=w5+48 ' " w6=w6+48 ' " ' 'leading zero suppression if b4>48 then ccwrite1 'display if most significant digit is not a 0 If b6>48 Then ccwrite2 'and check the rest except for the least If b8>48 Then ccwrite3 'significant digit - it's 0 then display a 0 If b10>48 Then ccwrite4 b10=32 'If we get here the previous digit was a 0 so convert to a space ccwrite4: b8=32 'If we get here the previous digit was a 0 so convert to a space ccwrite3: b6=32 'If we get here the previous digit was a 0 so convert to a space ccwrite2: b4=32 'If we get here the previous digit was a 0 so convert to a space ccwrite1: b0=0 'display message "xxxxx pF" at the end of display line 2 ccloop3: lookup b0,(" ",b4,b6,b8,b10,b12,"pF"),b1 b0=b0+1 gosub wrchr if b0<9 then ccloop3 ' GoTo main 'Start the whole sequence again ' rangeout: 'If we get here then the reactance value is so far out that it's not b0=0 'worth even trying to compute - try adjusting the frequency. loopfill: lookup b0,(" "),b1 'fill the end of line 1 b0=b0+1 gosub wrchr If b0<7 Then loopfill b1=192 gosub wrins b0=0 'display message "Out of range" at start of line 2 loopr: lookup b0,("Out of range "),b1 b0=b0+1 gosub wrchr if b0<16 then loopr goto main '************************************************************************************ ' End of VK3DPM Component routines '************************************************************************************ ' ' '************************************************************************************ ' MESSAGE ROUTINES '************************************************************************************ cactus: b1=1 gosub wrins b0=0 'display message "RF OSC KAPUT" at start of display line 1 loop7: lookup b0,("RF OSC KAPUT"),b1 b0=b0+1 gosub wrchr if b0<12 then loop7 goto main freq: b1=128 'display frequency "xx.xxxMHz" at start of display line 1 gosub wrins peek 92,b4 if b4<>48 then freq1 'VK3DPM check for a leading disp zero b4=32 'VK3DPM simply deposit a space char freq1: 'VK3DPM add a label peek 93,b5 peek 94,b6 peek 95,b7 peek 96,b8 b0=0 if pin2=0 or b8<>48 then loop0 'VK3DPM check for a trailing disp zero in quick mode b8=32 'VK3DPM simply deposit a space char loop0: lookup b0,(b4,b5,".",b6,b7,b8,"MHz"),b1 b0=b0+1 gosub wrchr if b0<9 then loop0 peek 103,b4 peek 104,b5 if b4>0 then open if b5>0 then short goto rwrite open: b1=192 gosub wrins b0=0 'display message "OPEN CCT LOAD" at start of line 2 loop8: lookup b0,("OPEN CCT LOAD "),b1 b0=b0+1 gosub wrchr if b0<13 then loop8 goto main short: b1=192 gosub wrins b0=0 'display message "SHORT CCT LOAD" at start of line 2 loop9: lookup b0,("SHORT CCT LOAD "),b1 b0=b0+1 gosub wrchr if b0<14 then loop9 goto main rwrite: peek 80,b11 if b11>0 then r2 peek 81,b3 peek 82,b4 peek 83,b5 if b3>48 then rwrite1 'leading zero suppression if b4=48 then rwrite2 goto rwrite3 rwrite2: b4=32 rwrite3: b3=32 rwrite1: b0=0 'Append message "R=xxx ohms" to end of display line 1 loop1: lookup b0,(" R=",b3,b4,b5,$f4),b1 b0=b0+1 gosub wrchr if b0<7 then loop1 goto xwrite r2: b0=0 'Append message "R>500 ohms" to end of display line 1 loop2: lookup b0,(" R>500",$f4),b1 b0=b0+1 gosub wrchr if b0<7 then loop2 xwrite: b1=192 gosub wrins peek 84,b11 if b11>0 then x2 peek 85,b3 peek 86,b4 peek 87,b5 if b3>48 then xwrite1 'leading zero suppression if b4=48 then xwrite2 goto xwrite3 xwrite2: b4=32 xwrite3: b3=32 xwrite1: b0=0 'display message "X=xxx ohms" at start of display line 2 loop3: lookup b0,("X=",b3,b4,b5,$f4),b1 b0=b0+1 gosub wrchr if b0<6 then loop3 goto swrwrite x2: 'display message "X>500 0hms" at start of display line 2 b0=0 loop4: lookup b0,("X>500",$f4),b1 b0=b0+1 gosub wrchr if b0<6 then loop4 swrwrite: peek 88,b4 peek 89,b5 peek 90,b6 peek 91,b7 if b4>0 then swr10 b0=0 'append message "SWR=x.xx" to line 2 loop5: lookup b0,(" SWR=",b5,".",b6,b7),b1 b0=b0+1 gosub wrchr if b0<10 then loop5 swr10: b0=0 'append message "SWR>10" to line 2 loop6: lookup b0,(" SWR>10 "),b1 b0=b0+1 gosub wrchr if b0<10 then loop6 goto main '************************************************************************************ ' HD44780 LCD DISPLAY ROUTINES '************************************************************************************ init: 'INITIALISE DISPLAY subroutine pins=0 'clear all output lines b0=0 'reset variable b0 pause 800 'wait 200ms for lcd to reset pins=48 'set to 8 bit operation pulsout 3,4 'send data by pulsing enable line pause 40 'wait 10ms pulsout 3,4 'send data by pulsing enable line pulsout 3,4 'send data by pulsing enable line let pins=32 'set to 4 bit operation pulsout 3,4 'send data by pulsing enable line pulsout 3,4 'send data by pulsing enable line let pins=128 'set to 2 line operation pulsout 3,4 'send data by pulsing enable line b1=14 'screen on, cursor on operation gosub wrins 'write instruction to lcd return 'return to main program wrchr: 'WRITE CHARACTER subroutine pins=b1&240 'mask high nibble of b1 into b2 high 2 'make sure RS is high(character mode) pause 4 pulsout 3,4 'send data by pulsing enable line b2=b1*16 'put low nibble of b1 into b2 pins=b2&240 'mask the high nibble of b2 high 2 'make sure RS is high pause 4 pulsout 3,4 'send data by pulsing enable line return 'return to main program wrins: 'WRITE INSTRUCTION subroutine pins=b1&240 'mask high nibble of b1 into b2 low 2 'make sure RS is low(instruction mode) pause 4 pulsout 3,4 'send data by pulsing enable line b2=b1*16 'put low nibble of b1 into b2 pins=b2&240 'mask the high nibble of b2 low 2 'make sure RS is low pause 4 pulsout 3,4 'send data by pulsing enable line high 2 'back to character mode pause 4 return 'return to main program '************************************************************************************ ' PROGRAM STRUCTURE DATA '************************************************************************************ 'FLAG AND REGISTER USE '80 flag>0 indicates print "R>500 ohms" '81 three digits of Rload in ohms '82 '83 '84 flag>0 indicates print "X>500 ohms" '85 three digits of X in ohms '86 '87 '88 flag>0 indicates print "SWR>10" '89 three digits of SWR '90 '91 '92 five digits of frequency data '93 '94 '95 '96 '97 volts across load resistance '98 V50 '99 volts across load reactance '100 A in SWR calculation '101 not used now '102 not used now '103 flag>0 indicates no network current (open circuit load) '104 flag>0 indicates no network output voltage (short circuit load '105 Spare '106 Spare - The following storage is used for component measurement '107 flag >0 indicates component display '108 Raw frequency count LSB - 2MHz is stored as 2000 '109 Raw frequency count USB '110 LSB of L in nH '111 MSB of L in nH '112 LSB of C in pF '113 MSB of C in pF '114 LSB of X in ohms '115 MSB of X in ohms '116 Spare '117 Spare '118 Spare '119 Spare '120 Spare '************************************************************************************ ' SOFTWARE TEST RESULTS '************************************************************************************ ' CALCULATED RESULT PROGRAM RESULT 'TEST w2 w3 w4 R X SWR R X SWR ' '1 240 120 120 50 0 1.00 50 0 1.00 '2 240 207 33 8 0 6.25 7 0 6.27 '3 240 218 22 5 0 10 5 0 9.90 '4 240 222 18 4 0 12.5 4 0 >10 '5 240 240 0 0 0 INF. SHORT CCT LOAD '6 240 40 200 250 0 5.00 250 0 5.00 '7 240 22 218 500 0 10.0 495 0 9.90 '8 240 18 222 600 0 12.0 >500 0 >10 '9 240 0 240 INF. 0 INF. OPEN CCT LOAD '10 240 239 24 0 5 >10 0 5 >10 '11 240 170 170 0 50 >10 0 50 >10 '12 240 47 235 0 250 >10 1 250 >10 '13 240 24 239 0 500 >10 0 497 >10 '14 240 20 239 0 600 >10 2 >500 >10 '15 240 119 122 50 10 1.22 50 10 1.24 '16 240 197 56 10 10 5.19 9 10 5.20 '17 240 78 164 100 30 2.23 100 30 2.22 '18 240 114 126 55 5 1.14 55 0 1.10 '19 240 173 126 10 35 7.51 9 34 7.69 '20 240 195 67 10 14 5.40 9 14 5.54 '21 240 130 184 10 70 14.93 10 70 >10 '22 240 121 176 20 70 7.67 20 69 7.53 '23 240 103 207 10 100 25.2 9 100 >10 '24 240 67 210 50 150 10.9 50 148 >10 '25 240 50 232 10 230 111.0 12 231 >10 '26 240 44 219 100 230 13.0 98 227 >10 '27 240 57 204 100 150 6.83 97 150 6.96 '28 240 36 209 250 150 6.85 243 158 6.96 '29 0 0 0 RF OSCILLATOR KAPUT '30 240 170 172 0 51 INF. 0 50 >10 '31 240 117 117 50 0 1.00 50 0 1.00 'COMMENTS TEST 18 GIVES X=0 AS w2=w3+w4 (NEAREST APPROX INTEGERS) ' TESTS 30 AND 31 ARE FOR IMPOSSIBLE NETWORK OUTPUTS ' i.e. INCORRECTLY ADJUSTED TRIMPOTS '************************************************************************************ ' REVISION INFORMATION '************************************************************************************ '1-Aug-05 VK3DPM-V2.1 Added leading zero blanking for freq display and trailing ' blanking when when counter is in "quick" mode. '1-Aug-05 VK3DPM-V2.1 Added this revision system including the version display. ' '1-Sep-05 VK3DPM-V3.0 Added L & C measurement ' '17-Jan-10 VA3SMM-V3.1 Added owner's name, with battery voltage included '28-Jan-10 VA3SMM-V3.2 Screen pulsing eliminated '28-Jan-10 VA3SMM-V3.21 Also for L&C routines. '***************************** End of Revision notes ********************************