Escolar Documentos
Profissional Documentos
Cultura Documentos
I/O Digital
6.2 Portas P1 e P2
Cada porta P1 e P2 tm oito linhas de I/O de propsito geral e todos os registros necessrios para suas respectivas configuraes e controle. Cada linha pode ser configurada e controlada individualmente. Podendo tambm cada linha produzir interrupo. Vetores de interrupo esto alocados para os mdulos P1 e P2. Os pinos de P1 (P1.0-7) atuam como fontes de uma interrupo enquanto os pinos de P2 (P2.0-7) so fontes de uma segunda interrupo. Portas P1 e P2 so conectadas ao ncleo do processador atravs do barramento de dados de 8 bits MDB e do MAB. Elas podem ser acessadas utilizando as instrues de byte em modo de endereo absoluto.
Os sete registros de controle do o mximo de flexibilidade de configurao s entrada/sada digitais, entre elas podemos citar: Todos os bits so programados de forma independente; Qualquer combinao de entrada, sada e condio de interrupo possvel e O processamento da interrupo de um evento externo implementvel para todos os bits das portas P1 e P2. Os sete registros de P1 e P2 so apresentados na Tabela 6.1 e na Tabela 6.2.
jkssbh@deii.cefetmg.br marcosp@deii.cefetmg.br 1
Estes registros so de oito bits e devem ser acessados utilizando instrues de byte em modo de endereamento absoluto. Os registros de entrada so apenas de leitura e refletem o aplicado no pino de I/O. Nota: a escrita nestes pinos resulta num aumento de corrente enquanto a tentativa de escrita estiver ativa. Cada registro de sada mostra a informao presente no buffer de sada. O buffer de sada pode ser modificado por todas as instrues que escrevem no operando de destino. Caso seja necessria uma leitura ela poder ser feita, pois a informao contida no buffer de sada no depende do pino de direo. Uma troca na direo no modifica o contedo do buffer de sada. O registro de direo contm oito bits independentes que definem a direo dos pinos de I/O. Todos os bits so resetados pelo sinal PUC. Bit = 0 => O pino da porta programado como entrada (3-state) Bit =1 => O pino da porta programado como sada Cada registro de flag de interrupo contm oito flags que refletem se existe ou no uma interrupo pendente no pino de I/O correspondente. Bit = 0 => No existe interrupo pendente Bit =1 => Uma interrupo pendente devido a uma transio no pino de I/O ou devido a uma operao de software. Nota: Manipulando P1OUT e P1DIR como P2OUT e P2DIR, pode resultar na ativao dos bits P1IFG ou P2IFG. Para resetar o flag de interrupo basta escrever 0(zero) no mesmo, entretanto, caso seja escrito 1 (um) ser gerada uma interrupo. Cada grupo de flags de interrupo P1FLG.0 P1FLG.7 e P2FLG.0 P2FLG.7 tem seu prprio vetor de interrupo. Os flags de interrupo P1FLG.0 P1FLG.7 e P2FLG.0 P2FLG.7 no so resetados em funo do atendimento da interrupo. O software tem que identificar a origem da interrupo e resetar o respectivo bit. Nota: Qualquer interrupo externa dever ter a durao mnima de 1,5 vezes o MCLK, para que seja reconhecida e seu respectivo flag de interrupo setado. Cada pino de I/O contm um bit individual, no registro de seleo de borda, para indicar o tipo de transio que ir setar o flag de interrupo. Quando: Bit = 0 => O flag de interrupo setado com uma transio de baixo para alto. Bit =1 => O flag de interrupo setado com uma transio de alto para baixo. Nota: A troca de P1IES e P2IES pode resultar na ativao de alguns flags de interrupo que esto associados a eles:
Apostila de Microcontroladores
I/O Digital
PnIES.x PnIN.x PnIFG.x 0->1 0 No altera 0->1 1 Pode ser setado 1->0 0 Pode ser setado 1->0 1 No altera Cada pino de I/O contm um bit individual, no registro de habilitao, para habilitar a interrupo. Cada um dos 16 bits correspondentes aos pinos P1.0-P1.7 e P2.0-P2.7 esto localizados nos registros P1IE e P2IE. Quando: Bit = 0 => A requisio de interrupo est desabilitada. Bit =1 => A requisio de interrupo est habilitada. Nota: Somente as transies causam interrupo. Se o flag de interrupo continuar setado quando a instruo IRET for executada (por exemplo, uma transio ocorre durante a rotina de servio de interrupo), a nova interrupo s ocorrer depois de completado o RETI. Isto garante que cada transio seja reconhecida pelo software. Os pinos das portas P1 e P2 normalmente esto multiplexados com outros mdulos perifricos para reduzir o nmero total de pinos do MSP430. Os registros de controle P1SEL e P2SEL so utilizados para selecionar a funo desejada do pino: I/O ou funo especial. Cada registro contm oito bits correspondendo a cada pino e cada funo do pino selecionada individualmente. Todos os bits destes registros so resetados com um sinal PUC. As definies destes bits so: Bit = 0 => Pinos so associados s portas P1 ou P2. Bit =1 => Pinos so associados aos mdulos perifricos. Nota: O circuito de seleo de borda de interrupo est desabilitado se o bit de controle PnSEL.x estiver setado. Consequentemente, um sinal nesta entrada no ir gerar interrupo. Quando um pino selecionado para ser utilizado como entrada para um mdulo perifrico, o sinal de entrada ser gravado. A gravao deste sinal ser condicionada ao bit PnSEL.x que ir habilitar tal gravao (Figura 6.2). O sinal gravado exatamente o sinal aplicado no pino Pn.x. Entretanto se o bit PnSEL.x for resetado, a sada do circuito de gravao (latch) apresentar o sinal gravado antes do resete do PnSEL.x.
Os registros de entrada so apenas de leitura e refletem o sinal presente no pino de I/O. Nota: Uma escrita neste registro de leitura resulta num aumento de consumo de corrente enquanto a operao de escrita estiver sendo feita. Cada registro de sada mostra a informao presente no buffer de sada. O buffer de sada pode ser modificado por todas as instrues que escrevem no operando de destino. Caso seja necessria uma leitura ela poder ser feita, pois a informao contida no buffer de sada no depende do pino de direo. Uma troca na direo no modifica o contedo do buffer de sada. 4
Apostila de Microcontroladores
I/O Digital
O registro de direo contm oito bits independentes que definem a direo dos pinos de I/O. Todos os bits so resetados pelo sinal PUC. Bit = 0 => O pino da porta programado como entrada Bit =1 => O pino da porta programado como sada Os pinos das portas P3 P6 normalmente esto multiplexados com outros mdulos perifricos para reduzir o nmero total de pinos do MSP430. Os registros de controle PnSEL so utilizados para selecionar a funo desejada do pino: I/O ou funo especial. Cada registro contm oito bits correspondendo a cada pino e cada funo do pino selecionada individualmente. Todos os bits destes registros so resetados com um sinal PUC. As definies destes bits so: Bit = 0 => Pinos so associados s portas. Bit =1 => Pinos so associados aos mdulos perifricos. Nota: O circuito de seleo de borda de interrupo est desabilitado se o bit de controle PnSEL.x estiver setado. Consequentemente, um sinal nesta entrada no ir gerar interrupo. Quando um pino selecionado para ser utilizado como entrada para um mdulo perifrico, o sinal de entrada ser gravado. A gravao deste sinal ser condicionada ao bit PnSEL.x que ir habilitar tal gravao (Figura 6.4). O sinal gravado exatamente o sinal aplicado no pino Pn.x. Entretanto se o bit PnSEL.x for resetado, a sada do circuito de gravao (latch) apresentar o sinal gravado antes do resete do PnSEL.x.
jkssbh@deii.cefetmg.br
marcosp@deii.cefetmg.br
Como pode ser visto no fluxograma da Figura 6.6 o LDE selecionado ir piscar numa freqncia estabelecida por uma rotina de temporizao, durante um perodo definido por um contador.
ACIONA LED
PISCA LED
CONFIGURA I/O
CARREGA CONTADOR
PISCA LED
LIGA LED
TEMPO
DESLIGA LED
TEMPO
DECREMENTA CONTADOR
CONTADOR =0
RETORNA
Apostila de Microcontroladores
I/O Digital
A temporizao da rotina tempo foi definida utilizando-se como referncia o nmero de ciclos de clock das instrues do processador. ;****************************************************************************** ; MSP430F149 Aciona LED ;****************************************************************************** #include "msp430x14x.h" RSEG IDATA0 ;----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h,SP ;INICIALIZA APONTADOR DE PILHA ;BLOQUEIA WATCH DOG SetupWDT MOV #WDTPW + WDTHOLD,&WDTCTL BIS.B #0XFF,P1DIR ;PROGRAMA TODOS OS BITS DE P1 COMO ;SADA REPETE CALL #PISCA_LED JMP REPETE ;****************************************************************************** ;SUBROTINA: PISCA_LED ;DESCRIO: FAZ O LED PRESENTE NA PORTA P1.0 ACENDER E APAGAR 100 VEZES ;COM UM INTERVALO TEMPO DEFINIDO PELA ROTINA TEMPO PISCA. ;ENTRADA: ;SADA: ;****************************************************************************** PISCA_LED PUSH R4 MOV #100,R4 ;DEFINE VALOR DO CONTADOR PISCA BIS.B #1,P1OUT ;LIGA LED CALL #TEMPO_PISCA BIC.B #1,P1OUT ;DESLIGA LED CALL #TEMPO_PISCA DEC R4 ;DECREMENTA CONTADOR JNZ PISCA POP R4 RET ;****************************************************************************** ;SUBROTINA: TEMPO_PISCA ;DESCRIO: INTERVALO DE TEMPO GASTO PELA CPU, PARA EXECUTAR AS ;INSTRUES DA SUBROTINA. ; TEMPO DE EXECUO: 5+5+2+ ; K1 X ( 2 + K2 X ( 5 + 2 ) + 5 + 2) + ; 5+5+5 ;ENTRADA: ;SADA: ;****************************************************************************** K1 EQU 1 K2 EQU 1 ;CICLOS DE INSTRUO TEMPO_PISCA PUSH R5 ;5 PUSH R6 ;5 MOV #K1,R6 ;2 CONT_EXT MOV #K2,R5 ;2 CONT_INT DEC R5 ;5 JNZ CONT_INT ;2 DEC R6 ;5 JNZ CONT_EXT ;2 POP R6 ;5 POP R5 ;5 RET ;5
jkssbh@deii.cefetmg.br marcosp@deii.cefetmg.br 7
CEFET/MG Centro Federal de Educao Tecnolgica de Minas Gerais ;--------------------------------------------------------------------------ORG 0FFFEh ; MSP430 Vetor de RESET DW RESET ;--------------------------------------------------------------------------END
ESPERA CHAVE
CHAVE LIGADA
ESPERA CHAVE
TRATA EVENTO
RETORNA
Um fato importante que deve ser ressaltado nesta tcnica que a CPU ficar testando por tempo indeterminado se a chave foi para o estado ligado, em funo disto que esta tcnica tem o nome de Espera Ocupada. #include "msp430x14x.h" ;****************************************************************************** ; ESPERA OCUPADA ;****************************************************************************** RSEG IDATA0 ;----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h,SP ;INICIALIZA APONTADOR DE PILHA ;BLOQUEIA WATCH DOG 8
Apostila de Microcontroladores
I/O Digital
SetupWDT REPETE_CH
MOV BIC.B
#WDTPW + #0XFF,P1DIR
CALL #ESPERA_CH JMP REPETE_CH ;----------------------------------------------------------------------------;****************************************************************************** ;SUBROTINA: ESPERA_CH ;DESCRIO: ESPERA QUE A CHAVE SEJA COLOCADA NO ESTADO LIGADO. ;ENTRADA: ;SADA: ;****************************************************************************** ESPERA_CH AGUARDA BIT.B #1,P1IN ;VERIFICA SE CHAVE LIGADA JZ AGUARDA CALL #TRATA_EVENTO RET
;****************************************************************************** ;SUBROTINA: TRATA_EVENTO ;DESCRIO: DEFINE A AO QUE DEVE SER REALIZADA APS O ACIONAMENTO DA CHAVE. ;ENTRADA: ;SADA: ;****************************************************************************** TRATA_EVENTO ;ROTINA DE TRATAMENTO RET ;--------------------------------------------------------------------------ORG 0FFFEh ; MSP430 Vetor de RESET DW RESET ;--------------------------------------------------------------------------END
CEFET/MG Centro Federal de Educao Tecnolgica de Minas Gerais interrupo seja resetado aps o tratamento da interrupo. Caso isto no seja feito novas interrupes sero geradas at que o mesmo seja resetado.
PRINCIPAL CONFIGURA I/O HABILITA INTERRUPO
TRATA INTERRUPO DESABILITA INTERRUPO SALVA CONTEXTO
PROCESSO BSICO
TRATA EVENTO
O programa a seguir apresenta a estrutura bsica para codificao de uma rotina de interrupo. #include "msp430x14x.h" ;****************************************************************************** ; TRATAMENTO POR INTERRUPAO ;****************************************************************************** RSEG IDATA0 ;----------------------------------------------------------------------------ASEG 01100H RESET MOV #0A00h,SP ;INICIALIZA APONTADOR DE PILHA ;BLOQUEIA WATCH DOG SetupWDT MOV #WDTPW + WDTHOLD,&WDTCTL BIS.B #0XF0,P1DIR ;PROGRAMA OS BITS MAIS SIG. DE P1 COMO ;SADA BIC.B #0X0F,P1DIR ;E OS MENOS SIG. COMO ENTRADA BIS.B #0X01,P1IE ;HABILITA INTERRUPO DO BIT 0 EINT ESPERA_INT CALL #QUALQUER_COISA JMP ESPERA_INT ;****************************************************************************** ;SUBROTINA: QUALQUER_COISA ;DESCRIO: A CPU PODER REALIZAR QUALQUER TAREFA SEM SE PREOCUPAR ;COM A INTERRUPO. ;ENTRADA: ;SADA: ;****************************************************************************** QUALQUER_COISA RET ;****************************************************************************** ;SUBROTINA: TRATA_INT ;DESCRIO: ESPERA QUE A CHAVE SEJA COLOCADA NO ESTADO LIGADO. ;ENTRADA: ;SADA: ;****************************************************************************** TRATA_INT DINT BIC.B #0X01,P1IFG ;RESETA FLAG DE INTERRUPO CALL #TRATA_EVENTO EINT RETI 10
Apostila de Microcontroladores
I/O Digital
jkssbh@deii.cefetmg.br
marcosp@deii.cefetmg.br
11
CEFET/MG Centro Federal de Educao Tecnolgica de Minas Gerais ;****************************************************************************** ;SUBROTINA: TRATA_EVENTO ;DESCRIO: DEFINE A AO QUE DEVE SER REALIZADA APS O ACIONAMENTO DA ; CHAVE. ;ENTRADA: ;SADA: ;****************************************************************************** TRATA_EVENTO XOR.B #010,P1OUT ;ROTINA DE TRATAMENTO RET ;--------------------------------------------------------------------------ORG 0FFE8h ; PORTA 1 DW TRATA_INT ORG 0FFFEh ; MSP430 Vetor de RESET DW RESET ;--------------------------------------------------------------------------END
6.4.4 Teclado
O teclado apresentado na Figura 6.10 constitudo de uma matriz 4X3 gerando um total de doze teclas. Existem duas tcnicas distintas para captura de tecla: espera ocupada (polling) e interrupo. Nesta aplicao estaremos utilizando a tcnica de espera ocupada.
Estando com o circuito definido iremos especificar o algoritmo para a captura da tecla. O fluxograma da Figura 6.11 apresenta um algoritmo de uma subrotina para deteco e captura de tecla pressionada. Este algoritmo permite que as teclas sejam configuradas atravs do carregamento de seus contedos em uma tabela presente na memria. A deteco de tecla pressionada consiste em colocar nvel alto em todas as colunas e executar uma varredura contnua nas linhas, que esto configuradas como portas de entrada. Considerando que nenhuma tecla esteja pressionada, teremos sinal baixo nas linhas, pois as mesmas esto pulldown. Caso qualquer tecla seja pressionada o estado da respectiva linha ser levado para nvel alto. Sendo cada linha constituda de mais de uma tecla necessrio que sua identificao seja feita. Esta identificao feita utilizando-se um apontador (APT_TEC) que inicialmente aponta para o caracter NULL que corresponde a primeira posio da tabela de configurao do teclado. Este caracter NULL ser utilizado como retorno da subrotina para indicar duas condies de exceo: erro ou tecla no pressionada. Caso uma das teclas seja pressionada o apontador de memria APT_TEC indicar em que posio de memria encontra-se a tecla pressionada. importante observar o comportamento das teclas, pois quando pressionada, vrios pulsos podero ser gerados at que o contato seja estabelecido plenamente. Desta forma necessrio que se faa filtragem destes pulsos indesejados. Esta filtragem pode ser feita atravs de uma temporizao que garantir que os pulsos subsequentes ao primeiro, durante a temporizao, sero desprezados. 12
Apostila de Microcontroladores
I/O Digital
TECLADO
CONFIGURAO 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
TODAS LINHAS =0
RETORNA
TEMPO REPIQUE
COL0 1 COL1=COL2
TODAS LINHAS =0
LIN0 = 1
APT_TEC APT_TEC+1
V
COL1 1 COL0=COL2 0 APT_TEC APT_TEC+4 LIN1 = 1
APT_TEC APT_TEC+2
TODAS LINHAS =0
LIN2 = 1
APT_TEC APT_TEC+3
V
COL2 1 COL0=COL1 0 APT_TEC APT_TEC+4
LIN3 = 1
APT_TEC APT_TEC+4
(APT_TEC)
APT_TEC TAB_TEC
RETORNA
6.4.5 LCD
Os mdulos de LCD existentes no mercado apresentam caractersticas diferentes e, portanto alguns esclarecimentos devem ser feitos antes de utiliz-los. Os fabricantes fornecem dois mdulos bsicos: microcontrolados ou LCDs com terminais para acionamento dos segmentos. Nos modelos microcontrolados existem os LCD grficos e os baseados em caracteres. Para esta aplicao estaremos utilizando um mdulo de uma linha com 16 caracteres (Figura 6.12).
jkssbh@deii.cefetmg.br
marcosp@deii.cefetmg.br
13
Para que possamos enviar um ou mais caracteres necessrio que seja feita primeiramente a programao deste mdulo. Sua programao feita atravs do envio de uma seqncia de caracteres respeitando uma temporizao mnima exigida entre o envio do caracter e as respectivas linhas de controle. Atravs do diagrama apresentado na Figura 6.12 podemos observar que o LCD est utilizando oito bits para recepo dos dados enviados pelo MCU. Existem trs sinais de controle sendo eles o RS, R/W e E. O sinal R/W est aterrado, pois apenas operaes de escrita sero feitas no LCD, embora operaes de leitura possam ser feitas para leitura de sua memria interna. O sinal RS utilizado para identificao da informao que est sendo enviada atravs do barramento de dados. As informaes possveis que iro trafegar pelo barramento so dados e comandos. Os dados so constitudos dos caracteres que sero apresentados no LCD enquanto os comandos podero ser palavras de programao ou endereo de memria onde ser escrito um dado. A Figura 6.13 apresenta o endereo de memria de cada campo presente no LCD.
80 81 82 83 84 85 86 87 C0 C1 C2 C3 C4 C5 C6 C7
O sinal E o pino de habilitao das operaes com o LCD. O fluxograma da Figura 6.14 apresenta os passos bsicos para programao do LCD.
14
Apostila de Microcontroladores
I/O Digital
PROGRAMA LCD
(1)
ENVIA COMANDO
(2)
ENVIA COMANDO
(3)
ENVIA COMANDO
(4)
LIMPA DISPLAY
ENVIA COMANDO
RETORNA
As caixas de processamento de 1 a 4 caractersticas do display. Na Figura 6.15 so interpretados pelo mdulo de LCD. Para utilizao seguintes comando: Comando Cdigo Fixao das condies de utilizao 00111000 Controle Ativo/Inativo do display 00001110 Fixao do modo 00000110 Limpeza do display 00000001
presentes no fluxograma definem as apresentados os principais comandos do display em questo sero enviados os Descrio 8bits de dados display 1 linha M 7x5 Display e cursor ativos sem piscar Deslocamento do cursor p/ direita Limpa display
jkssbh@deii.cefetmg.br
marcosp@deii.cefetmg.br
15
RS
INSTRUO Limpa Display Retorno Fixao do modo Controle Ativo/ Inativo do display Deslocamento do cursor/mensagem Fixao das condies de utilizao Endereamento da CG RAM Endereamento da DD da RAM Leitura do contador de endereo 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
DESCRIO Limpa todo display Retorna cursor primeira posio da primeira linha Retorna cursor primeira posio da primeira linha Retorna mensagem deslocada a sua posio original I/D ->Sentido de deslocamento do cursor S ->Define se mensagem deve ou ser deslocada (D) Ativa / Desativa display - (C) Ativa / Desativa cursor - (B) Ativa / Desativa intermitncia do cursor (DL) Nmero de bits da interface - (N) Nmero 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
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 * *
Para envio dos comandos para o mdulo de display devemos respeitar a seqncia sinais apresentada na Figura 6.16, garantindo que as temporizaes sejam atendidas.
ENVIA COMANDO ENVIA DADO
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
Aps a programao do mdulo LCD as mensagens podero ser enviadas atravs da escrita no barramento de dados seguida da seqncia da Figura 6.17. 16
Apostila de Microcontroladores
I/O Digital
Qual o nmero mximo de I/Os presentes no MSP? Quais so os papeis dos bits de direo (PnDIR) e funo (PnSEL)? Quais as portas que tem suporte a interrupo no MSP? Quais so os registros associados operao de interrupo e como funcionam? Suponha que a porta P1.0 esteja conectada ao terminal CH0 da Figura 6.7 e a porta P1.1 esteja conectada ao terminal L0 da Figura 6.5. Faa um programa em que o LED indique o estado corrente da chave. Faa este procedimento utilizando espera ocupada e posteriormente utilizando interrupo. 6. O diagrama da Figura 6.18 apresenta os componentes bsicos presentes no porto eletrnico.
IE ms PORTO Chaves Magnticas SE SD CENTRAL SIRENE LMPADA ID Movimentos
1. 2. 3. 4. 5.
Lista de Exerccios
CONTROLE REMOTO
Figura 6.18 - Porto eletrnico
CHAVE
O sistema de porto eletrnico constitudo de um porto com dois ms fixados em suas extremidades direita (ID) e esquerda (IE). Uma Central de controle constituda de um sistema microcontrolado utilizando o MSP430F149 e algumas interfaces que so responsveis pelo controle dos sensores e atuadores. Conectados as interfaces temos uma lmpada e uma sirene, que trabalham como sinalizadores, durante o processo de abertura e fechamento do porto. Dois dispositivos para abertura e fechamento do porto, sendo um remoto e o outro local. Internamente, acoplado a Central, existem duas chaves magnticas (SE e SD) que tem seus contatos fechados devido a presena do campo magntico gerado pelos ims ID ou IE. O funcionamento do sistema consiste basicamente no deslocamento do porto nos sentidos direita/esquerda tendo os seus movimentos limitados pelas chaves magnticas. Com base no diagrama da Figura 6.18 caso o porto seja acionado e estando a chave SD fechada, devido a presena de ID, o porto (motor) dever ser acionado para direita. O motor ir manter este sentido at que o im IE feche o contato do sensor SE. Aps o fechamento de SE, se um novo comando for dado, o movimento do porto ocorrer em sentido contrrio. A configurao das portas do MSP e os dispositivos do sistema sero feitos atravs de P1, P2 e P3. A porta P1 apresenta quatro bits teis com as seguintes funes: Conexo I/O 0 (Entrada) B7 B6 B5 B4 B3 B2 B1 B0 CR CM X X X X SE SD BIT FUNO 7 CR CONTROLE REMOTO levado para nvel lgico alto sempre que o controle remoto for ativado. 6 CM CHAVE MANUAL levado para nvel lgico alto sempre que a chave do porta for girada. 1 SE SENSOR ESQUERDO levado para nvel lgico alto sempre que o sensor SE for acionado. 0 SD SENSOR DIREITO levado para nvel lgico alto sempre que o sensor SD for acionado. A porta P2 uma entrada de dados composta de duas chaves ON/OFF. Elas sero responsveis pela programao do sistema, segundo a tabela abaixo:
jkssbh@deii.cefetmg.br marcosp@deii.cefetmg.br 17
CEFET/MG Centro Federal de Educao Tecnolgica de Minas Gerais Conexo I/O 1 (Entrada) B5 B4 B3 B2 B1 B0 X X X X S1 S0 S1 S0 FUNO 0 0 Sirene / Lmpada de sinalizao desligada 0 1 Sirene desligada e Lmpada de sinalizao ligada 1 0 Sirene ligada e Lmpada de sinalizao desligada 1 1 Sirene / Lmpada de sinalizao ligada A porta P3 uma sada de dados que apresenta o seguinte comportamento: Conexo I/O 2 (sada) B7 B6 B5 B4 B3 B2 B1 B0 AM SM X X X X S L FUNO AM ATIVA MOTOR 0 DESLIGADO | 1 LIGADO SM SENTIDO DO MOTOR 0 DIREITA | 1 -ESQUERDA S SIRENE Aciona sirene quando colocado em nvel alto. L LMPADA Aciona lmpada quando colocado em nvel alto. B7 X B6 X
BIT 7 6 1 0
Faa 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. A porta 1 dever ser lida e os seus bits 7 e 6 sero responsveis pela colocao do porto em movimento. Caso um destes bits seja levado para nvel alto o sistema dever verificar a situao dos sensores SE e SD para definir o sentido do movimento. Os bits 7 e 6 depois de ativados voltaro automaticamente para nvel lgico baixo depois de transcorrido 1s de sua ativao. A porta 2 definir o modo de funcionamento dos sinalizadores. A programao desta porta poder ser alterada a qualquer momento pelo usurio. A porta 3 ser utilizada para o acionamento do motor assim como para definir o sentido de seu movimento. Ser tambm responsvel pelo acionamento dos sinalizadores. Consideraes: Se durante a movimentao do porto um novo sinal de acionado for dado pelo usurio, o motor dever ser desligado mesmo que os sensores no tenham sido acionados. Nesta situao o porto ficar parado e s entrar em movimento, aps um novo comando dado pelo usurio. Agora o sentido do movimento ser contrrio ao anterior. O programa dever prever a falha nos sensores de fim curso. Para isto dever utilizar uma temporizao que automaticamente desativar o motor caso este tempo seja atingido. Caso o sistema seja ligado aps uma falha de energia deve ser analisada a posio em que o porto encontra-se estacionado.
18