Apostila de Microcontroladores

I/O Digital

6. Configuração dos I/Os Digitais
6.1 Introdução
As portas de I/O de propósito geral do MSP430 foram desenvolvidas para dar o máximo de flexibilidade. Cada linha de I/O é individualmente configurável e a maior parte delas tem a capacidade de geração de interrupção Existem dois tipos distintos de módulos de I/O na família de microcontroladores MSP430X1XX um grupo constituído das portas P1 e P2 e o outro grupo constituído das portas de P3 a P6. Ambas têm a capacidade de controlar a direção (entrada/saída), nível lógico de saída, leitura do nível lógico aplicado no pino de entrada e controlar se uma porta ou um módulo de função está associado a um pino. As portas P1 e P2 têm a capacidade de gerar interrupções, flags de habilitação e sensibilidade de borda para cada pino.

6.2 Portas P1 e P2
Cada porta P1 e P2 têm oito linhas de I/O de propósito geral e todos os registros necessários para suas respectivas configurações e controle. Cada linha pode ser configurada e controlada individualmente. Podendo também cada linha produzir interrupção. Vetores de interrupção estão alocados para os módulos P1 e P2. Os pinos de P1 (P1.0-7) atuam como fontes de uma interrupção enquanto os pinos de P2 (P2.0-7) são fontes de uma segunda interrupção. Portas P1 e P2 são conectadas ao núcleo do processador através do barramento de dados de 8 bits MDB e do MAB. Elas podem ser acessadas utilizando as instruções de byte em modo de endereço absoluto.

6.2.1 Registros de Controle de P1 e P2
Sete registradores (Figura 6.1) são utilizados para controlar os pinos de I/O da porta.

Figura 6.1 - Registros de Configuração e Controle

Os sete registros de controle dão o máximo de flexibilidade de configuração às entrada/saída digitais, entre elas podemos citar: • Todos os bits são programados de forma independente; • Qualquer combinação de entrada, saída e condição de interrupção é possível e • O processamento da interrupção de um evento externo é implementável para todos os bits das portas P1 e P2. Os sete registros de P1 e P2 são apresentados na Tabela 6.1 e na Tabela 6.2.
jkssbh@deii.cefetmg.br marcosp@deii.cefetmg.br 1

Registros da porta P1 Tabela 6. Todos os bits são resetados pelo sinal PUC.Registros da porta P2 Estes registros são de oito bits e devem ser acessados utilizando instruções de byte em modo de endereçamento absoluto. Nota: A troca de P1IES e P2IES pode resultar na ativação de alguns flags de interrupção que estão associados a eles: 2 .0 à P1FLG. Para resetar o flag de interrupção basta escrever 0(zero) no mesmo.7 não são resetados em função do atendimento da interrupção. entretanto. Nota: Qualquer interrupção externa deverá ter a duração mínima de 1. Bit =1 => O flag de interrupção é setado com uma transição de alto para baixo.1 . Cada registro de saída mostra a informação presente no buffer de saída.7 e P2FLG. Os registros de entrada são apenas de leitura e refletem o aplicado no pino de I/O. Os flags de interrupção P1FLG.CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais Tabela 6. pode resultar na ativação dos bits P1IFG ou P2IFG. pois a informação contida no buffer de saída não depende do pino de direção. O registro de direção contém oito bits independentes que definem a direção dos pinos de I/O. O buffer de saída pode ser modificado por todas as instruções que escrevem no operando de destino. Uma troca na direção não modifica o conteúdo do buffer de saída. Nota: Manipulando P1OUT e P1DIR como P2OUT e P2DIR.0 à P2FLG. Cada grupo de flags de interrupção P1FLG.5 vezes o MCLK. no registro de seleção de borda. Caso seja necessária uma leitura ela poderá ser feita. Nota: a escrita nestes pinos resulta num aumento de corrente enquanto a tentativa de escrita estiver ativa. para que seja reconhecida e seu respectivo flag de interrupção setado.7 e P2FLG. O software tem que identificar a origem da interrupção e resetar o respectivo bit. Bit = 0 => O pino da porta é programado como entrada (3-state) Bit =1 => O pino da porta é programado como saída Cada registro de flag de interrupção contém oito flags que refletem se existe ou não uma interrupção pendente no pino de I/O correspondente. para indicar o tipo de transição que irá setar o flag de interrupção. caso seja escrito 1 (um) será gerada uma interrupção.7 tem seu próprio vetor de interrupção. Quando: Bit = 0 => O flag de interrupção é setado com uma transição de baixo para alto. Bit = 0 => Não existe interrupção pendente Bit =1 => Uma interrupção pendente devido a uma transição no pino de I/O ou devido a uma operação de software. Cada pino de I/O contém um bit individual.0 à P2FLG.2 .0 à P1FLG.

