UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E

Transcrição

UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÒGICAS
ENGENHARIA ELÉTRICA
Renata Costa Martins
SISTEMA DE TARIFADOR/BLOQUEDOR COM ROTEAMENTO DE
OPERADORA PARA LIGAÇÕES INTERURBANAS
Curitiba, 2008
II
RENATA COSTA MARTINS
SISTEMA DE TARIFADOR/BLOQUEDOR COM ROTEAMENTO DE
OPERADORA PARA LIGAÇÕES INTERURBANAS
Monografia apresentada ao Curso de
Engenharia Elétrica da Universidade Positivo,
para obtenção de avaliação parcial da disciplina
de Trabalho de Conclusão de Curso (TCC),
como
requisito
à
obtenção do
grau
de
Engenheiro Eletricista, sob a orientação do Prof.
Anselmo Rodrigues
Curitiba, 2008
III
Dedico este trabalho ao meu filho amado Gabriel e ao
meu marido Napoleão
IV
AGRADECIMENTOS
Agradeço a DEUS por ter me concedido a força,
persistência diária que permitiu continuar em busca do
meu objetivo
Aos meus pais pelo apoio moral e econômico ao longo
dessa jornada, especialmente a minha mãe que cuidou do
meu
filho
durante
todos
esses
anos.
Agradeço
imensamente ao meu marido, Napoleão que sempre esteve
ao meu lado me incentivando e jamais me deixou desistir.
E não poderia deixar de agradecer ao orientador,
professor Anselmo Rodrigues e professora integrante da
banca, professora Ana Cristina Firmino e ao aluno
Alanderson da Luz, aluno e funcionário Fernando
Guimarães Teodoro e ao funcionário Bruno Alberti
Strapasson que me auxiliaram no uso dos equipamentos
dos laboratórios.
V
LISTA DE FIGURAS
Figura 1 – Códigos de área utilizados no Brasil ........................................................ 6
Figura 2– Teclado DTMF associado ao grupo de freqüências ................................... 8
Figura 3- Visão Geral do Projeto............................................................................ 10
Figura 4- Diagrama em blocos ............................................................................... 10
Figura 5 – Circuito esquemático do projeto ............................................................ 14
Figura 6– Diagrama Esquemático do circuito identificador de tons DTMF ............. 16
Figura 7– Diagrama Esquemático do circuito discador ........................................... 17
Figura 8 – Esquemático Circuito Microncotrolador PIC ......................................... 18
Figura 9 – Fluxograma de programação ................................................................. 20
Figura 10-Simulador de tons DTMF....................................................................... 21
Figura 11 – Circuito discador de tons DTMF.......................................................... 22
Figura 12- Interligação da placa DTMF com a placa didática do PIC ..................... 23
Figura 13 – Circuito discador na placa universal .................................................... 24
Figura 14- Circuito de acoplamento com a linha telefônica..................................... 24
Figura 15– Todos os circuitos do projeto interligados............................................. 25
Figura 16 – Protótipo inicial................................................................................... 26
Figura 17 – Placa final ........................................................................................... 27
Figura 18 - Imagem do protótipo final .................................................................... 27
Figura 19 – Negativo da placa identificador de tons DTMF.................................... 28
Figura 20– Negativo da placa do discador .............................................................. 29
Figura 21– Negativo da placa roteada..................................................................... 29
Figura 22 – Negativo da placa do protótipo final .................................................... 30
Figura 23 – Placa protótipo final roteada. ............................................................... 31
Figura 24 - Informações do display ........................................................................ 35
Figura 25 – Telefone no gancho ............................................................................. 36
VI
Figura 26 – Chamado local..................................................................................... 36
Figura 27 – Processo de encaminhamento de chamada interurbana......................... 37
Figura 28 – Chama interurbana .............................................................................. 38
Figura 29 – Menu de acesso a configuração de tarifa local e bloqueio celular ......... 39
Figura 30 – Bloqueio de chamadas para celular. ..................................................... 39
Figura 31 – Menu de acesso a configuração das tarifas interurbanas ...................... 40
VII
LISTA DE QUADROS E TABELAS
Quadro 1 - Destinação numérica .............................................................................. 5
Quadro 2– Prefixos .................................................................................................. 5
Quadro 3– Decodificação do MT8870.................................................................... 15
Quadro 4 – Lista de materiais e custos.................................................................... 32
VIII
LISTA DE SÍMBOLOS/ABREVIATURAS/SIGLAS
ANATEL – Agência Nacional de Telecomunicações
Datasheet- (significa folha de dados) é um termo técnico usado para identificar um
documento relativo a um determinado produto
DDD – Discagem Direta Distância
DDI – Discagem Direta Internacional
DTMF – Dual Tone Mulfrequency (Tons Multifrquênciais)
Hardware – é a parte física , é o conjunto de componentes eletrônicos, circuitos
integrados e placas, que se comunicam através de barramentos
LCD - Liquid Crystal Display (Display de Cristal Líquido)
ohm Ω - É a unidade de medida da resistência elétrica, padronizada pelo SI(Sistema
Internacional de Unidades).
PABX - Private Automatic Branch Exchange (Troca automática de ramais privados)
PIC – Peripherical Interface Controller (Controle integrado de periféricos)
STFC – Serviço Telefone Fixo Comutado
Software - é a parte lógica, ou seja, o conjunto de instruções e dados processado
pelos circuitos eletrônicos do hardware
UIT – União Internacional de Telecomunicações
VCC – Common - Colletor Voltage(Tensão de coletor comum)
Volt-V- é a Unidade SI(Sistema Interncional de Unidades) de tensão elétrica.
IX
SUMÁRIO
1. INTRODUÇÃO ...........................................................................................................................1
1.2 JUSTIFICATIVA ...................................................................................................................2
1.3 OBJETIVOS ESPECÍFICOS...................................................................................................2
2. FUNDAMENTAÇÃO TEÓRICA...............................................................................................4
2.3 PLANOS DE NUMERAÇÃO .................................................................................................4
2.2 FUNCIONAMENTO DO APARELHO TELEFÔNICO...........................................................6
3.1 VISÃO GERAL DO PROJETO........................................................................................................9
3.2 DESCRIÇÃO FUNCIONAL DOS BLOCOS......................................................................................11
3.2.1 Terminal telefônico........................................................................................................11
3.2.2 Identificador de tons DTMF...........................................................................................11
3.2.3 Circuito discador de chamadas......................................................................................12
3.2.4 Microcontrolador ..........................................................................................................12
3.2.5 Interface Homem Máquina ............................................................................................13
3.3 DIMENSIONAMENTO E MEMORIAL DE CÁLCULO.......................................................................13
3.3.2 Circuito Discador de Chamadas ....................................................................................16
3.3.3 Microcontrolador ..........................................................................................................18
3.3.4 PROGRAMAÇÃO ..................................................................................................................19
3.4.1 Descrição geral .............................................................................................................19
3.4.2 Planejamento ................................................................................................................19
4. IMPLEMENTAÇÃO ................................................................................................................21
4.1 DESCRIÇÃO DA MONTAGEM ..........................................................................................21
4.2 TESTES, MEDIÇÕES E CONFIGURAÇÕES. ......................................................................21
4.3 CÓDIGO FONTE .................................................................................................................28
4.4 PLACAS DE CIRCUITO IMPRESSO (PCB) ........................................................................28
4.5 CUSTOS DO PROJETO ..............................................................................................................32
5. RESULTADOS..........................................................................................................................35
X
5.1 TELEFONE NO GANCHO...................................................................................................35
5.2 CHAMADA LOCAL ............................................................................................................36
5.3 CHAMADA INTERURBANA..............................................................................................37
5.4 CONFIGURAÇÕES DE TARIFA LOCAL E BLOQUEIO DE CHAMADAS .................................38
REFERÊNCIAS BIBLIOGRÁFICAS..........................................................................................42
APÊNDICE A – MANUAL DE OPERAÇÃO..............................................................................43
APÊNDICE B – CÓDIGO FONTE ..............................................................................................46
1
1. INTRODUÇÃO
A privatização 1do setor de telecomunicações teve início com a venda de licenças da
banda B de telefonia celular em 1996 e culminou com a venda do Telebrás em junho de 1998.
A Telebrás controlava várias prestadoras de serviços telefonicos no país. O fornecimento de
serviços interurbanos no Brasil era monopolizado, isso significa que sempre que houvesse a
necessidade de fazer uma ligação interestadual e internacional, a Embratel era responsável
pelo encaminhamento das ligações.
Durante a campanha eleitoral de Fernando Henrique Cardoso surgiu à decisão da
privatização do setor de telecomunicações no Brasil. Em agosto de 1995, iniciou-se a
reestruturação a partir da aprovação da Emenda Constitucional onde foi autorizada à
exploração dos serviços por empresas privadas. A Lei Mínima surgiu em julho de 1996,
possibilitando a competição no serviço móvel celular e outorga de licenças para as operadoras
atuantes no mercado.
O modelo de telecomunicações foi reformado a partir da aprovação da Lei Geral das
Telecomunicações (a Lei nº 9.472/1997).
Sendo assim a partir de 31 de dezembro de 2001 deixou de existir um limite para o
número de prestadores de serviço telefone fixo comutado (STFC) e a Anatel tem outorgado
novas autorizações para várias empresas. As empresas privatizadas do sistema Telebrás
receberam as concessões para prestação de serviço telefone fixo comutado (STFC). As demais
prestadoras de STFC foram outorgadas autorizações.
A cristalização desses acontecimentos impulsionou a competividade e o surgimento
de diversos fornecedores de serviço telefone fixo comutado (STFC). O trabalho que aqui é
apresentado é fruto do resultado gerado, que foi a diversidade de operadoras capazes de
oferecer à população a liberdade de escolha da operadora quando necessário o
encaminhamento de chamadas interurbanas.
1
Processo de venda de uma empresa ou instituição do setor público
2
Com a quebra do monopólio no fornecimento de serviços interurbanos, deixou de
existir qualquer limite ao número de autorizações para a prestação do STFC 2. O usuário
passou a ter opção de escolha ao cursar suas ligações DDD 3 e DDI
4
entre diversas
fornecedoras de serviços telefônicos para chamadas de longa distância.
Com isso, o critério de escolha da operadora em função da tarifação tornou-se um
problema para o usuário no momento da escolha da operadora. Para o consumidor escolher a
tarifa mais em conta é necessário que o mesmo conheça todos os planos de desconto de todas
as operadoras existentes no mercado além de ter que buscar código de seleção da prestadora.
1.2 JUSTIFICATIVA
Com a diversidade de prestadoras de serviço telefônico, é inviável a memorização
dos códigos atrelados a cada uma, bem como os valores tarifários oferecidas pelas mesmas.
Este projeto busca uma relação custo benefício satisfatório ao usuário final. Tendo em vista
que, para o mesmo a utilização de uma ou outra operadora é indiferente desde que o serviço
seja satisfatório no que diz respeito tanto aos aspectos técnicos envolvidos na conexão quanto
no custo da ligação, ou seja, possibilitar o controle dos custos de utilização do sistema.
1.3 OBJETIVOS ESPECÍFICOS
Construir um sistema capaz de selecionar dentre as principais operadoras existentes
no mercado, a que ofereça o menor custo por chamada em função do destino das ligações.
Além disto, o sistema deverá ser capaz de impor restrições para determinadas chamadas.
O sistema também irá atuar como um tarifador de chamadas, pois será a visualização
do valor final das ligações.
2
Concessionárias do Serviço Telefônico Fixo Comutado - STFC
3
DDD – Discagem Direta Distância
4
DDI - Discagem Direta Internacional
3
Portanto, a finalidade desse projeto é traçar uma rota de menor custo de chamadas
interurbanas utilizando como critério de decisão o menor valor de tarifa por operadora.
O sistema foi projetado apenas para uso residencial, já que atualmente os PABX de
pequeno a grande porte agregam esta facilidade em seu processamento interno, sendo
facilmente programáveis diversas rotas de menor custo.
Será necessário inserir rotinas capazes de:
- interpretar códigos gerados pelo DTMF;
- converter tempo de chamadas em reais;
- usar rotinas DTMF para discar número do usuário;
- administrar a tabela de restrições de chamada
- rotinas capazes de ler display LCD
4
2. FUNDAMENTAÇÃO TEÓRICA
A Anatel5 utiliza o termo Serviço Telefônico Comutado (STFC) para caracterizar a
prestação de serviços de telefonia fixa no Brasil.
A telefonia fixa proporciona as seguintes modalidades de serviço:
- serviço local;
- serviço de longa distância nacional;
- serviço de longa distância internacional.
As modalidades de serviços citadas são ofertadas por empresas operadoras de
telecomunicações. Assim é possível classificar como operadora local de telefonia as empresas
envolvidas com serviços locais e operadoras de longa distância Nacional e internacional como
operadora de longa distância.
2.3 PLANOS DE NUMERAÇÃO
Cada assinante do sistema telefônico, seja ele fixo ou celular, tem associado um
conjunto de números ou códigos de acesso que permitem que ele seja único em todo o mundo.
O plano numérico é constituído por: código do país, código nacional e código de
acesso de usuário.
Para permitir a busca de um assinante na rede mundial, A União Internacional de
Telecomunicações (UIT) definiu o plano de Numeração Internacional, definindo o código de
cada país.
No Brasil a Anatel identifica os terminais telefônicos através de dois códigos:
Código Nacional e Código de Acesso de Usuário.
5
Agência Nacional de Telecomunicações, órgão responsável pela regulamentação e fiscalização dos serviços de
telecomunicações no Brasil.
5
O código de acesso ao usuário ou número telefônico é constituído por oito dígitos,
sendo que primeiro número deste código identifica o serviço ao qual o código está vinculado.
Através da tabela 1, é possível identifica a destinação numérica.
Quadro 1 - Destinação numérica6
Fonte: http://www.teleco.com.br/tutoriais/tutorialnum/pagina_1.asp
Para identificar o tipo de chamada, são utilizados os prefixos. O quadro 2 apresenta
tais prefixos e respectiva destinação.
Quadro 2– Prefixos
Fonte: http://www.teleco.com.br/num.asp
O código nacional também conhecido como código de área ou DDD identifica uma
área geográfica específica do território nacional. É composto por dois caracteres numérico e
único e exclusivo para cada área do país.
6 A faixa de numeração com primeiro dígito 6 era utilizada em São Paulo para a telefonia fixa. A
Anatel anunciou em 2008 a migração destas faixas de numeração para outras com primeiro dígito 2.
A migração deve estar concluída até Out./08. As faixas com Digito 6 serão destinadas a telefonia
celular.
6
Antes da Lei Geral das Telecomunicações todas as ligações interurbanas, eram
automaticamente encaminhadas via Embratel, assim a discagem do “zero” e os primeiros
algarismos do código de área determinavam à operadora. Com o surgimento de novas
operadoras foi necessário alterar a estrutura da numeração. Denominado de Código de seleção
de prestadora (CSP), nas modalidades Longa Distância Nacional e Longa Distância
Internacional.
O mapa ilustrado na figura 2 identifica os códigos de área no país.
Figura 1 – Códigos de área utilizados no Brasil
Fonte: http://www.telecom.com.br/num.asp
2.2 FUNCIONAMENTO DO APARELHO TELEFÔNICO
O telefone é caracterizado como um equipamento eletrônico é alimentado por
corrente contínua (DC). Este dispositivo eletrônico além de permitir a conversação entre os
assinantes de uma rede de telefonia, está constantemente enviando informações para a central
telefônica pública. Ou seja, o aparelho telefônico é responsável por duas funções: sinalização
e conversação.
O aparelho telefônico troca com a central de comutação as seguintes sinalizações:
- Conexão
7
- Endereço do assinante
- Toque
- Desconexão
Quando o monofone está no gancho, existe um enlace formado pelo aparelho, linha
telefônica e no equipamento de comutação. Este enlace é caracterizado como circuito aberto,
ou seja, existe uma tensão alimentando a linha telefônica, mas não existe uma circulação de
corrente contínua.
De acordo com Wirth e Junior:
Quando o monofone é retirado do gancho o enlace é fechado
e então passa a existir a circulação de corrente contínua pelo aparelho.
Esta corrente é função da tensão e resistência da ponte alimentação
(do equipamento de comutação), da resistência da linha e do aparelho.
Neste instante, ocorre a primeira sinalização, entre o aparelho
e o equipamento de comutação que é a conexão, ou seja, ao retirar o
monofone do gancho, o usuário está informando ao equipamento de
comutação que ele deseja efetuar uma ligação. Esta informação chega
ao equipamento de comutação, através da corrente circulante (devido
ao fechamento do enlace) que aciona o relé de linha do assinante.
Quando o usuário recebe do equipamento o sinal de linha,
inicia-se a segunda sinalização, do aparelho telefônico, que é a
digitação (discagem ou teclagem), informando ao equipamento o
endereço (número do assinante) do assinante chamado. [Wirth, 2001,
página 29], [Junior, 2001, página29].
Atualmente os teclados são providos pelo teclado multifrequêcial, este tipo de
teclados são caracterizados pelo envio de informações de tons multifrequênciais ou DTMF 7.
7
Sigla de Dual Tom Multifrequency, tons de duas freqüências utilizados na discagem dos
telefones mais modernos.
8
Neste tipo de teclado, ao se pressionar as teclas, ativa a emissão de um par de
freqüências que é enviada a central de comutação, que por sua vez filtra e identifica o par
como o grupo de freqüências de um número predeterminado.
Cada par de tons é único atribuído a cada tecla. Esses sinais são transmitidos para a
rede de comutação que imediatamente reconhece as teclas e determina o número de telefone a
ser discado.
Cada dígito possui um par de freqüências como mostra a figura a 3.
Figura 2– Teclado DTMF associado ao grupo de freqüências
Fonte: A autora
Como pode ser observado o número "5" está localizado na segunda coluna onde a
freqüência atribuída é 1336 Hz, e também está na segunda linha do teclado onde a freqüência
correspondente é 770 Hz. Então quando esta tecla é pressionada, ambas as freqüências são
acionadas.
As freqüências para as linhas e colunas foram selecionadas com precisão tal que o
ruído e harmônicos introduzidos no sinal durante a transmissão não fazem a freqüência
ambígua.
9
3. ESPECIFICAÇÕES TÉCNICAS PRELIMINARES
Este capítulo traz em suas subseções o detalhamento técnico do projeto em diagrama
em blocos, fluxogramas de programações e dimensionamento dos componentes empregados.
As partes que integram esse projeto constituem do somatório de hardware e
software, resultando em um console apropriado para a conexão com o telefone. Um display
associado ao console permite que o usuário tenha acesso a todas as informações; tarifação,
número digitado e menu de configuração(interface homem máquina).
O hardware do console é formado por um detector de DTMF, discador e
microprocessador, capazes de interpretar as informações enviadas tanto pelo aparelho
telefônico quanto pelo teclado multifrequencial.
3.1 VISÃO GERAL DO PROJETO
Quando o usuário teclar os dígitos que caracteriza uma chamada de longa distância
um circuito detector de DTMF em série com o sistema enviará a informação a um
microcontrolador8 (os dígitos inseridos) para que o processador tome a decisão de qual
operadora utilizar, consultando os valores inseridos através da interface homem máquina
(display e teclado). Essas informações (número do destino + código DDD) serão envidas a um
circuito discador que terá a função de completar a chamada otimizada, em relação ao custo e
com a seleção automática do código da operadora.
Inerente a esse sistema é possível à criação de outras facilidades, tendo e vista
que o microprocessador fará a leitura do número discado. Essas facilidades podem incluir
restrições quando o proprietário do sistema optar por limitar chamada como, por exemplo,
celular e DDI.
A figura 3 traz uma visão geral do projeto proposto.
8
Circuito integrado, dispositivo microeletrônico capaz de desempenhar várias funções.
10
Figura 3- Visão Geral do Projeto
Fonte: A autora
O diagrama em blocos da figura 4 apresenta os principais circuitos que compõem o
projeto.
Figura 4- Diagrama em blocos
Fonte: A autora
11
3.2 DESCRIÇÃO FUNCIONAL DOS BLOCOS
As funcionalidades dos principais circuitos que compõem o projeto estão descritos
nas subseções a seguir.
3.2.1 Terminal telefônico
O telefone além de ser o meio responsável para estabelecer a conversação é também
responsável pela sinalização ao microcontrolador da existência de uma chamada em curso.
Através do teclado multifrequencial do aparelho é que o sistema será capaz de
identificar o tipo de chamada, (interurbana, local ou internacional) e iniciar a execução das
rotinas.
Quando o monofone é retirado do gancho o sistema é acionado, já que passa a existir
uma circulação de corrente.
3.2.2 Identificador de tons DTMF
Este circuito é responsável pelo recebimento e decodificação dos dígitos enviados
pelo teclado do aparelho.
Ao receber os dígitos, este circuito identifica qual o foi o algarismo digitado através
do grupo de freqüências específica para cada dígito, como já explicado anteriormente.
Então, estes dígitos são transformados em um código digital de quatro bits e
enviados ao barramento de dados conectado ao microcontrolador que por sua vez, fará a
distinção com relação ao tipo de chamada (local, interurbana, internacional, celular) e iniciar
o processo de escolha da operadora, encaminhamento da chamada e tarifação, de acordo com
os critérios pré-estabelecidos.
O circuito que compõe este bloco é a interface de comunicação entre o telefone e o
microcontrolador.
12
3.2.3 Circuito discador de chamadas
Este circuito tem a função de encaminhar para a central de comutação as informações
provenientes do microcontrolador para que a chamada seja completada. Ou seja, após o
microcontrolador consultar a sua base interna e selecionar a operadora, este circuito que é um
gerador de tons DTMF, decodifica a seqüência de bits originados do microcontrolador, em
números decimais que correspondem ao número de telefone do destino.
O circuito que compõe este bloco tem a função inversa do circuito de identificador
de tons DTMF, que transforma os dígitos em seqüência de dados, enquanto que o discador
decodifica essa seqüência em dígitos. O princípio de funcionamento é o mesmo, cada
algarismo corresponde à soma de um determinado grupo de freqüências.
3.2.4 Microcontrolador
Este bloco pode ser visto como a “espinha dorsal” do projeto. Já que este circuito
tem todo o controle das rotinas de programações, fazendo com que o sistema seja processado.
O microcontrolador está integrado com todos os blocos de maneira direta ou indireta, portanto
envia aos outros circuitos todas as informações executáveis do sistema.
Quando o monofone é retirado do gancho o microcontrolador identifica que uma
chamada está prestes a ser iniciada. Então os algarismos digitados no teclado multifrequêncial
são decodificados pelo circuito identificador de tons DTMF que envia para o
microcontrolador, este por sua vez, ao receber esta seqüência de algarismos em formato
binário, faz o devido processamento, quanto ao formato da chamada, conversão de tempo em
reais, contagem de tempo, permissão da chamada e acesso ao menu de configuração.
Ao ocorrer à inserção de dígitos que é identificado como sendo uma chamada de
longa distância, o microprocessador armazena os algarismos para enquanto consulta a
operadora destinada a tal ligação e então ao término desse processo envia para o circuito
discador de chamadas para que este possa concretizar a chamada.
A chamada local não habilita o circuito discador de chamadas, porém ao término de
discagem do oitavo dígito (quantidade de dígitos que caracteriza a chamada local), o
microcontrolador executa a contagem do tempo da ligação e tarifação. Ambas as funções são
possíveis de ser visualizadas no display.
13
Caso os dígitos recebidos pela porta de leitura do microcontrolador sejam
identificados como um número restrito (configurável pelo usuário) como, por exemplo, uma
chamada para celular, o display apresentará a mensagem: “CHAMADA NÃO PERMITIDA”
e o sistema não vai permitir a continuidade da chamada.
3.2.5 Interface Homem Máquina
A interface homem máquina é assim denominada, pois permite interação do ser
humano com o mundo tecnológico. Portanto o objetivo deste bloco é que o usuário tenha
acesso a um menu que possa ser facilmente acionado.
É constituído pelo display e pelo teclado multifrequencial do próprio aparelho
telefônico.
Através do teclado, poder ser habilitado o acesso ao menu de configuração onde é
possível alterar quando necessário, as tarifas das operadoras de longa distância, operadora
local e habilitar ou desabilitar a restrição de chamadas.
O display permite a visualização das ações que estão sendo realizadas no menu, além
de sempre permitir a visibilidade do tempo da chamada, tarifação e seqüência dos algarismos
digitados no teclado.
3.3 DIMENSIONAMENTO E MEMORIAL DE CÁLCULO
Os circuitos que constituem o sistema estão apresentados nas seções a seguir com os
respectivos diagramas esquemáticos separadamente. Na figura 5 é possível ter uma visão
geral de todos os circuitos do projeto interligados.
Este esquemático foi utilizado para confeccionar uma única placa de circuito
impresso que acomodasse todos os circuitos integrantes do projeto.
14
Figura 5 – Circuito esquemático do projeto
Fonte: A autora
15
3.3.1 Circuito identificador de Tons DTMF
Para desempenhar esta função é necessário um receptor (receiver) de DTMF, capaz
de decodificar esses tons. Para tanto, o CI 9 dimensionado foi o MT 8870. Este componente
possui compatibilidade com todos os microcontroladores da Microchip, famílias 16F e 18 F.
O CI escolhido recebe e decodifica os pares de freqüência de tons DTMF e transmite
ao microcontrolador em uma seqüência de dados formado por quatro bits os algarismos
correspondentes ao digitado no teclado conforme pode ser observado na figura 6.
Quadro 3– Decodificação do MT8870
Fonte: http://www.rogercom.com [maio, 2008]
O diagrama esquemático do circuito pode ser observado na figura 6. Este circuito e
os componentes eletrônicos empregados para a confecção do mesmo foram dimensionados
conforme sugestão do fabricante. [Datasheet MT 8870, 2008, página 15].
9
Circuito integrado
16
Figura 6– Diagrama Esquemático do circuito identificador de tons DTMF
Fonte: A autora
O tom DTMF do aparelho telefônico entra pelo conector J2 e passa pelo capacitor C1
e prossegue pelos resistores R1 e R2, os pinos Q4 a Q1 são os pinos de barramento para
interligação com o microcontrolador, é através desses pinos que os níveis lógicos apresentado
na tabela da figura 5 são transmitidos ao microprocessador.
A freqüência entra através do capacitor cerâmico de 100nF e prossegue pelos
resistores de 100k até os pinos IN e GS. Quando uma freqüência é reconhecida, o CI converte
em um valor binário e disponibiliza-o nos pinos Q1 a Q4. A cada informação decodificada o
pino STD é ativado, mantendo-o em nível alto por alguns milissegundos e na seqüência
retorna ao nível baixo.
No esquema é possível observar que os pinos Q1 a Q4 também são identificados por
C0, C1, C2, C3, C4. Isto significa que esse barramento está interligado com os pinos do
microcontrolador chamados de C0, C1, C2, C3 e C4.
3.3.2 Circuito Discador de Chamadas
Este circuito é formado pelo CI HT 9200B, o diagrama esquemático pode ser
observado na figura 7 e foi projetado de acordo com a sugestão do fabricante [Datasheet HT
17
9200B, 2008]. Os valores dos resistores, R9, R10, R11 e R2 são de 1KΩ e tema função pull
down10.
O circuito gera um sinal correspondente aos algarismos do telefone de destino.
A citação abaixo esclarece o processo de transmissão dos dados para
microcontrolador.
Como o nível lógico baixo no pino CE, é habilitado o envio
dos dados do microcontrolador para o circuito gerar os sinais DTMF.
Através do pino DTMF, são enviados os dados correspondentes aos
algarismos a serem codificados. [Sornas, 2005, pg. 24] [Ruggieri,
2005, pg.24]
Figura 7– Diagrama Esquemático do circuito discador
Fonte: A autora
10
São usados para armazenar a entrada em valor zero(baixo) quando nenhum outro componente
estiver conduzindo a entrada
18
3.3.3 Microcontrolador
O microcontrolador escolhido foi o PIC 18F452 do fabricante Microchip. A
quantidade de portas existentes nesse microcontrolador, memória interna e facilidade de
encontrar referências bibliográficas foram os critérios utilizados para a escolha desse
componente.
O diagrama esquemático e as conexões da placa do PIC estão representados na figura
8. Este circuito foi dimensionado de acordo com o esquemático da placa didática do PIC da
Universidade Positivo. [http://eletrica.unicenp.edu.br/].
Figura 8 – Esquemático Circuito Microncotrolador PIC
Fonte: A autora
19
3.3.4 Programação
O microcontrolador PIC é programável em linguagem de programação Assembler.
Para facilitar a didática da programação foi utilizado o software PIC C da CCS como
ambiente de programação e compilador. Este programa além de oferecer o ambiente de
programação em linguagem C, também faz compilação, ou seja, transforma toda a
programação elaborada em linguagem C para a linguagem Assembler que a linguagem que
microcontrolador aceita.
Quando PIC C compila o programa é gerado um arquivo com a extensão hex este
arquivo é importado para outro software que tem a função de gravar o arquivo no PIC, o
programa utilizado para desempenhar esta função foi WinPIC.
3.4.1 Descrição geral
O software é o principal responsável pelo desempenho das tarefas desempenhadas
pelo sistema,
-Identificação e interpretação dos dados enviados pelo circuito identificador de
tons DTMF
- Monitoramento e Controle do monofone no gancho;
- Envio de dados para o circuito discador
- Controle de acesso ao menu de configuração
- Envio de dados para o display
- Controle de acionamento do circuito de acoplamento
3.4.2 Planejamento
O fluxograma da figura 9 mostra as tarefas que são as executas pelo software.
20
Figura 9 – Fluxograma de programação
Fonte: A Autora
21
4. IMPLEMENTAÇÃO
4.1 DESCRIÇÃO DA MONTAGEM
Todos os blocos que compõem o projeto foram montados e testados na matriz de
contatos. Á medida que o sucesso do funcionamento de cada bloco era obtido, partia-se então
para a confecção da placa de circuito impresso. Esta estratégia foi adotada com objetivo de
garantir uma boa apresentação e organização na etapa de implementação e para garantir que o
protótipo estivesse pronto na etapa de qualificação.
Foi utilizada a placa didática do PIC para programar, gravar e testar o
microcontrolador. Como esta placa possui diversas aplicações, também houve a necessidade
de confeccionar a placa separadamente. De acordo com o diagrama esquemático foi possível
desmembrar e colocar em circuito impresso, apenas os circuitos que apresentassem
funcionalidades para aplicação deste projeto.
4.2 TESTES, MEDIÇÕES E CONFIGURAÇÕES.
Para testar o decodificador de DTMF MT8870, utilizou-se a matriz de contatos para
a montagem do circuito.
Nos
barramentos
de
dados
foi
adotado
o
uso
de
LED´S
com
a finalidade de testar a codificação dos dígitos. Para simular o teclado do aparelho telefônico
foi utilizado foi utilizado um software chamado “Wintone” instalado no computador,
conforme mostrado na figura 10.
Figura 10-Simulador de tons DTMF
22
Fonte: Wintone
Este teste foi bem sucedido, quando era digitado o número 1, por exemplo, somente
o último led ficava aceso, ou seja, haviam sido enviados os níveis lógicos 0001. Então, este
teste foi repetido para todos os algarismos.
Como o sucesso desse circuito, foi realizado a confecção da placa de circuito
impresso do circuito identificador de tons DTMF. O resultado final da placa pode ser visto na
figura 11.
Figura 11 – Circuito discador de tons DTMF
Fonte: A autora
Com o sucesso desse teste, possível partir para a uma próxima etapa do projeto.
Etapa de programação e integração desse circuito com o microcontrolador. Para que fosse
possível a realização desta nova etapa, foi necessário adotar o uso da placa didática do PIC.
As programações foram implementadas e testadas com sucesso, portanto foi possível
visualizar no display da placa didática todos os dígitos enviados pelo DTMF.
Ainda nesta etapa foi utilizado o simulador de tons DTMF instalado em um
computador.
23
Á medida da evolução da programação, todas as funcionalidades eram devidamente
testadas.
Na figura 12, pode ser visualizada a interligação da placa de tons DTMF com a placa
didática do PIC.
Figura 12- Interligação da placa DTMF com a placa didática do PIC
Fonte: A autora
Com o identificador de tons DTMF em pleno funcionamento com o PIC, então foi
projetado o circuito discador de chamadas e acoplado aos circuitos existentes (PIC e gerador
de tons DTMF). Este circuito foi montado diretamente na placa universal.
A implementação desse circuito não ocasionou grandes dificuldades em termos
técnicos, no entanto houve uma grande dificuldade para encontrar o CI HT9200B na cidade
de Curitiba. Então foi necessário adquirir o CI via internet e o tempo de entrega do
componente pelo fornecedor se estendeu mais do que se esperava. Por essa razão esse circuito
foi o último a ser construído e testado. A figura 13 mostra a imagem do circuito discador de
chamadas na placa universal
24
Figura 13 – Circuito discador na placa universal
Fonte: A autora
Com o encerramento dos testes da etapa de programação e integração com o PIC
então surgiu à etapa de integração de todo o projeto com a linha telefônica.
Esta fase do projeto surgiu algumas dificuldades, a sinalização da linha telefônica
depende da central pública de comutação, isso implica em situações que não podem ser
controladas pelo projetista, pois são informações provenientes da central de comutação.
A solução para tais dificuldades foi projetar um circuito que realizasse o
acoplamento com a linha telefônica e tivesse a função de um filtro passa faixa. Sendo assim
ao pressionar *11 (processo de discagem para chamadas interurbanas, vide manual no anexo
no Apêndice A desse documento), por exemplo, a central não entenderia esses dígitos.
Portanto com a criação do filtro os dígitos não seguiam para a central pública
O circuito de acoplamento pode ser visualizado na figura 14.
Figura 14- Circuito de acoplamento com a linha telefônica
Fonte: A autora
25
Finalmente, os testes com todos os circuitos interligados obtiveram sucesso. Foram
necessários alguns ajustes de programação, mas nada que implicasse em um objeto de
impedimento do projeto. A figura 15 mostra claramente todos os circuitos interligados.
Figura 15– Todos os circuitos do projeto interligados
Fonte: A Autora
Com todos os circuitos do projeto em pleno funcionamento, foi feito o primeiro
protótipo do projeto. Foi extraída da placa didática do PIC apenas a parte essencial para as
funcionalidades do projeto, sendo assim estas funcionalidades foram projetadas na placa de
circuito impresso. O diagrama esquemático desse circuito já foi mostrado na figura 8 desse
documento.
Assim, uma imagem do protótipo inicial é mostrada na figura 16.
26
Figura 16 – Protótipo inicial
Fonte: A autora
Com o intuito de melhorar a apresentação estética do projeto, houve a construção de
outro protótipo, onde foi feito uma placa de circuito impresso contendo os três circuitos
(circuito microcontrolador, circuito identificador de tons DTMF e circuito discador de
chamadas) em uma única placa. O circuito de acoplamento continuou separado do restante
optou-se isolar esse circuito, pois na fase de execução apresentou algumas instabilidades.
Sendo assim, ao alcançar a estabilidade deste, a melhor opção foi não fazer qualquer
alteração.
Na figura 17é possível visualizar a placa com os três circuitos integrados.
27
Figura 17 – Placa final
Fonte: A autora
O protótipo final é mostrado na figura 18.
Figura 18 - Imagem do protótipo final
Fonte: A autora
28
4.3 CÓDIGO FONTE
O código fonte desse sistema pode ser visualizado no Apêndice B.
4.4 PLACAS DE CIRCUITO IMPRESSO (PCB)
Inicialmente as placas foram projetadas separadamente para facilitar a fase de
implementação, feito todos os testes com as placas então foi feita uma única placa ficando
separado apenas a circuito acoplador que foi montado na placa universal, por motivos já
citado anteriormente.
Para a confecção da placa de circuito de impresso foi utilizado o software ORCAD.
A figura 19 traz o negativo da placa de circuito impresso do circuito Identificador de
Tons DTMF.
Figura 19 – Negativo da placa identificador de tons DTMF
Fonte: A autora
29
Negativo da placa para circuito impresso foi com o objetivo de apresentar neste
documento. A figura 20 traz o negativo da placa do circuito discador, antes de rotear a placa
com as trilhas.
Figura 20– Negativo da placa do discador
Fonte: A autora
Figura 21– Negativo da placa roteada
Fonte: A autora
30
Como já citado nesse documento, foi feito uma única placa com os circuitos;
discador de chamadas, identificador de tons DTMF e circuito do microcontrolador com o
intuito de melhorar a estética do projeto. A figura mostra o negativo dessa placa de circuito
impresso.
Figura 22 – Negativo da placa do protótipo final
Fonte: A autora
31
A figura 23 mostra a placa já com as trilhas, ou seja, a placa já roteada.
Figura 23 – Placa protótipo final roteada.
Fonte: A autora
32
4.5 CUSTOS DO PROJETO
Todos os componentes empregados para a confecção do projeto estão listados no
quadro 4 com seus respectivos custos.
Quadro 4 – Lista de materiais e custos
QTDE
VALOR
DESCRIÇÃO
UNITÁRIO
VALOR TOTAL
PIC
1
Soquete torneado 40 pinos
R$ 1,00
R$ 1,00
1
Pinos Torneados
R$ 2,00
R$ 2,00
1
Regulador de Tensão LM7805
R$ 0,80
R$ 0,80
2
Capacitor poliéster 330nF/63V
R$ 0,55
R$ 1,10
2
Capacitor cerâmico 33pF10 *
R$ 1,00
R$ 2,00
1
Capacitor poliéster 100nF/63V
R$ 0,20
R$ 0,20
1
Capacitor eletrolítico 10uF/50V
R$ 0,10
R$ 0,10
4
Diodos 1N4007*
R$ 0,60
R$ 2,40
1
Resistor 1KΩ*
R$ 0,30
R$ 0,30
2
Resistor 10KΩ*
R$ 0,30
R$ 0,60
1
Resistor 15Ω*
R$ 0,30
R$ 0,30
1
Led 3mm verde*
R$ 1,20
R$ 1,20
1
Display de LCD 16x2 (com backlight)
R$ 17,50
R$ 17,50
1
Barra de pinos fêmea modular 1x16 p/ PCI
R$ 0,50
R$ 0,50
1
Conector Jack fêmea de fonte para PCI
R$ 0,40
R$ 0,40
1
Trimpot 10kΩ (712C F103)
R$ 1,11
R$ 1,11
1
Cristal MHz
R$ 0,80
R$ 0,80
1
Fonte DC mín. 17V máx. 35V
R$ 20,00
R$ 20,00
33
1
Push-botton TAC
R$ 0,20
R$ 0,20
1
PIC 18F452
R$ 21,00
R$ 21,00
1
Placa de Fenolite10X20
R$ 2,00
R$ 2,00
TOTAL DA PLACA
R$ 74,51
CIRCUITO IDENTIFICADOR DE TONS DTMF
1
Circuito Integrado MT8870
R$ 3,80
R$ 3,80
2
Resistor 100 KΩ*
R$ 0,30
R$ 0,60
1
Resistor 300KΩ*
R$ 0,30
R$ 0,30
2
Capacitor Cerâmico 100 nF*
R$ 1,00
R$ 2,00
1
Crystal 3,57 MHz
R$ 0,80
R$ 0,80
1
Soquete Torneado 18 pinos
R$ 0,80
R$ 0,80
1
Placa de Fenolite10X10
R$ 1,10
R$ 1,10
TOTAL DA PLACA
R$ 9,40
CIRCUITO DISCADOR DE CHAMADAS
1
Circuito Integrado HT9200B
R$ 4,80
R$ 4,80
1
Soquete torneado 14 pinos
R$ 0,60
R$ 0,60
4
Resistor 1KΩ*
R$ 0,30
R$ 1,20
2
Capacitor 20pF cerâmico *
R$ 1,00
R$ 2,00
1
Crystal 3,57Mhz
R$ 0,80
R$ 0,80
1
Placa Universal 10x10
R$ 3,80
R$ 3,80
TOTAL DA PLACA
R$ 13,20
CIRCUITO ACOPLADOR
1
Placa Universal 5X5
R$ 1,50
R$ 1,50
1
Relé 5V
R$ 3,50
R$ 3,50
2
Conector RJ11 para PCI
R$ 0,30
R$ 0,60
1
Capacitor Eletrolítico 1uF 100V
R$ 0,20
R$ 0,20
1
Capacitor Eletrolítico 4,7uF 100V
R$ 0,30
R$ 0,30
2
Transistor BC 327
R$ 1,27
R$ 2,54
2
Resistor 22KΩ
R$ 0,30
R$ 0,60
1
Resistor 5,6KΩ
R$ 0,30
R$ 0,30
TOTAL DA PLACA
R$ 9,54
VALOR TOTAL DO PROJETO
R$ 106,65
34
Fonte: A autora
* A quantidade é referente a número de componentes utilizados para o projeto, o
componente é comercializado por dezena.
35
5. RESULTADOS
Este capítulo visa mostrar os resultados finais com o protótipo em pleno
funcionamento.
O display disponibiliza três informações, sendo estas, valor, tempo e número de
telefone discado, conforme ilustrado na figura 24. Sendo possível visualizar os seguintes
estados; telefone no gancho, chamada local, chamada interurbana, menu de tarifa local, menu
de tarifa interurbana, e bloqueio de chamadas.
Figura 24 - Informações do display
Fonte: A autora
5.1 TELEFONE NO GANCHO
Neste estado, como não há nenhuma chamada em curso, o display mostra todas as
informações zeradas.
A figura 25 mostra o estado telefone no gancho.
36
Figura 25 – Telefone no gancho
Fonte: A autora
5.2 CHAMADA LOCAL
Como é possível observar existe quatorze zeros no espaço onde será mostrado o
número de telefone discado. Para a realização da chamada local, são necessários apenas oito
dígitos, portanto ao discar o oitavo dígito, inicia-se o processo de contagem de tempo e
tarifação de acordo com a tarifa previamente configurada como mostrado na figura 26.
Figura 26 – Chamada local
Fonte: A autora
37
5.3 CHAMADA INTERURBANA
Neste ponto, houve a necessidade de criar um código para que pudesse ser
identificado que o tipo de chamada seria interurbano. Normalmente para realizar este tipo de
chamada é digitado o algarismo “0” então neste caso, como é o microcontrolador que vai
identificar que se trata de interurbano, este poderia deixar a chamada interpretando o tipo de
chamada para um número 0800, por exemplo. Sendo assim, foi criado o código * para que o
microcontrolador fizesse a identificação de se tratar de uma chama interurbana. Este mesmo
código faz com que microcontrolador faça a inserção do filtro e não deixe passar os dígitos
para central de comutação pública.
Para realizar a chamada interurbana, o usuário deve digitar “*” e o primeiro dígito do
DDD correspondente, então o microcontrolador faz o roteamento interno, iserindo a
operadora e o primeiro dígito do DDD de destino, então o usuário procede com a discagem
normalmente.
A figura 27 ilustra como o microcontrolador encaminharia, por exemplo, uma
chamada para o DDD 43.
Figura 27 – Processo de encaminhamento de chamada interurbana
Fonte: A autora
38
Na figura 28 é possível visualizar o restante do processo de discagem. Também é
possível observar que ao término do 13º dígito, inicia-se o processo de contagem de tempo e
tarifação. No exemplo da figura, é observa-se tarifação para o primeiro minuto de ligação.
Figura 28 – Chama interurbana
Fonte: A autora
5.4 CONFIGURAÇÕES DE TARIFA LOCAL E BLOQUEIO DE CHAMADAS
Para acessar o menu de configurações de tarifa local, é necessário pressionar os
dígitos “#” seguido de “*” e digitar os algarismos correspondentes a tarifa local no campo
TL.
O campo “B” significa bloqueio e no estado “0” permite as chamadas para celular e
no estado “1”, bloqueia as chamadas para celular. Assim, quando o estado é “1”, e o usuário
digitar, os algarismos “9”e “8” microcontrolador não irá permitir que a chamada seja
completada.
O menu de acesso a configuração de tarifa local bem como a opção de bloqueio de
chamadas pode ser visualizado na figura 29
39
Figura 29 – Menu de acesso a configuração de tarifa local e bloqueio celular
Fonte: A autora
Com o campo “B” em “1” o bloqueio de chamadas para celular é ativado, conforme
mostrado na figura 30.
Figura 30 – Bloqueio de chamadas para celular.
Fonte: A autora
40
5.5 CONFIGURAÇÕES DE TARIFAS INTERURBANAS
Para acessar o menu de configuração de tarifas interurbanas, é necessário que seja
digitado “#” seguido o primeiro dígito da região. Por exemplo, para configuras as tarifas de
Rio Grande do Sul, então “#” seguido do número “5”.
Para este projeto existem três opções de operadoras a ser configuradas para
chamadas interurbanas. Portanto existem três campos configuráveis e são eles: “OI”,”E” e
“B” que corresponde aos códigos de seleção de prestadora “31”,”21” e “14” respectivamente.
Na figura 31 é possível visualizar os campos configuráveis
Figura 31 – Menu de acesso a configuração das tarifas interurbanas
Fonte: A autora
41
6. CONCLUSÃO
Durante a execução do projeto foi possível observar a complexidade de criar um
sistema onde seu funcionamento é interdependente de sinalizações que não estão ao alcance
de ser controladas. Este sistema é dependente das trocas de sinais de controle na rede de
telecomunicações, como o tom de discar, tom chamador, tom de conexão, tom de desconexão.
Para solucionar esta dificuldade foi então adotado um circuito de acoplamento que identifica
se o telefone foi retirado do gancho e insere um filtro para que os tons DTMF não passem
para central pública quando o usuário digitar o código de acesso a chamadas interurbanas e
código do menu de configurações.
O projeto possui certas limitações, pois o roteamento das chamadas interurbanas se
limita a três operadoras de longa distância. Para aumentar a quantidade de opções de
operadoras seria necessário adotar o uso da memória externa, sem adoção desta, aumentariam
as opções de configuração no menu o que conseqüentemente aumentaria a quantidade de
comparações na programação resultando na insuficiência da memória RAM do PIC .
Quando é cortada a alimentação, as configurações de tarifas são zeradas, sendo
necessário refazer a configuração dos valores, fato este, que agrega outra limitação ao projeto.
Portanto, para um trabalho futuro a solução é adotar o uso da memória EEPROM do PIC.
Assim as variáveis de entrada, que são no caso os valores de tarifas, não seriam zeradas em
caso de corte da alimentação.
O projeto em questão resultou em um projeto prático, usual e de simples manuseio
para ao usuário final, podendo ser implementada diversas melhorias para o aperfeiçoamento
do sistema.
42
REFERÊNCIAS BIBLIOGRÁFICAS
FERRARI, Antônio Martins. Telecomunicações Evolução e Revolução. 9
ed.-Rio de Janeiro: Érica, 2005.
LIMA
JR.,
Almir
Wirth;
OLIVEIRA,
Gorki
Starlin
da
Costa.
Telecomunicações modernas: curso básico. Rio de Janeiro: Book Express.
PEREIRA, Fábio. Microcontroladores PIC: programação em C. 2. ed.-. São
Paulo: Érica, 2003. 358.
SOARES NETO, Vicente; CARVALHO, Francisco Teodoro Assis.
Tecnologia de Centrais telefônicas. São Paulo: Érica, 1999.
PLANO
DE
NUMERAÇÃO;
Site
Internet:
[http://www.teleco.com.br/num.asp], maio 2008
DATASHEET
MT8870
–
Site
internet:
[http://www.datasheetcatalog.net/pt/datasheets_pdf/M/T/8/8/MT8870.shtml],
maio
2008.
DATASHEET
PIC
18F452
–
Site
Internet:[http://www.datasheetcatalog.com/datasheets_pdf/P/I/C/1/PIC18F452.shtml],
maio 2008
43
APÊNDICE A – MANUAL DE OPERAÇÃO
CHAMADA LOCAL
Disque o número de telefone de destino
Ex: 333-33333
CHAMADA CELULAR
Disque o número de celular de destino
Ex: 999-99999
CHAMADA INTERURBANA
Passo 1 : Pressione
* e o primeiro digito do DDD de destino
Passo 2: Aguarde o sistema fazer a seleção da operadora. Assim que o display
indicar o código de seleção de operadora e o primeiro dígito do DDD, insira os algarismos
restantes.
EXEMPLO: Pressionando
*4 o display irá mostrar a operadora selecionada
pelo roteador
Se o DDD de destino for 44, basta discar 4 + NÚMERO DE DESTINO
44
CONFIGURAÇÃO DE TARIFA LOCAL E BLOQUEIO CELULAR:
Passo 1: Pressione
*#
Passo 2: Configure o valor da tarifa local de sua operadora de telefonia fixa no
campo ‘TL’.
BLOQUEIO CHAMADA CELULAR: Pressione 1
DESBLOQUEIO CELULAR: Pressione 0
CONFIGURAÇÃO TARIFAS INTERURBANAS
Passo 1: Para acessar o menu de configuração das tarifas DDD pressione
primeiro dígito do DDD a ser configurado.
Passo 2: Configure as tarifas nos campos configuráveis
*eo
45
EXEMPLO: Se você deseja alterar o valor das tarifas da região de Rio Grande do
Sul, onde o DDD é 55, então digite
configuráveis
*5,
então configure as tarifas nos campos
46
APÊNDICE B – CÓDIGO FONTE
#include <18f4520.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20000000)
#org 0x7000,0x7fff {}
#include<lcd_lib.c>
#rom 0xa00={1,2,3,4,5}
//pinos decodificadores//
#define pin1 (input(pin_c3))
#define pin2 (input(pin_c2))
#define pin3 (input(pin_c1))
#define pin4 (input(pin_c0))
#define pin5 (input(pin_c4))
#define pin6 (input(pin_c5))
void Tela1(void);
int i=0,aux=0,m1=0,m2=0,s1=0,s2=0,y=8,dig1=0,dig2=0,b1=0;
float cont=0,tar4=0,tar3=0,tar2=0,tar1=0,tar0=0,vtarifa=0,oi=0,brt=0,embra=0;
float p1=0,p2=0,p3=0,p4=0,p5=0,p6=0,p7=0,p8=0,p9=0,oisp=0,embrasp=0,brtsp=0;
float
oirj=0,embrarj=0,brtrj=0,oimg=0,embramg=0,brtmg=0,oipr=0,embrapr=0,brtpr=0;
float
oirs=0,embrars=0,brtrs=0,oims=0,embrams=0,brtms=0,oipe=0,embrape=0,brtpe=0;
float oisr=0,embrasr=0,brtsr=0,oiam=0,embraam=0,brtam=0;
int pos[16];
47
main(){
LCD_INIT();
{
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();
for(;;)
{
if(pin5==1)
{aux=1;}
if (pin1==0 && pin2==0 && pin3==0 && pin4==1 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=1;
aux=0;
}
if (pin1==0 && pin2==0 && pin3==1 && pin4==0 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=2;
aux=0;
}
48
if (pin1==0 && pin2==0 && pin3==1 && pin4==1&& aux==1){
delay_ms(30);
i=i+1;
pos[i]=3;
aux=0;
}
if (pin1==0 && pin2==1 && pin3==0 && pin4==0 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=4;
aux=0;
}
if (pin1==0 && pin2==1 && pin3==0 && pin4==1 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=5;
aux=0;
}
if (pin1==0 && pin2==1 && pin3==1 && pin4==0 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=6;
aux=0;
}
if (pin1==0 && pin2==1 && pin3==1 && pin4==1 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=7;
aux=0;
49
}
if (pin1==1 && pin2==0 && pin3==0 && pin4==0 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=8;
aux=0;
}
if (pin1==1 && pin2==0 && pin3==0 && pin4==1 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=9;
aux=0;
}
if (pin1==1 && pin2==0 && pin3==1 && pin4==0 && aux==1){
delay_ms(30);
i=i+1;
pos[i]=0;
aux=0;
}
if (pin1==1 && pin2==0 && pin3==1 && pin4==1 && aux==1){
output_high(pin_a5);
delay_ms(30);
i=i+1;
pos[i]=10;
aux=0;
}
if (pin1==1 && pin2==1 && pin3==0 && pin4==0 && aux==1){
output_high(pin_a5);
delay_ms(30);
50
i=i+1;
pos[i]=11;
aux=0;
}
if(pin6==1){//fone no gancho//
for(i=0;i<15;i++){
pos[i]=0,y=8;}
i=0;//zera vetor e tamnho defalt da quantidade de numeros//
tar1=0;tar2=0;tar3=0;tar4=0;tar0=0;cont=0;s1=0;s2=0;m1=0;m2=0; //zera contador
e tarifador//
output_low(pin_a5);
output_high(pin_c6);//fim zera discador//
Tela1();
}
delay_ms(10);
Tela1();
if(pos[1]==11 && pos[2]==10){//menu inicio Tarifa local//
y=8;
p1=pos[3];
p2=pos[4];
p3=pos[5];
b1=pos[6];
vtarifa=(p1)+(p2/10)+(p3/100);
51
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'T'; LCDEnviaByte();
caractere = 'L'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+b1; LCDEnviaByte();
}
if(pos[i>=6]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu TL fim//
if(pos[1]==11 && pos[2]==1){//menu inicio Sao paulo//
52
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oisp=(p1)+(p2/10)+(p3/100);
embrasp=(p4)+(p5/10)+(p6/100);
brtsp=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
53
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu sp fim//
if(pos[1]==11 && pos[2]==2){//menu inicio rio de Janeiro//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
54
oirj=(p1)+(p2/10)+(p3/100);
embrarj=(p4)+(p5/10)+(p6/100);
brtrj=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
55
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu rj fim//
if(pos[1]==11 && pos[2]==3){//menu inicio Minas Gerais//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oimg=(p1)+(p2/10)+(p3/100);
embramg=(p4)+(p5/10)+(p6/100);
brtmg=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
56
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu mg fim//
57
if(pos[1]==11 && pos[2]==4){//menu inicio Paraná//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oipr=(p1)+(p2/10)+(p3/100);
embrapr=(p4)+(p5/10)+(p6/100);
brtpr=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
58
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu pr fim//
if(pos[1]==11 && pos[2]==5){//menu inicio Rio Grande do Sul//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
59
p8=pos[10];
p9=pos[11];
oirs=(p1)+(p2/10)+(p3/100);
embrars=(p4)+(p5/10)+(p6/100);
brtrs=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
60
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//fim menu RS//
if(pos[1]==11 && pos[2]==6){//menu inicio Mato grosso//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oims=(p1)+(p2/10)+(p3/100);
embrams=(p4)+(p5/10)+(p6/100);
brtms=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
61
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
62
}//menu ms fim//
if(pos[1]==11 && pos[2]==7){//menu inicio Pernambuco//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oipe=(p1)+(p2/10)+(p3/100);
embrape=(p4)+(p5/10)+(p6/100);
brtpe=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
63
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu PE fim//
if(pos[1]==11 && pos[2]==8){//menu inicio Sergipe//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
64
p8=pos[10];
p9=pos[11];
oisr=(p1)+(p2/10)+(p3/100);
embrasr=(p4)+(p5/10)+(p6/100);
brtsr=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
65
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
}//menu SR fim//
if(pos[1]==11 && pos[2]==9){//menu inicio Amazonas//
y=15;
p1=pos[3];
p2=pos[4];
p3=pos[5];
p4=pos[6];
p5=pos[7];
p6=pos[8];
p7=pos[9];
p8=pos[10];
p9=pos[11];
oiam=(p1)+(p2/10)+(p3/100);
embraam=(p4)+(p5/10)+(p6/100);
brtam=(p7)+(p8/10)+(p9/100);
write_program_eeprom(0x1000,0x1234);
{
LCDClear();
66
cursor(1,1);
modo = dado;
caractere = 'M'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'U'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'O'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 48+p1; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p2; LCDEnviaByte();
caractere = 48+p3; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 48+p4; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p5; LCDEnviaByte();
caractere = 48+p6; LCDEnviaByte();
caractere = 'B'; LCDEnviaByte();
caractere = 48+p7; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+p8; LCDEnviaByte();
caractere = 48+p9; LCDEnviaByte();}
if(pos[i>=12]==11){//rotina para limpar o display e o vetor pos[i]//
for(i=0;i<15;i++){
pos[i]=0;}
i=0;
Tela1();}
67
}//menu AM fim//
if((pos[1]==9 || pos[1]==8) && b1==1){//bloquear chamada celular inicio//
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = ' '; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = 'C'; LCDEnviaByte();
caractere = 'H'; LCDEnviaByte();
caractere = 'A'; LCDEnviaByte();
caractere = 'M'; LCDEnviaByte();
caractere = 'A'; LCDEnviaByte();
caractere = 'D'; LCDEnviaByte();
caractere = 'A'; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = 'N'; LCDEnviaByte();
caractere = 'A'; LCDEnviaByte();
caractere = 'O'; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = ' '; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
68
caractere = ' '; LCDEnviaByte();
caractere = 'P'; LCDEnviaByte();
caractere = 'E'; LCDEnviaByte();
caractere = 'R'; LCDEnviaByte();
caractere = 'M'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 'T'; LCDEnviaByte();
caractere = 'I'; LCDEnviaByte();
caractere = 'D'; LCDEnviaByte();
caractere = 'A'; LCDEnviaByte();
output_high(pin_a5);//habilita o filtro//
}//bloquear chada clelular fim//
}
if(pos[1]==11 || pos[1]==10){
output_high(pin_a5);
if(pos[1]==10 && pos[2]==1){//aterisco para chamada interurbano para estado de
Sao Paulo//
output_low(pin_a5);
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oisp; //tarifa da operadora oi Telemar//
embra=embrasp; //tarifa da operadora Embratel//
brt=brtsp; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
69
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=1;
{
{ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(dig1==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
70
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(dig1==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(dig1==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(dig2==4){
71
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(dig2==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
{
//pinos discadores
if(pos[4]==1){
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
72
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}}
output_low(pin_a5);
}
}
if(pos[1]==10 && pos[2]==2){//aterisco para chamada interurbano para estado de
Rio de Janairo//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oirj; //tarifa da operadora oi Telemar//
embra=embrarj; //tarifa da operadora Embratel//
brt=brtrj; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
73
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=2;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
74
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
75
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5);// desbilita filtro//
}
}
76
if(pos[1]==10 && pos[2]==3){//aterisco para chamada interurbano para estado de
Rio de Janairo//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oimg; //tarifa da operadora oi Telemar//
embra=embramg; //tarifa da operadora Embratel//
brt=brtmg; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=3;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
77
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
78
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
79
delay_ms(50);}
if(pos[4]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5);// desabilita filtro
}
}
if(pos[1]==10 && pos[2]==4){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oipr; //tarifa da operadora oi Telemar//
embra=embrapr; //tarifa da operadora Embratel//
brt=brtpr; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
80
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=4;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
81
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
82
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
83
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5);// desabilita filtro.
}
}
if(pos[1]==10 && pos[2]==5){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oirs; //tarifa da operadora oi Telemar//
embra=embrars; //tarifa da operadora Embratel//
brt=brtrs; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
84
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=5;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
85
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
86
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==5){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5); // desabilita filtro
}
}
87
if(pos[1]==10 && pos[2]==6){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oims; //tarifa da operadora oi Telemar//
embra=embrams; //tarifa da operadora Embratel//
brt=brtms; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=6;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
88
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
89
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
90
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==6){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5);// desabilita filtro//
}
}
if(pos[1]==10 && pos[2]==7){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
91
oi=oipe; //tarifa da operadora oi Telemar//
embra=embrape; //tarifa da operadora Embratel//
brt=brtpe; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=7;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
92
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
93
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
94
if(pos[4]==7){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5); // desabilita filtro//
}
}
if(pos[1]==10 && pos[2]==8){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oisr; //tarifa da operadora oi Telemar//
embra=embrasr; //tarifa da operadora Embratel//
brt=brtsr; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
95
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=8;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(20);
output_low(pin_a0);
96
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(50);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
delay_ms(20);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
97
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==8){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
98
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5); // desabolita filtro//
}
}
if(pos[1]==10 && pos[2]==9){//aterisco para chamada interurbano para estado de
Paraná e Santa Catatina//
output_low(pin_a5);//desliga o filto//
delay_ms(50);
y=13; //quantidade de numeros discados em um DDD//
oi=oiam; //tarifa da operadora oi Telemar//
embra=embraam; //tarifa da operadora Embratel//
brt=brtam; //tarifa da operadora Brasil Telecom//
if(oi<=embra && oi<=brt){
dig1=3;
dig2=1;
vtarifa=oi;}
if(embra<=oi && embra<=brt){
dig1=2;
dig2=1;
vtarifa=embra;}
if(brt<=embra && brt<=oi){
dig1=1;
dig2=4;
vtarifa=brt;}
i=i+2;
99
pos[1]=0;
pos[2]=dig1;
pos[3]=dig2;
pos[4]=9;
{
if(pos[1]==0){ //pinos discadores de codigo de area//
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_high(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==2){
//pinos discadores
output_low(pin_c6);
100
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[2]==3){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_high(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[3]==4){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_low(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
101
if(pos[3]==1){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
if(pos[4]==9){
//pinos discadores
output_low(pin_c6);
delay_ms(30);
output_low(pin_a0);
output_high(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
delay_ms(100);
output_high(pin_c6);
delay_ms(50);}
output_low(pin_a5);// desabilita filtro//
}
102
}}
if(i>=y){//inicio do contador de tempo//
s1=s1+1; //incremento do segundo
delay_ms(450);}
if(s1>=10){
s1=0;
s2=s2+1;}
if(s2>=6){
s2=0;
m1=m1+1;}
if(m1>=10){
m1=0;
m2=m2+1;}
if(m2>=6){m2=0;}
if(i>=y){
// vtarifa=2;//valor da tarifa por minuto//
cont=(vtarifa/60.00)*100;//valor da tarifa por segundo em centavos//
tar4=tar4+cont;
}
if(tar4>=10){
tar4=0;
tar3=tar3+1;}
if(tar3>=10){
tar3=0;
tar2=tar2+1;}
103
if(tar2>=10){
tar2=0;
tar1=tar1+1;}
if(tar1>=10){
tar1=0;
tar0=tar0+1;}
if(tar0>=10){
tar0=0;}
}
}
}
void Tela1()
{
LCDClear();
cursor(1,1);
modo = dado;
caractere = 48+m2; LCDEnviaByte();
104
caractere = 48+m1; LCDEnviaByte();
caractere = ':'; LCDEnviaByte();
caractere = 48+s2; LCDEnviaByte();
caractere = 48+s1; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = 'R'; LCDEnviaByte();
caractere = '$'; LCDEnviaByte();
caractere = ' '; LCDEnviaByte();
caractere = 48+tar0; LCDEnviaByte();
caractere = 48+tar1;; LCDEnviaByte();
caractere = 48+tar2; LCDEnviaByte();
caractere = ','; LCDEnviaByte();
caractere = 48+tar3; LCDEnviaByte();
caractere = 48+tar4; LCDEnviaByte();
cursor(2,1);
modo = dado;
caractere = 'N'; LCDEnviaByte();
caractere = '-'; LCDEnviaByte();
caractere = 48+pos[1]; LCDEnviaByte();
caractere = 48+pos[2]; LCDEnviaByte();
caractere = 48+pos[3]; LCDEnviaByte();
caractere = 48+pos[4]; LCDEnviaByte();
caractere = 48+pos[5]; LCDEnviaByte();
caractere = 48+pos[6]; LCDEnviaByte();
caractere = 48+pos[7]; LCDEnviaByte();
caractere = 48+pos[8]; LCDEnviaByte();
caractere = 48+pos[9]; LCDEnviaByte();
caractere = 48+pos[10];LCDEnviaByte();
caractere = 48+pos[11];LCDEnviaByte();
caractere = 48+pos[12];LCDEnviaByte();
105
caractere = 48+pos[13];LCDEnviaByte();
caractere = 48+pos[14];LCDEnviaByte();
}
106

Documentos relacionados