Gerador de tones para V/UHF

PIC16F628

 

Código fonte

Então é assim:
 
Para gerar uma onda quadrada á saída do PIC fazemos com que essa saída passe de 0 a 1 um numero de vezes por segundo (Hz). Mas como vamos fazer isto? Se o colega já leu algo sobre os PIC's tem verificado que existe um Timer chamado TMR0, pois é esse timer que vamos utilizar, no entanto existem outros Timers no PIC como o TMR1 (este muito útil pois é de 16bits) e o TMR2.
Mas como vamos utilizar o TRM0, teremos assim:
Numero de Interrupções por segundo = Fosc / 4 / Prescaler /TMR0
Para 123Hz com o PIC a funcionar a 4MHz teremos assim:
123/1000000 = 0.000123 --> 0.000123=4/4/32/TMR0 -> TMR0= 1/0.000123/32=254, como para termos uma onda quadrada teremos que ter metade a 1 e outra metade a 0, sendo assim teremos que dividir por 2, que é igual a 127, este será o valor do TMR0, Mas como o TMR0 é um TImer de 8 Bits e "estoura" a cada 256 teremos o seguinte: 256-127 = 129.
 
Se iniciarmos o Prescaler com 1:32 e o TMR0 com 129, teremos uma interrupção de 123Hz.
 
Eu aconselho a utilização do PIC16F628 ou PIC16F628A, pois este alem de ser compatível com o PIC16F84A, tem a possibilidade de utilizar o oscilador interno, o que nos faz poupar um cristal e 2 condensadores, utilizar esses I/O's que se destinavam para o oscilador externo, este também tem o dobro de memoria etc. etc. (aconselho ler o data sheet em http://ww1.microchip.com/downloads/en/DeviceDoc/40044b.pdf)
 
Sendo assim para o PIC16F628A com oscilador e reset Internos o Código Fonte anexo serve para gerar as frequências seguintes :
67, 71.9, 74.4, 77, 79.7, 82.5, 85.4, 91.5, 94.8, 97.4, 100, 103.5, 107.2, 114.8, 118.8, 123, 127.3, 131.8, 136.5, 141.3, 146.2, 151.4, 156.7, 162.2, 167.9, 173.8, 179.9, 186.2, 192.8, 203.8, 210.7, 218.1, 225.5,233.6, 241.8, 250.3, 1750, 1800Hz.
 
Para gerar esses tons tem que configurar o PORTA do pic de acordo com a tabela:
A saída é no PINO 13 (RB7)
 
FREQ. PINO 16 PINO 15 PINO 4 PINO 3 PINO 2 PINO 1 PINO 18 PINO 17
0 0 0 0 0 0 0 0
67 0 0 0 0 0 0 0 1
71,9 0 0 0 0 0 0 1 0
74,4 0 0 0 0 0 0 1 1
77 0 0 0 0 0 1 0 0
79,7 0 0 0 0 0 1 0 1
82,5 0 0 0 0 0 1 1 0
85,4 0 0 0 0 0 1 1 1
88,5 0 0 0 0 1 0 0 0
91,5 0 0 0 0 1 0 0 1
94,8 0 0 0 0 1 0 1 0
97,4 0 0 0 0 1 0 1 1
100 0 0 0 0 1 1 0 0
103,5 0 0 0 0 1 1 0 1
107,2 0 0 0 0 1 1 1 0
110,9 0 0 0 0 1 1 1 1
114,8 0 0 0 1 0 0 0 0
118,8 0 0 0 1 0 0 0 1
123 0 0 0 1 0 0 1 0
127,3 0 0 0 1 0 0 1 1
131,8 0 0 0 1 0 1 0 0
136,5 0 0 0 1 0 1 0 1
141,3 0 0 0 1 0 1 1 0
146,2 0 0 0 1 0 1 1 1
151,4 0 0 0 1 1 0 0 0
156,7 0 0 0 1 1 0 0 1
162,2 0 0 0 1 1 0 1 0
167,9 0 0 0 1 1 0 1 1
173,8 0 0 0 1 1 1 0 0
179,9 0 0 0 1 1 1 0 1
186,2 0 0 0 1 1 1 1 0
192,8 0 0 0 1 1 1 1 1
203,5 0 0 1 0 0 0 0 0
210,7 0 0 1 0 0 0 0 1
218,1 0 0 1 0 0 0 1 0
225,7 0 0 1 0 0 0 1 1
233,6 0 0 1 0 0 1 0 0
241,8 0 0 1 0 0 1 0 1
250,3 0 0 1 0 0 1 1 0
1750 0 0 1 0 0 1 1 1
1800 0 0 1 0 1 0 0 0