Consequentemente. Se o flag de interrupção continuar setado quando a instrução IRET for executada (por exemplo. Todos os bits destes registros são resetados com um sinal PUC. Nota: Somente as transições causam interrupção. uma transição ocorre durante a rotina de serviço de interrupção). P1IE.3 Portas P3. Bit =1 => Pinos são associados aos módulos periféricos. P4. jkssbh@deii.0 à P2IES. 6.7.7 e P2.x PnIN.x. Cada bit pode ser lido e escrito conforme é mostrado na Figura 6.0 à P2IE. Cada registro contém oito bits correspondendo a cada pino e cada função do pino é selecionada individualmente.x que irá habilitar tal gravação (Figura 6. P5 e P6 As portas de propósito gerais P3-P6 são apresentadas na Figura 6. P1IFG. Quatro registros são utilizados para controlar cada uma das portas.cefetmg. para habilitar a interrupção. • Flag de habilitação interrupção.7. Nota: O circuito de seleção de borda de interrupção está desabilitado se o bit de controle PnSEL.0 à P2IFG.2).br 3 . Os pinos das portas P1 e P2 normalmente estão multiplexados com outros módulos periféricos para reduzir o número total de pinos do MSP430. o sinal de entrada será gravado. A gravação deste sinal será condicionada ao bit PnSEL.0 à P1IES.0-P1. Cada pino pode ser selecionado para operar como uma porta de I/O ou se tornar um terminal de um módulo periférico. Elas podem ser acessadas com instruções de byte utilizando o modo de endereçamento absoluto.0-P2. Uma interrupção só irá ocorrer quando o bit específico PnIE.x for resetado. As definições destes bits são: Bit = 0 => Pinos são associados às portas P1 ou P2. oito bits para seleção de borda e um vetor para a porta P1 e um segundo vetor para a porta P2.3. O sinal gravado é exatamente o sinal aplicado no pino Pn.2. Quando um pino é selecionado para ser utilizado como entrada para um módulo periférico.x e o bit GIE estiverem setados. Isto garante que cada transição seja reconhecida pelo software.cefetmg.x estiver setado.7 e P2IE.x. As portas P3-P6 são conectadas ao processador através do barramento de 8 bits MDB e do barramento de endereço MAB. a nova interrupção só ocorrerá depois de completado o RETI. a saída do circuito de gravação (latch) apresentará o sinal gravado antes do resete do PnSEL.3 Funções de Controle de Interrupção As portas de controle P1 e P2 utilizam oito bits de flags de interrupção. P1IES. Cada sinal utiliza três bits para controle e interrupção: • Flag de interrupção. Os flags de interrupção não são automaticamente resetados. Bit =1 => A requisição de interrupção está habilitada.Apostila de Microcontroladores I/O Digital PnIES.2 Esquema das Portas P1 e P2 A lógica individual de cada pino das portas P1 e P2 é a mesma. Os registros de controle P1SEL e P2SEL são utilizados para selecionar a função desejada do pino: I/O ou função especial. 6. oito bits para habilitação de interrupção. 6.0 à P1IFG. Quando: Bit = 0 => A requisição de interrupção está desabilitada.7 e P2IES.2. no registro de habilitação.x PnIFG. um sinal nesta entrada não irá gerar interrupção.br marcosp@deii.7. Cada um dos 16 bits correspondentes aos pinos P1.0 à P1IE.x 0->1 0 Não altera 0->1 1 Pode ser setado 1->0 0 Pode ser setado 1->0 1 Não altera Cada pino de I/O contém um bit individual.7 estão localizados nos registros P1IE e P2IE.2.7 e P2IFG. Entretanto se o bit PnSEL. • Flag de seleção de borda. O software de tratamento da interrupção deverá identificar a fonte geradora de interrupção e resetar o flag correspondente quando o serviço estiver terminado.

Cada registro de saída mostra a informação presente no buffer de saída.3. • Todos os bits de I/O são programados independentemente. O buffer de saída pode ser modificado por todas as instruções que escrevem no operando de destino.2 .3 – Registros das Portas P3-P6 Os registros de entrada são apenas de leitura e refletem o sinal presente no pino de I/O.1 Registros de Controle das portas P3-P6 Os quatro registros de controle de cada porta dão o máximo de flexibilidade na configuração dos I/Os digitais.Esquema das Porta P1 e P2 6. • Qualquer combinação de entrada é possível e • Qualquer combinação de porta ou módulo de função é possível. Nota: Uma escrita neste registro de leitura resulta num aumento de consumo de corrente enquanto a operação de escrita estiver sendo feita. 4 .CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais Figura 6. Os quatro registros de cada porta são apresentados na Figura 6. Eles contêm oito bits e podem ser acessados com instrução de byte. Caso seja necessária uma leitura ela poderá ser feita.3 . Figura 6. Uma troca na direção não modifica o conteúdo do buffer de saída. pois a informação contida no buffer de saída não depende do pino de direção.

