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