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 |