br marcosp@deii. Entretanto se o bit PnSEL.x.x estiver setado. Quando um pino é selecionado para ser utilizado como entrada para um módulo periférico.Registros das Portas P3-P6 O registro de direção contém oito bits independentes que definem a direção dos pinos de I/O. O sinal gravado é exatamente o sinal aplicado no pino Pn.br 5 . Todos os bits são resetados pelo sinal PUC.3 . Bit = 0 => O pino da porta é programado como entrada Bit =1 => O pino da porta é programado como saída Os pinos das portas P3 à P6 normalmente estão multiplexados com outros módulos periféricos para reduzir o número total de pinos do MSP430. Nota: O circuito de seleção de borda de interrupção está desabilitado se o bit de controle PnSEL.4 . Todos os bits destes registros são resetados com um sinal PUC.Apostila de Microcontroladores I/O Digital Tabela 6. Consequentemente. o sinal de entrada será gravado.x. a saída do circuito de gravação (latch) apresentará o sinal gravado antes do resete do PnSEL. 6.x for resetado. Cada registro contém oito bits correspondendo a cada pino e cada função do pino é selecionada individualmente.3. Bit =1 => Pinos são associados aos módulos periféricos.4. Figura 6.2 Esquema das Portas P3-P6 A lógica de cada pino das portas P3 a P6 é apresentada na Figura 6.cefetmg. A gravação deste sinal será condicionada ao bit PnSEL.Esquema das Portas P3-P6 jkssbh@deii.cefetmg.x que irá habilitar tal gravação (Figura 6.4). As definições destes bits são: Bit = 0 => Pinos são associados às portas. Os registros de controle PnSEL são utilizados para selecionar a função desejada do pino: I/O ou função especial. um sinal nesta entrada não irá gerar interrupção.

ACIONA LED PISCA LED CONFIGURA I/O CARREGA CONTADOR PISCA LED LIGA LED TEMPO DESLIGA LED TEMPO DECREMENTA CONTADOR CONTADOR =0 V RETORNA Figura 6. Para que o LED seja ligado/desligado basta colocar o respectivo nível lógico em um dos terminais de entrada do conjunto de LEDs. Os LEDs presentes no Kit didático apresentam a configuração da Figura 6. monitoração de chave. algumas considerações são necessárias.5 .5. O MSP é capaz de drenar corrente até 20mA em seus terminais o que torna possível a conexão de um LED diretamente em um terminal acompanhado de um resistor em série para limitação de corrente. Nesta seção iremos desenvolver algumas aplicações básicas entre elas: acionamento de LED.Aciona LED 6 . teclado e LDC.4.1 Acionamento de LED com temporização O acionamento de LED é uma tarefa relativamente simples.6 . durante um período definido por um contador. entretanto. 6.Acionamento do LED no KIT Como pode ser visto no fluxograma da Figura 6.6 o LDE selecionado irá piscar numa freqüência estabelecida por uma rotina de temporização. Figura 6.4 Aplicações com os I/Os Muitas são as aplicações que podemos desenvolver com os I/Os do MSP sem a utilização de suas funções especiais.CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais 6.

