SHARE
TWEET

Untitled

a guest Aug 15th, 2015 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {{
  2.  
  3. ┌──────────────────────────────────────────┐
  4. │ DTMF_Dialer.spin                           │
  5. │ Author: tymkrs.com                │              
  6. │ See end of file for terms of use.        │                
  7. └──────────────────────────────────────────┘
  8.  
  9. Circuit diagram:
  10.  
  11. all caps are 10µf
  12. prop pin 0 ─┬────┬──┐
  13. prop pin 1 ──┘      ←speaker                          
  14.            ┌────────┴──┘  
  15.                  
  16.           VSS    
  17. }}
  18.  
  19. CON
  20.  
  21.   _clkmode = xtal1 + pll16x
  22.   _xinfreq = 5_000_000
  23.  
  24.   Left_Audio_Pin                = 1                     'First audio pin
  25.   Right_Audio_Pin               = 0                     'Second audio pin
  26.  
  27. OBJ
  28.  
  29.   s     :       "Synth"
  30.  
  31. Pub Main
  32.  
  33.   tone("6")
  34.   tone("0")  
  35.   tone("1")
  36.  
  37.   waitcnt(clkfreq + cnt)
  38.   AllTones
  39.  
  40.  
  41. Pub AllTones
  42.  
  43.   tone("`")
  44.   tone("~")
  45.  
  46.   tone("x")
  47.   tone("x")
  48.   tone("x")
  49.   tone("x")
  50.  
  51.   tone("y")
  52.   tone("y")
  53.   tone("y")
  54.   tone("y")
  55.  
  56.   tone("z")
  57.   tone("z")
  58.   tone("z")
  59.   tone("z")    
  60.  
  61.   tone("a")
  62.   tone("b")
  63.   tone("c")
  64.   tone("d")
  65.   tone("e")
  66.   tone("f")
  67.   tone("g")
  68.   tone("h")
  69.   tone("i")
  70.   tone("j")
  71.   tone("k")
  72.   tone("l")
  73.   tone("m")
  74.   tone("n")
  75.   tone("o")
  76.  
  77.   tone("1")
  78.   tone("2")
  79.   tone("3")
  80.   tone("A")
  81.  
  82.   tone("4")
  83.   tone("5")
  84.   tone("6")
  85.   tone("B")
  86.  
  87.   tone("7")
  88.   tone("8")
  89.   tone("9")
  90.   tone("C")
  91.  
  92.   tone("*")
  93.   tone("0")
  94.   tone("#")
  95.   tone("D")
  96.  
  97. PUB tone(key) | Index
  98.  
  99.   case key
  100.  
  101.     'Touch Tone DTMF
  102.  
  103.     "1":
  104.       s.synth("A", Left_Audio_Pin, 1209)
  105.       s.synth("B", Right_Audio_Pin, 697)
  106.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  107.       s.silence_a(Left_Audio_Pin)
  108.       s.silence_b(Right_Audio_Pin)
  109.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  110.     "2":
  111.       s.synth("A", Left_Audio_Pin, 1336)
  112.       s.synth("B", Right_Audio_Pin, 697)
  113.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  114.       s.silence_a(Left_Audio_Pin)
  115.       s.silence_b(Right_Audio_Pin)
  116.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  117.     "3":
  118.       s.synth("A", Left_Audio_Pin, 1477)
  119.       s.synth("B", Right_Audio_Pin, 697)
  120.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  121.       s.silence_a(Left_Audio_Pin)
  122.       s.silence_b(Right_Audio_Pin)
  123.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  124.     "4":
  125.       s.synth("A", Left_Audio_Pin, 1209)
  126.       s.synth("B", Right_Audio_Pin, 770)
  127.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  128.       s.silence_a(Left_Audio_Pin)
  129.       s.silence_b(Right_Audio_Pin)
  130.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  131.     "5":
  132.       s.synth("A", Left_Audio_Pin, 1336)
  133.       s.synth("B", Right_Audio_Pin, 770)
  134.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  135.       s.silence_a(Left_Audio_Pin)
  136.       s.silence_b(Right_Audio_Pin)
  137.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  138.     "6":
  139.       s.synth("A", Left_Audio_Pin, 1477)
  140.       s.synth("B", Right_Audio_Pin, 770)
  141.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  142.       s.silence_a(Left_Audio_Pin)
  143.       s.silence_b(Right_Audio_Pin)
  144.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  145.     "7":
  146.       s.synth("A", Left_Audio_Pin, 1209)
  147.       s.synth("B", Right_Audio_Pin, 852)
  148.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  149.       s.silence_a(Left_Audio_Pin)
  150.       s.silence_b(Right_Audio_Pin)
  151.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  152.     "8":
  153.       s.synth("A", Left_Audio_Pin, 1336)
  154.       s.synth("B", Right_Audio_Pin, 852)
  155.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  156.       s.silence_a(Left_Audio_Pin)
  157.       s.silence_b(Right_Audio_Pin)
  158.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  159.     "9":
  160.       s.synth("A", Left_Audio_Pin, 1477)
  161.       s.synth("B", Right_Audio_Pin, 852)
  162.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  163.       s.silence_a(Left_Audio_Pin)
  164.       s.silence_b(Right_Audio_Pin)
  165.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  166.     "0":
  167.       s.synth("A", Left_Audio_Pin, 1336)
  168.       s.synth("B", Right_Audio_Pin, 941)
  169.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  170.       s.silence_a(Left_Audio_Pin)
  171.       s.silence_b(Right_Audio_Pin)
  172.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  173.     "*":
  174.       s.synth("A", Left_Audio_Pin, 1209)
  175.       s.synth("B", Right_Audio_Pin, 941)
  176.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  177.       s.silence_a(Left_Audio_Pin)
  178.       s.silence_b(Right_Audio_Pin)
  179.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  180.     "#":
  181.       s.synth("A", Left_Audio_Pin, 1477)
  182.       s.synth("B", Right_Audio_Pin, 941)
  183.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  184.       s.silence_a(Left_Audio_Pin)
  185.       s.silence_b(Right_Audio_Pin)
  186.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  187.     "A":
  188.       s.synth("A", Left_Audio_Pin, 1633)
  189.       s.synth("B", Right_Audio_Pin, 697)
  190.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  191.       s.silence_a(Left_Audio_Pin)
  192.       s.silence_b(Right_Audio_Pin)
  193.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  194.     "B":
  195.       s.synth("A", Left_Audio_Pin, 1633)
  196.       s.synth("B", Right_Audio_Pin, 770)
  197.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  198.       s.silence_a(Left_Audio_Pin)
  199.       s.silence_b(Right_Audio_Pin)
  200.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  201.     "C":
  202.       s.synth("A", Left_Audio_Pin, 1633)
  203.       s.synth("B", Right_Audio_Pin, 852)
  204.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  205.       s.silence_a(Left_Audio_Pin)
  206.       s.silence_b(Right_Audio_Pin)
  207.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  208.     "D":
  209.       s.synth("A", Left_Audio_Pin, 1633)
  210.       s.synth("B", Right_Audio_Pin, 941)
  211.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  212.       s.silence_a(Left_Audio_Pin)
  213.       s.silence_b(Right_Audio_Pin)
  214.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  215.  
  216.     'Supervisory Signals (2600)
  217.  
  218.     "`": '2600
  219.       s.synth("A", Left_Audio_Pin, 2600)
  220.       s.synth("B", Right_Audio_Pin, 2600)
  221.       waitcnt(clkfreq + cnt)
  222.       s.silence_a(Left_Audio_Pin)
  223.       s.silence_b(Right_Audio_Pin)
  224.       waitcnt(((clkfreq / 1000) * 200) + cnt)      
  225.     "~": 'International
  226.       s.synth("A", Left_Audio_Pin, 2600)
  227.       s.synth("B", Right_Audio_Pin, 2400)
  228.       waitcnt(clkfreq + cnt)
  229.       s.synth("A", Left_Audio_Pin, 2400)
  230.       s.silence_b(Right_Audio_Pin)
  231.       waitcnt(clkfreq + cnt)
  232.       s.silence_a(Left_Audio_Pin)
  233.       waitcnt(((clkfreq / 1000) * 200) + cnt)
  234.  
  235.     'MF / Blue Box
  236.    
  237.     "a": '1
  238.       s.synth("A", Left_Audio_Pin, 700)
  239.       s.synth("B", Right_Audio_Pin, 900)
  240.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  241.       s.silence_a(Left_Audio_Pin)
  242.       s.silence_b(Right_Audio_Pin)
  243.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  244.     "b": '2
  245.       s.synth("A", Left_Audio_Pin, 700)
  246.       s.synth("B", Right_Audio_Pin, 1100)
  247.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  248.       s.silence_a(Left_Audio_Pin)
  249.       s.silence_b(Right_Audio_Pin)
  250.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  251.     "c": '3
  252.       s.synth("A", Left_Audio_Pin, 900)
  253.       s.synth("B", Right_Audio_Pin, 1100)
  254.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  255.       s.silence_a(Left_Audio_Pin)
  256.       s.silence_b(Right_Audio_Pin)
  257.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  258.     "d": '4
  259.       s.synth("A", Left_Audio_Pin, 700)
  260.       s.synth("B", Right_Audio_Pin, 1300)
  261.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  262.       s.silence_a(Left_Audio_Pin)
  263.       s.silence_b(Right_Audio_Pin)
  264.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  265.     "e": '5
  266.       s.synth("A", Left_Audio_Pin, 900)
  267.       s.synth("B", Right_Audio_Pin, 1300)
  268.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  269.       s.silence_a(Left_Audio_Pin)
  270.       s.silence_b(Right_Audio_Pin)
  271.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  272.     "f": '6
  273.       s.synth("A", Left_Audio_Pin, 1100)
  274.       s.synth("B", Right_Audio_Pin, 1300)
  275.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  276.       s.silence_a(Left_Audio_Pin)
  277.       s.silence_b(Right_Audio_Pin)
  278.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  279.     "g": '7
  280.       s.synth("A", Left_Audio_Pin, 700)
  281.       s.synth("B", Right_Audio_Pin, 1500)
  282.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  283.       s.silence_a(Left_Audio_Pin)
  284.       s.silence_b(Right_Audio_Pin)
  285.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  286.     "h": '8
  287.       s.synth("A", Left_Audio_Pin, 900)
  288.       s.synth("B", Right_Audio_Pin, 1500)
  289.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  290.       s.silence_a(Left_Audio_Pin)
  291.       s.silence_b(Right_Audio_Pin)
  292.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  293.     "i": '9
  294.       s.synth("A", Left_Audio_Pin, 1100)
  295.       s.synth("B", Right_Audio_Pin, 1500)
  296.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  297.       s.silence_a(Left_Audio_Pin)
  298.       s.silence_b(Right_Audio_Pin)
  299.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  300.     "j": '0/10
  301.       s.synth("A", Left_Audio_Pin, 1300)
  302.       s.synth("B", Right_Audio_Pin, 1500)
  303.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  304.       s.silence_a(Left_Audio_Pin)
  305.       s.silence_b(Right_Audio_Pin)
  306.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  307.     "k": '11/ST3
  308.       s.synth("A", Left_Audio_Pin, 700)
  309.       s.synth("B", Right_Audio_Pin, 1700)
  310.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  311.       s.silence_a(Left_Audio_Pin)
  312.       s.silence_b(Right_Audio_Pin)
  313.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  314.     "l": '12/ST2
  315.       s.synth("A", Left_Audio_Pin, 900)
  316.       s.synth("B", Right_Audio_Pin, 1700)
  317.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  318.       s.silence_a(Left_Audio_Pin)
  319.       s.silence_b(Right_Audio_Pin)
  320.       waitcnt(((clkfreq / 1000) * 60) + cnt)    
  321.     "m": 'KP
  322.       s.synth("A", Left_Audio_Pin, 1100)
  323.       s.synth("B", Right_Audio_Pin, 1700)
  324.       waitcnt(((clkfreq / 1000) * 100) + cnt)
  325.       s.silence_a(Left_Audio_Pin)
  326.       s.silence_b(Right_Audio_Pin)
  327.       waitcnt(((clkfreq / 1000) * 100) + cnt)    
  328.     "n": 'KP2
  329.       s.synth("A", Left_Audio_Pin, 1300)
  330.       s.synth("B", Right_Audio_Pin, 1700)
  331.       waitcnt(((clkfreq / 1000) * 100) + cnt)
  332.       s.silence_a(Left_Audio_Pin)
  333.       s.silence_b(Right_Audio_Pin)
  334.       waitcnt(((clkfreq / 1000) * 100) + cnt)    
  335.     "o": 'ST
  336.       s.synth("A", Left_Audio_Pin, 1500)
  337.       s.synth("B", Right_Audio_Pin, 1700)
  338.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  339.       s.silence_a(Left_Audio_Pin)
  340.       s.silence_b(Right_Audio_Pin)
  341.       waitcnt(((clkfreq / 1000) * 60) + cnt)
  342.  
  343.     'Automated Coin Toll Service tones / Red Box
  344.  
  345.     "x": 'Nickel
  346.       s.synth("A", Left_Audio_Pin, 1700)
  347.       s.synth("B", Right_Audio_Pin, 2200)
  348.       waitcnt(((clkfreq / 1000) * 66) + cnt)
  349.       s.silence_a(Left_Audio_Pin)
  350.       s.silence_b(Right_Audio_Pin)
  351.       waitcnt(((clkfreq / 1000) * 66) + cnt)
  352.     "y": 'Dime
  353.       repeat Index from 0 to 1
  354.         s.synth("A", Left_Audio_Pin, 1700)
  355.         s.synth("B", Right_Audio_Pin, 2200)
  356.         waitcnt(((clkfreq / 1000) * 66) + cnt)
  357.         s.silence_a(Left_Audio_Pin)
  358.         s.silence_b(Right_Audio_Pin)
  359.         waitcnt(((clkfreq / 1000) * 66) + cnt)
  360.     "z": 'Quarter
  361.       repeat Index from 0 to 4
  362.         s.synth("A", Left_Audio_Pin, 1700)
  363.         s.synth("B", Right_Audio_Pin, 2200)
  364.         waitcnt(((clkfreq / 1000) * 33) + cnt)
  365.         s.silence_a(Left_Audio_Pin)
  366.         s.silence_b(Right_Audio_Pin)
  367.         waitcnt(((clkfreq / 1000) * 33) + cnt)
  368.  
  369. DAT
  370.    
  371. {{
  372. ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  373. │                                                   TERMS OF USE: MIT License                                                  │                                                            
  374. ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
  375. │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation    │
  376. │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,    │
  377. │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
  378. │is furnished to do so, subject to the following conditions:                                                                   │
  379. │                                                                                                                              │
  380. │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
  381. │                                                                                                                              │
  382. │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE          │
  383. │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR         │
  384. │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,   │
  385. │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                         │
  386. └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
  387. }}
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top