B #1.DESCRIÇÃO: INTERVALO DE TEMPO GASTO PELA CPU.R6 .SP .****************************************************************************** #include "msp430x14x.COM UM INTERVALO TEMPO DEFINIDO PELA ROTINA TEMPO PISCA.INICIALIZA APONTADOR DE PILHA .B #0XFF.R5 .h" RSEG IDATA0 . PARA EXECUTAR AS .0 ACENDER E APAGAR 100 VEZES .5 RET .5 POP R5 .2 DEC R6 .****************************************************************************** .br marcosp@deii.cefetmg.Apostila de Microcontroladores I/O Digital A temporização da rotina tempo foi definida utilizando-se como referência o número de ciclos de clock das instruções do processador.****************************************************************************** .ENTRADA: .LIGA LED CALL #TEMPO_PISCA BIC.P1OUT .2 CONT_INT DEC R5 .SAÍDA: .PROGRAMA TODOS OS BITS DE P1 COMO .BLOQUEIA WATCH DOG SetupWDT MOV #WDTPW + WDTHOLD.P1OUT .SAÍDA REPETE CALL #PISCA_LED JMP REPETE . MSP430F149 – Aciona LED .B #1.5 jkssbh@deii.R4 .****************************************************************************** .5 PUSH R6 . 5+5+5 .br 7 .DEFINE VALOR DO CONTADOR PISCA BIS.&WDTCTL BIS. TEMPO DE EXECUÇÃO: 5+5+2+ .5 JNZ CONT_EXT .5 MOV #K1.5 JNZ CONT_INT .ENTRADA: .INSTRUÇÕES DA SUBROTINA.SUBROTINA: TEMPO_PISCA .P1DIR . . . K1 X ( 2 + K2 X ( 5 + 2 ) + 5 + 2) + .CICLOS DE INSTRUÇÃO TEMPO_PISCA PUSH R5 .cefetmg.2 CONT_EXT MOV #K2. .DESLIGA LED CALL #TEMPO_PISCA DEC R4 .****************************************************************************** PISCA_LED PUSH R4 MOV #100.DECREMENTA CONTADOR JNZ PISCA POP R4 RET .SAÍDA: .2 POP R6 .DESCRIÇÃO: FAZ O LED PRESENTE NA PORTA P1.----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h.****************************************************************************** K1 EQU 1 K2 EQU 1 .SUBROTINA: PISCA_LED .

MSP430 Vetor de RESET DW RESET .--------------------------------------------------------------------------END 6. Figura 6. ESPERA OCUPADA . #include "msp430x14x.****************************************************************************** .--------------------------------------------------------------------------ORG 0FFFEh .Chave ON-OFF ESPERA OCUPADA CONFIGURA I/O ESPERA CHAVE CHAVE LIGADA ESPERA CHAVE N TRATA EVENTO RETORNA Figura 6. pois nesta subrotina o usuário poderá inserir a ação que deverá ser realizada quando a chave for acionada.----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h.8 .BLOQUEIA WATCH DOG 8 .2 Tratamento de chave com espera ocupada Vários são os dispositivos que fornecem informação digital para um sistema microprocessado.h" . Uma sugestão é fazer com que o LED o exemplo anterior comece a piscar somente após o acionamento da chave. O diagrama das chaves presentes no KIT é apresentado na Figura 6.****************************************************************************** RSEG IDATA0 .8).SP . em função disto é que esta técnica tem o nome de Espera Ocupada. Neste exemplo iremos observar o estado presente na chave através de uma varredura que chamamos de espera ocupada (Figura 6.7.7 .CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais . Observe que não é apresentado o detalhamento da subrotina TrataEvento.INICIALIZA APONTADOR DE PILHA .4.Algoritmo de Espera Ocupada Um fato importante que deve ser ressaltado nesta técnica é que a CPU ficará testando por tempo indeterminado se a chave foi para o estado ligado.

pois caso venha ocorrer o acionamento da mesma a CPU será sinalizada através de um sinal elétrico.--------------------------------------------------------------------------END 6.ENTRADA: . A grande vantagem em relação a espera ocupada é que neste caso a CPU poderá estar realizando uma outra operação sem se preocupar se a chave está sendo acionada.----------------------------------------------------------------------------.****************************************************************************** .****************************************************************************** ESPERA_CH AGUARDA BIT.SAÍDA: .9 pode ser observado que não existe ligação (chamada de subrotina) do algoritmo principal e a rotina de tratamento de interrupção.br 9 .****************************************************************************** TRATA_EVENTO . . caso a mesma seja omitida e uma outra interrupção de maior prioridade que a primeira ocorra.2) presente nas portas P1 e P2 do MSP. degrada o desempenho do sistema. existe um bit de interrupção (PnIFG) associado a cada pino das portas P1 e P2 (Figura 6.PROGRAMA TODOS OS BITS DE P1 COMO .B #WDTPW + #0XFF.VERIFICA SE CHAVE LIGADA JZ AGUARDA CALL #TRATA_EVENTO RET WDTHOLD. ele não poderá apresentar um longo tempo de execução pois senão novas interrupções poderão ser perdidas.****************************************************************************** .br marcosp@deii.B #1.ENTRADA: . pois estando o mesmo sendo processado dentro da rotina de interrupção e estando a interrupção desabilitada.DESCRIÇÃO: ESPERA QUE A CHAVE SEJA COLOCADA NO ESTADO LIGADO. No algoritmo da Figura 6.4. Desta forma é necessário que o bit específico da jkssbh@deii.DESCRIÇÃO: DEFINE A AÇÃO QUE DEVE SER REALIZADA APÓS O ACIONAMENTO DA CHAVE.SUBROTINA: ESPERA_CH .cefetmg.--------------------------------------------------------------------------ORG 0FFFEh . Com relação à desabilitação da interrupção.ENTRADA .cefetmg.P1IN . Para resolver tal problema podemos utilizar o processo de interrupção (Figura 6. Ao término do tratamento da interrupção de maior prioridade será então executado o tratamento da interrupção de menor prioridade. Isto retrata claramente que o tratamento da interrupção só será realizado quando um evento externo ocorrer. o tratamento da interrupção corrente será interrompido para que seja processado o tratamento da interrupção de maior prioridade.SUBROTINA: TRATA_EVENTO . Na ocorrência deste evento a CPU irá interromper a tarefa que está sendo executado no ProcessoBásico e irá executar a rotina TrataInterrupção. Um cuidado que deve ser tomado é com relação ao TrataEvento. embora apresente uma estrutura de software mais simples. .3 Tratamento de chave por Interrupção A espera ocupada. MSP430 Vetor de RESET DW RESET .&WDTCTL .Apostila de Microcontroladores I/O Digital SetupWDT REPETE_CH MOV BIC.P1DIR CALL #ESPERA_CH JMP REPETE_CH .2). Ao término do tratamento da rotina de interrupção a CPU retornará a execução do ProcessoBásico.SAÍDA: . Para o caso específico do MSP.ROTINA DE TRATAMENTO RET .

P1DIR .P1DIR .SAÍDA BIC.****************************************************************************** .ENTRADA: .RESETA FLAG DE INTERRUPÇÃO CALL #TRATA_EVENTO EINT RETI 10 .SAÍDA: .B #0X01.SAÍDA: .BLOQUEIA WATCH DOG SetupWDT MOV #WDTPW + WDTHOLD.h" .SUBROTINA: QUALQUER_COISA . DE P1 COMO .B #0XF0. COMO ENTRADA BIS.DESCRIÇÃO: A CPU PODERÁ REALIZAR QUALQUER TAREFA SEM SE PREOCUPAR .COM A INTERRUPÇÃO.SP . Figura 6.ENTRADA: .INICIALIZA APONTADOR DE PILHA . .B #0X01. .****************************************************************************** TRATA_INT DINT BIC. Caso isto não seja feito novas interrupções serão geradas até que o mesmo seja resetado.&WDTCTL BIS.P1IE .PROGRAMA OS BITS MAIS SIG.****************************************************************************** .P1IFG .****************************************************************************** RSEG IDATA0 . TRATAMENTO POR INTERRUPÇAO .B #0X0F.E OS MENOS SIG.HABILITA INTERRUPÇÃO DO BIT 0 EINT ESPERA_INT CALL #QUALQUER_COISA JMP ESPERA_INT .DESCRIÇÃO: ESPERA QUE A CHAVE SEJA COLOCADA NO ESTADO LIGADO. #include "msp430x14x. PRINCIPAL CONFIGURA I/O HABILITA INTERRUPÇÃO TRATA INTERRUPÇÃO DESABILITA INTERRUPÇÃO SALVA CONTEXTO PROCESSO BÁSICO TRATA EVENTO RESETA FLAG DE INTERRUPÇÃO RESTAURA CONTEXTO HABILITA INTERRUPÇÃO RETORNA DA INT.****************************************************************************** QUALQUER_COISA RET .Interrupção O programa a seguir apresenta a estrutura básica para codificação de uma rotina de interrupção.----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h.SUBROTINA: TRATA_INT .9 .****************************************************************************** .CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais interrupção seja resetado após o tratamento da interrupção.

Apostila de Microcontroladores I/O Digital jkssbh@deii.cefetmg.br marcosp@deii.cefetmg.br 11 .

CHAVE. É importante observar o comportamento das teclas. Esta filtragem pode ser feita através de uma temporização que garantirá que os pulsos subsequentes ao primeiro. Existem duas técnicas distintas para captura de tecla: espera ocupada (polling) e interrupção. 12 .4.4 Teclado O teclado apresentado na Figura 6. Nesta aplicação estaremos utilizando a técnica de espera ocupada.P1OUT .--------------------------------------------------------------------------END 6. Esta identificação é feita utilizando-se um apontador (APT_TEC) que inicialmente aponta para o caracter NULL que corresponde a primeira posição da tabela de configuração do teclado. teremos sinal baixo nas linhas. Desta forma é necessário que se faça à filtragem destes pulsos indesejados. Este algoritmo permite que as teclas sejam configuradas através do carregamento de seus conteúdos em uma tabela presente na memória.ROTINA DE TRATAMENTO RET .10 é constituído de uma matriz 4X3 gerando um total de doze teclas. Figura 6.****************************************************************************** TRATA_EVENTO XOR. . MSP430 Vetor de RESET DW RESET . A detecção de tecla pressionada consiste em colocar nível alto em todas as colunas e executar uma varredura contínua nas linhas.****************************************************************************** . Sendo cada linha constituída de mais de uma tecla é necessário que sua identificação seja feita. serão desprezados.DESCRIÇÃO: DEFINE A AÇÃO QUE DEVE SER REALIZADA APÓS O ACIONAMENTO DA .CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais . Considerando que nenhuma tecla esteja pressionada.10 .SAÍDA: .SUBROTINA: TRATA_EVENTO .Teclado Estando com o circuito definido iremos especificar o algoritmo para a captura da tecla. pois as mesmas estão pulldown. O fluxograma da Figura 6. Caso uma das teclas seja pressionada o apontador de memória APT_TEC indicará em que posição de memória encontra-se a tecla pressionada.B #010. PORTA 1 DW TRATA_INT ORG 0FFFEh . Este caracter NULL será utilizado como retorno da subrotina para indicar duas condições de exceção: erro ou tecla não pressionada.11 apresenta um algoritmo de uma subrotina para detecção e captura de tecla pressionada. Caso qualquer tecla seja pressionada o estado da respectiva linha será levado para nível alto. que estão configuradas como portas de entrada. vários pulsos poderão ser gerados até que o contato seja estabelecido plenamente.--------------------------------------------------------------------------ORG 0FFE8h . durante a temporização.ENTRADA: . pois quando pressionada.

cefetmg.cefetmg.11 – Algoritmo do Teclado 6.Apostila de Microcontroladores I/O Digital TECLADO CONFIGURAÇÃO DO TECLADO TAB_TEC+0 TAB_TEC+1 TAB_TEC+2 TAB_TEC+3 TAB_TEC+4 TAB_TEC+5 TAB_TEC+6 TAB_TEC+7 TAB_TEC+8 TAB_TEC+9 TAB_TEC+10 TAB_TEC+11 TAB_TEC+12 NULL 3 6 9 E 2 5 8 0 1 4 7 A TECLADO 1 4 7 A 2 5 8 0 3 6 9 E CONFIGURA I/OS APT_TEC TAB_TEC TECLA (APT_TEC) COL0=COL1=COL2 1 TODAS LINHAS =0 V RETORNA TEMPO REPIQUE COL0 1 COL1=COL2 0 TODAS LINHAS =0 LIN0 = 1 V APT_TEC APT_TEC+1 V COL1 1 COL0=COL2 0 APT_TEC APT_TEC+4 LIN1 = 1 V APT_TEC APT_TEC+2 TODAS LINHAS =0 LIN2 = 1 V APT_TEC APT_TEC+3 V COL2 1 COL0=COL1 0 APT_TEC APT_TEC+4 LIN3 = 1 V APT_TEC APT_TEC+4 TECLA TODAS LINHAS =0 (APT_TEC) V APT_TEC TAB_TEC RETORNA Figura 6.br 13 . jkssbh@deii.5 LCD Os módulos de LCD existentes no mercado apresentam características diferentes e. Nos modelos microcontrolados existem os LCD gráficos e os baseados em caracteres.br marcosp@deii. portanto alguns esclarecimentos devem ser feitos antes de utilizá-los. Para esta aplicação estaremos utilizando um módulo de uma linha com 16 caracteres (Figura 6.4.12). Os fabricantes fornecem dois módulos básicos: microcontrolados ou LCDs com terminais para acionamento dos segmentos.

Sua programação é feita através do envio de uma seqüência de caracteres respeitando uma temporização mínima exigida entre o envio do caracter e as respectivas linhas de controle.Diagrama de Ligação do LCD Para que possamos enviar um ou mais caracteres é necessário que seja feita primeiramente a programação deste módulo. O sinal R/W está aterrado. 14 .13 .12 .Endereçamento do LCD O sinal E é o pino de habilitação das operações com o LCD. Os dados são constituídos dos caracteres que serão apresentados no LCD enquanto os comandos poderão ser palavras de programação ou endereço de memória onde será escrito um dado. Através do diagrama apresentado na Figura 6.13 apresenta o endereço de memória de cada campo presente no LCD. O sinal RS é utilizado para identificação da informação que está sendo enviada através do barramento de dados. O fluxograma da Figura 6.14 apresenta os passos básicos para programação do LCD. R/W e E. As informações possíveis que irão trafegar pelo barramento são dados e comandos. Existem três sinais de controle sendo eles o RS.12 podemos observar que o LCD está utilizando oito bits para recepção dos dados enviados pelo MCU. A Figura 6. embora operações de leitura possam ser feitas para leitura de sua memória interna.CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais Figura 6. pois apenas operações de escrita serão feitas no LCD. 80 81 82 83 84 85 86 87 C0 C1 C2 C3 C4 C5 C6 C7 Figura 6.

Programação do LCD As caixas de processamento de 1 a 4 características do display.br marcosp@deii.cefetmg.br 15 .14 .Apostila de Microcontroladores I/O Digital PROGRAMA LCD (1) DEFINE NÚMERO DE LINHAS DO DISPLAY DEFINE NÚMERO DE BITS DO BARRAMENTO ENVIA COMANDO (2) ATIVA DISPLAY E CURSOR DEFINE INTERMITÊNCIA DO CURSOR ENVIA COMANDO (3) DEFINE DESLOCAMENTO DO CURSOR ENVIA COMANDO (4) LIMPA DISPLAY ENVIA COMANDO RETORNA Figura 6.15 são interpretados pelo módulo de LCD. Na Figura 6.cefetmg. Para utilização seguintes comando: Comando Código Fixação das condições de utilização 00111000 Controle Ativo/Inativo do display 00001110 Fixação do modo 00000110 Limpeza do display 00000001 presentes no fluxograma definem as apresentados os principais comandos do display em questão serão enviados os Descrição 8bits de dados – display 1 linha – M 7x5 Display e cursor ativos sem piscar Deslocamento do cursor p/ direita Limpa display jkssbh@deii.

15 .(B) Ativa / Desativa intermitência do cursor (DL) Número de bits da interface .(N) Número de linhas (F) Formato do caracter 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 * 0 0 0 0 0 0 0 1 I/D S 0 0 0 0 0 0 1 DCB 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 DL S/C R/L * * NF * * Endereço da RAM CG Endereço da 0 0 1 RAM ADD B Contador de 0 1 F endereços AC 1 0 1 1 Para envio dos comandos para o módulo de display devemos respeitar a seqüência sinais apresentada na Figura 6.17. 16 Figura 6.CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais W/R RS INSTRUÇÃO Limpa Display Retorno Fixação do modo Controle Ativo/ Inativo do display Deslocamento do cursor/mensagem Fixação das condições de utilização Endereçamento da CG RAM Endereçamento da DD da RAM Leitura do contador de endereço Escrita de dados na CG ou DD RAM Leitura de dados na CG ou DD RAM (*) irrelevante D7 D6 D5 D4 D3 D2 D1 D0 DESCRIÇÃO Limpa todo display Retorna cursor à primeira posição da primeira linha Retorna cursor à primeira posição da primeira linha Retorna mensagem deslocada a sua posição original I/D ->Sentido de deslocamento do cursor S ->Define se mensagem deve ou ser deslocada (D) Ativa / Desativa display .(C) Ativa / Desativa cursor .Envio de Controle Figura 6.Envio de Dados .16 .17 .16. garantindo que as temporizações sejam atendidas. ENVIA COMANDO ENVIA DADO Figura 6.Comandos Básicos RS 0 E 0 RS 1 E 0 TEMPO >=5mS TEMPO >=5mS E 1 E 1 TEMPO >=5mS TEMPO >=5mS E 0 E 0 RETORNA RETORNA Após a programação do módulo LCD as mensagens poderão ser enviadas através da escrita no barramento de dados seguida da seqüência da Figura 6.

se um novo comando for dado. Internamente. existem duas chaves magnéticas (SE e SD) que tem seus contatos fechados devido a presença do campo magnético gerado pelos imãs ID ou IE.5. o portão (motor) deverá ser acionado para direita.18 caso o portão seja acionado e estando a chave SD fechada.Apostila de Microcontroladores I/O Digital Qual o número máximo de I/Os presentes no MSP? Quais são os papeis dos bits de direção (PnDIR) e função (PnSEL)? Quais as portas que tem suporte a interrupção no MSP? Quais são os registros associados à operação de interrupção e como funcionam? Suponha que a porta P1. Com base no diagrama da Figura 6.18 . devido a presença de ID.br marcosp@deii. P2 e P3. 5. Dois dispositivos para abertura e fechamento do portão.18 apresenta os componentes básicos presentes no portão eletrônico. 4. 2.1 esteja conectada ao terminal L0 da Figura 6. segundo a tabela abaixo: jkssbh@deii. A porta P2 é uma entrada de dados composta de duas chaves ON/OFF. A porta P1 apresenta quatro bits úteis com as seguintes funções: Conexão I/O 0 (Entrada) B7 B6 B5 B4 B3 B2 B1 B0 CR CM X X X X SE SD BIT FUNÇÃO 7 CR CONTROLE REMOTO é levado para nível lógico alto sempre que o controle remoto for ativado. o movimento do portão ocorrerá em sentido contrário.7 e a porta P1.Portão eletrônico CHAVE O sistema de portão eletrônico é constituído de um portão com dois ímãs fixados em suas extremidades direita (ID) e esquerda (IE). 6 CM CHAVE MANUAL é levado para nível lógico alto sempre que a chave do porta for girada. que trabalham como sinalizadores. Uma Central de controle constituída de um sistema microcontrolado utilizando o MSP430F149 e algumas interfaces que são responsáveis pelo controle dos sensores e atuadores. O funcionamento do sistema consiste basicamente no deslocamento do portão nos sentidos direita/esquerda tendo os seus movimentos limitados pelas chaves magnéticas. IE Ímãs PORTÃO Chaves Magnéticas SE SD CENTRAL SIRENE LÂMPADA ID Movimentos 1. Faça este procedimento utilizando espera ocupada e posteriormente utilizando interrupção. A configuração das portas do MSP e os dispositivos do sistema serão feitos através de P1.0 esteja conectada ao terminal CH0 da Figura 6. Lista de Exercícios CONTROLE REMOTO Figura 6. Elas serão responsáveis pela programação do sistema. 1 SE SENSOR ESQUERDO é levado para nível lógico alto sempre que o sensor SE for acionado. sendo um remoto e o outro local. Após o fechamento de SE.br 17 . durante o processo de abertura e fechamento do portão. Conectados as interfaces temos uma lâmpada e uma sirene. Faça um programa em que o LED indique o estado corrente da chave.cefetmg. 0 SD SENSOR DIREITO é levado para nível lógico alto sempre que o sensor SD for acionado.cefetmg. 3. acoplado a Central. O motor irá manter este sentido até que o imã IE feche o contato do sensor SE. 6. O diagrama da Figura 6.

A porta 3 será utilizada para o acionamento do motor assim como para definir o sentido de seu movimento. Caso o sistema seja ligado após uma falha de energia deve ser analisada a posição em que o portão encontra-se estacionado. Os bits 7 e 6 depois de ativados voltarão automaticamente para nível lógico baixo depois de transcorrido 1s de sua ativação. após um novo comando dado pelo usuário. A porta 1 deverá ser lida e os seus bits 7 e 6 serão responsáveis pela colocação do portão em movimento. Será também responsável pelo acionamento dos sinalizadores. Caso um destes bits seja levado para nível alto o sistema deverá verificar a situação dos sensores SE e SD para definir o sentido do movimento. Para isto deverá utilizar uma temporização que automaticamente desativará o motor caso este tempo seja atingido. O programa deverá prever a falha nos sensores de fim curso. Agora o sentido do movimento será contrário ao anterior. A porta 2 definirá o modo de funcionamento dos sinalizadores. L LÂMPADA Aciona lâmpada quando colocado em nível alto.CEFET/MG – Centro Federal de Educação Tecnológica de Minas Gerais Conexão I/O 1 (Entrada) B5 B4 B3 B2 B1 B0 X X X X S1 S0 S1 S0 FUNÇÃO 0 0 Sirene / Lâmpada de sinalização desligada 0 1 Sirene desligada e Lâmpada de sinalização ligada 1 0 Sirene ligada e Lâmpada de sinalização desligada 1 1 Sirene / Lâmpada de sinalização ligada A porta P3 é uma saída de dados que apresenta o seguinte comportamento: Conexão I/O 2 (saída) B7 B6 B5 B4 B3 B2 B1 B0 AM SM X X X X S L FUNÇÃO AM ATIVA MOTOR 0 – DESLIGADO | 1 – LIGADO SM SENTIDO DO MOTOR 0 – DIREITA | 1 -ESQUERDA S SIRENE Aciona sirene quando colocado em nível alto. o motor deverá ser desligado mesmo que os sensores não tenham sido acionados. B7 X B6 X BIT 7 6 1 0 Faça o algoritmo e seu respectivo programa que monitore os sensores presentes na porta 1 e 2 e atua conforme descrito abaixo: Depois de ligada a Central ela deverá fazer uma varredura constante nas portas 0 e 1. Nesta situação o portão ficará parado e só entrará em movimento. 18 . Considerações: Se durante a movimentação do portão um novo sinal de acionado for dado pelo usuário. A programação desta porta poderá ser alterada a qualquer momento pelo usuário.

Sign up to vote on this title
UsefulNot useful