Sie sind auf Seite 1von 59

www. mackenzie.com.

br

APOSTILA MICROPROCESSADORES II
ENGENHARIA ELETRNICA - EEUPM

PRIMEIRO SEMESTRE 2011


PROF. IVAIR REIS N. ABREU
05/04/2011 REV.1

PLANEJAMENTO DIDTICO PEDAGGICO DA DISCIPLINA MICROPROCESSADORES II UNIDADE: EEUPM DISCIPLINA: Microprocessadores Aplicao PROFESSOR: Ivair Reis Neves Abreu Departamento: Eletrnica ETAPA: 8 CARGA HORRIA: 4 aulas tericas
Introduo: a proposta deste planejamento pedaggico baseia-se no processo de Qualidade Total (TQM) tendo como base o principio PDCA ou seja, PLAN, DO, CHECK e ACT. O planejamento o prprio documento proposto, com objetivos, pr-requisitos, plano de aulas, avaliao e bibliografia deixando bem claro a proposta do curso de forma a ajustar as expectativas necessrias. A nfase no ciclo e no apenas no processo de avaliao (comum em cursos pedaggicos) leva a entender que o objetivo o processo de capacitao do aluno dentro do objetivo proposta atravs de um plano de aulas gradual, acompanhada de verificaes contnuas e principalmente processo de ao corretiva.

18/02/2011 26/05/2011 x------------------------------------------------------------------x Pr-Requisito -> 15 semanas -> Objetivo Final Pr-Requisitos: Microprocessadores, Linguagem C, Eletrnica Digital. OBJETIVO: o aluno dever adquirir praticar os conceitos bsicos de sistemas com microcontroladores nfase em perifricos e programao em linguagem de montagem (assembler) e linguagem estruturada C. Oferecer oportunidade para desenvolvimento das trs dimenses: Conhecimento: Conhecer os conceitos de projetos e programao de linguagem estrutura (assembly e C) de sistemas perifricos de sistemas programveis utilizando microprocessadores, processadores digitais de sinais e microcontroladores. Habilidades: Projetar interfaces e perifricos circuitos eletrnicos utilizando microcontroladores e microprocessadores e programar o sistema utilizando linguagens de montagem ("assembler") e estruturadas (linguagem C). Atitudes: Compreender com profundidade as tecnologias embarcadas, independente da plataforma adotada, nos atuais sistemas eletrnicos incentivando o uso destas tecnologias com controle de todo o ciclo de projeto, produo e suporte tcnico aos usurios. METODOLOGIA Aula expositiva com auxlio de recursos audiovisuais (principalmente retroprojetor). O aluno dever constantemente participar atravs de aplicao de exerccios e projetos. Uma apostila envolvendo todos os pontos abordados servir de apoio didtico durante

as exposies. Trabalhos levaro o aluno a refletir sobre pontos avanados no abordados diretamente na sala de aula. EMENTA: - Reviso de Conceitos de Microprocessadores (Arquitetura e Linguagem Assembler) e Microcontrolador (famlia 8051) e perifricos. - Linguagem estruturada e tcnicas de programao com microcontroladores. Linguagem C aplicada a microcontroladores. - Desenvolvimento de interfaces para microcontroladores: interrupo / temporizao, teclado matricial, display LCD, conversor A/D e comunicao serial. - Comparativo entre microcontroladores do mercado. Contedo Programtico 1. Reviso de conceitos de microprocessadores e L.C.D (4 experincias) 1.1 Reviso da Arquitetura 8051 / AT89Sxx / LPC935. 1.2 Reviso do conjunto de instrues 8051. 1.3 Sistema Mnimo de Projetos com arquitetura 8051 2. Sistema de Interrupo e temporizao de microcontroladores 8051 Teclado Matricial (2 experincias). 3.1 Estudo de Sistema de Controle de Potncia 3.2. Estudo Sistema de Interrupo e Estudo de Temporizadores (timers) 8051. 3.3 Teclado Matricial. 4. Interface de comunicao Serial. Interfaces de Rede (2 experincias) 4.1 Conceitos de Comunicao Serial e Interfaces de Comunicao. 4.2 UART 8051 4.3 Comunicao Serial em C.L.P. 5. Comunicao SPI e Relgio (RTC DS1307) 5.1 Conceito de comunicao SPI 5.2 Controle de um relgio (RTC) com SPI. Relgio DS1307 6 Interface Anlogica / Digital (conversor A/D) (2 experincias). 6.1 Conceito ADC. 6.2 Aplicao ADC no microcontrolador LPC935 7. Comunicao SPI LPC935 Estudo de Caso RTC DS1307

METODOLOGIA Aula expositiva com auxlio de recursos audiovisuais (principalmente retroprojetor). O aluno dever constantemente participar atravs de aplicao de exerccios e projetos. Uma apostila envolvendo todos os pontos abordados servir de apoio didtico durante as exposies. Trabalhos levaro o aluno a refletir sobre pontos avanados no abordados diretamente na sala de aula. CRITRIO DE AVALIAO Mdia = (P1 x 0,8 + Lab x 0,2) x 0,55 + PF x 0,45 + (T1+T2)/2) x 0,05 Onde: P1 = primeira prova semestral - 08/04/2011 P2 = segunda prova semestral. - Secretaria T = trabalho individual de projeto de um sistema de controle. Lab = laboratrio Mdia >= 7 -> aluno aprovado 5,5 <= mdia<6.9 -> aluno aprovado se freqncia > 80 % BIBLIOGRAFIA APLICAES PRTICAS DO MICRONTROLADOR 8051. Vidal Pereira da Silva Jr. - rica DESBRAVANDO O PIC - AMPLIADO E ATUALIZADO PARA PIC16F628A. David de Souza e Nicolas Lavnia. rica. MICROCONTROLADORES MSP430. Fabio Pereira. rica THE 8051 FAMILY OF MICROCONTROLLERS. Richard H. Barnett. Prentice Hall. THE 8051 MICROCONTROLLER. I. Schott Mackenzie. Prentice Hall. Using the MCS-51 Microcontroller 8051. HANG, Han-Way, 2000. Ed. Oxford University C and the 8051. SCHULTZ, Thomas, 2001. Ed. Prentice Hall APOSTILA MICROPROCESSADORES APLICAES. Ivair Reis Neves Abreu

Plano de Aula: Incio: 18/02/2011 Trmino: 26/05/2011 Prazo entrega final das notas: 16/06/2011 Falta Prevista: ---Aulas Previstas: 15 semanas

1. Reviso de Microcontroladores, Linguagem Assembler /

C e Display de Cristal Lquido


1.1 Reviso de Microcontrolador 8051 / LPC935 1.1.1 Conceitos Bsicos de Sistema Progrvel: Sistema Programvel:

Figura - Estrutura de um sistema programvel Arquitetura de um Computador com Barramentos:

Figura - Arquitetura Computador mais barramentos 1.1.2 Arquitetura do Microprocessador (CPU):

Figura - Arquitetura tpica de um Microprocessador o Decodificador de Instrues: Bloco lgico combinacional responsvel por receber o cdigo de operao das diversas instrues e a partir deste gerar sinais de controle externos e/ou internos, bem como sinais de temporizao, com o objetivo de executar a instruo. implementado atravs de lgica combinacional (tabela da verdade), onde as variveis de entrada so o cdigo de operao do microprocessador e as variveis de sada os diversos sinais de controle e temporizao internos/externos. o Unidade Lgica Aritmtica (ULA): Unidade responsvel pela realizao de operaes lgico / aritmticas no microprocessador. As operaes aritmticas so todas baseadas na soma (implementada atravs de lgica OU EXCLUSIVO). Toda lgica de deciso dos programas baseada em operaes lgica / aritmticas. Por exemplo: a comparao entre duas variveis implementada atravs da operao de subtrao que por sua vez viabilizada pela operao de complemento de 2 (A - B = A + /B + 1). A complexidade da ULA do microprocessador determina a capacidade do mesmo em realizar processamentos complexos (como tratamento de imagem ou som em sistemas multimdia). Exemplos clssicos so os microprocessadores tipo D.S.P. (Processador Digital de Sinais) ou os coprocessadores aritmticos presentes na famlia de computadores PC at os microprocessadores 486-SX.

o Registradores: Posies de memria internas (latchs tipo D) responsveis pelo armazenamento temporrio de informaes gerais (registradores genricos) ou especficas.

Registradores para armazenamento de dados ou endereos dentro do microprocessador. So implementados atravs de latchs internos (podendo ser comparados a posies de memria dentro do microprocessador). Quanto maior o nmero de registradores internos maior a velocidade de processamento, pois no necessrio o acesso memria externa para armazenamento de variveis. comum os microcontroladores e os D.S.P.s possurem algumas centenas de posies de memria internas, diminuindo em muito o tempo de acesso memria. Outro exemplo bastante apropriado a memria caches internas aos microprocessadores 486 e PENTIUM. o Registradores Especficos: Acumulador: principal registrador de auxlio da U.L.A. Bastante acessado pelas instrues, o registrador armazenador dos resultados da U.L.A. O nmero de bits do acumulador pode ser do tamanho da via de dados ou o dobro (para aumentar a preciso do resultado presente no acumulador). Flag: registrador sinalizador de algumas condies do acumulador (portanto do resultado) depois de realizadas operaes lgico / aritmticas. As condies encontradas normalmente so: zero, sinal, vai-um, overflow, paridade, etc. Contador de Programa (PC): registrador armazenador do endereo da prxima instruo. Determina o fluxo do programa. Quando o programador altera o valor do PC, necessariamente desvia o programa (atravs de saltos sem retorno ou chamada de subrotinas). Apontador de Pilha (SP): registrador armazenador do endereo na rea de pilha do sistema. Ser nesta rea que sero armazenados endereos de retorno das sub-rotinas, bem como parmetros dos diversos registradores.

o Temporizao das Instrues - Ciclo de Instruo: As atividades de um processador central so cclicas. O processador busca a instruo na memria, executa a tarefa ligada ao cdigo lido, busca a prxima instruo e assim por diante. A temporizao de um computador depende basicamente do sinal de clock que sincroniza todas as operaes do sistema. O clock gerado a partir de um oscilador com freqncia determinada normalmente por um cristal. Este cristal pode estar interno ao microprocessador ou ser implementado atravs de um C.I. dedicado a isto. A figura abaixo mostra o circuito de Clock do microcontrolador 8051 (cristal e externo)

Figura - Oscilador Ciclo de instruo: nmero de perodos de clock necessrios para executar uma instruo. O ciclo de instruo composto basicamente dos ciclos de mquina M1 e M2. Ciclo de Mquina: composto dos ciclos M1 ou busca da instruo (onde o cdigo de operao lido na memria) e ciclo M2 ou ciclo de execuo. O ciclo de busca da instruo vai depender do nmero de bytes necessrios para a leitura da instruo (por exemplo: o 8085 possui instrues de at 3 bytes que obviamente necessitam de 3 ciclos de busca de cdigos na memria). O tempo total necessrio para o ciclo de instruo determinado pelo nmero de estados T (ou nmero de pulsos do clock) fornecidos pelo conjunto de instrues do microprocessador. o Circuito de Inicializao: Tambm conhecido por reset, a entrada de inicializao nos microprocessadores carrega o registrador de endereo PC com o endereo inicial da rea de programa (normalmente 0). Pode ser acionado com sinal positivo (0 -> 1) ou negativo (1 -> 0). O manual do microprocessador normalmente informa o tempo mnimo necessrio para que o sinal de reset fique ativo de tal forma a se determinar a constante RC do circuito. fundamental que o sinal de reset seja gerado cada vez que o microprocessador seja ligado (reset automtico) e em pequenas quedas de rede (pois o microprocessador quando tem a tenso de alimentao abaixo do nvel mnimo recomendado, passa a executar tarefas fora do controle).

Figura - Sistema de Reset

- Watch Dog: circuito supervisrio que inicializa o microprocessador a cada perodo de tempo configurvel (1 ou 2 segundos normalmente) se no receber um sinal do microprocessador. Desta forma o programa do sistema deve, em um tempo menor que o tempo do W.D., gerar este sinal. Se o programa se perder e no gerar o referido sinal, o W.D. inicializar o microprocessador.

o Interrupes Sinal de entrada no microprocessador gerado normalmente por perifricos, fazendo o microprocessador parar seu processamento, salvar o endereo atual, saltar para uma sub-rotina especfica do perifrico (endereado pelo vetor de interrupo, que pode ser fixo ou varivel) e posteriormente retornar ao ponto de parada (poderamos comparar o processo a uma chamada de subrotina atravs de um sinal de hardware). Exemplo: -Atendimento ao teclado: quando uma tecla acionada, o teclado gera um sinal positivo que ao entrar na interrupo do microprocessador faz o mesmo parar o processamento, salvar o endereo atual do PC na pilha e saltar para o endereo indicado no vetor de interrupo (varivel ou fixo). Dentro dos microprocessadores esto disponveis registradores de configurao que determinam interrupes pendentes e nveis de prioridade.

Em Microcontroladores as interrupes normalmente esto ligadas a perifricos internos (Ports, Uart, Timer, A/D, etc). 1.1.3 Arquitetura de Microcontroladores 8051 Arquitetura do Microcontrolador 8051:

Figura - Arquitetura MCS-51 (fonte: Intel)

Arquitetura funcional

Figura - Arquitetura Funcional (fonte: Apostila MCS-51 Ricardo Zelenovsky) Pinagem: - Vcc,Gnd: alimentao nica de 5 Vcc. - X1-X2: conectada ao cristal externo (12 Mhz tpico). O sistema de temporizao interno divide a freqncia do cristal por 12, proporcionando um ciclo tpico de mquina de 1 mseg. - RST: entrada de inicializao ativa em nvel alto __ - EA ("external acess"): em nvel baixo, desabita os 4 kbytes de memria de programa interna. Toda a busca de instruo realizada externamente (atravs de uma EPROM). Em nvel alto habilita a memria interna.

- ALE ("Address Latch Enable"): na utilizao de memria de programa externa, este pino tem a funo de indicar a presena de endereo (em nvel alto) ou dado (em nvel baixo) no barramento de endereo/dado multiplexado (AD0-AD7).

____ - PSEN ("Program Strobe Enable"): em nvel baixo indica leitura de uma instruo da rea de programa. Normalmente ligado ao pino RD da memria de programa. - Port P0 (P0.0-P0.7): seus 8 pinos podem ter dupla funo. Se no houver memria externa, so utilizados como sinais de entrada/sada do "latch" bidirecional P0. Se houver memria externa, atua como 8 sinais multiplexados de dados/endereo (AD0AD7). O sinal de ALE indica a condio deste barramento. - Port P1 (P1.0-P1.7): 8 pinos de entrada/sada do "latch" bidirecional P1. - Port P2 (P2.0-P2.7): seus 8 pinos tambm podem ter dupla funo. Se no houver memria externa com mais de 256 endereos, so utilizados como sinais de entrada/sada do "latch" bidirecional P2. Se houver necessidade de endereamento maior que 8 bits, atua como 8 sinais de endereo A8-A15. - Port P3 (P3.0-P3.7): novamente, seus 8 sinais tem dupla funo: - P3.0: RxD (recepo serial) / port P3.0 - P3.1: TxD (transmisso serial) / port P3.1 - P3.2: INT0 (interrupo 0) / port P3.2 - P3.3: INT1 (interrupo 1) / port P3.3 - P3.4: T0 (entrada Timer 0) / port P3.4 - P3.5: T1 (entrada Timer 1) / port P3.5 - P3.6: WR (sinal de escrita da RAM externa)/port - P3.7: RD (sinal de leitura da RAM externa)/port Descrio das funes internas: - U.L.A.: unidade lgia aritmtica de 8 bits, responsvel pela execuo das 4 operaes aritmticas bsicas e das operaes lgicas tradicionais (AND, OR, OR EXCLUSIVE, INVERSO e SHIFT). - Acumulador: registrador de 8 bits mais utilizado pelo microcontrolador. Normalmente utilizado para colocar resultados da U.L.A. ou fatores utilizados nas operaes lgico / aritmticas. No caso das operaes de multiplicao, o registrador B tambm utilizado para colocao dos resultados, pois o resultado apresentado em 16 bits. - Flag PSW: registrador sinalizador das operaes aritmticas da U.L.A., configurador dos registradores R0-R7 e para uso geral. Abaixo mostrado a posio e nome de seus 8 bits: CY AC F0 RS1 RS0 OV P

P3.6

CY (PSW.7): indica presena de bit CARRY (vai um) nas operaes aritmticas da U.L.A. AC (PSW.6): indica presena do bit Auxiliar Carry quando ocorre vai um entre os 3 e 4 bits nas operaes aritmticas da U.L.A.. F0 (PSW.5): bit para uso livre do programador. RS1 e RS0 (PSW.4 E PSW.3): configura qual banco de registradores R0-R7 ser acessado.

0 - 0 -> primeiro banco 0 - 1 -> segundo banco 1 - 0 -> terceiro banco 1 - 1 -> quarto banco Ex.: MOV PSW,#00001000B ;RS0=1 E RS1=1 -> SEGUNDO BANCO

OV (PSW.2): indica presena de bit CARRY (bit 8 ativado) nas operaes de multiplicao da U.L.A. Auxilia tambm as operaes de subtrao. P (PSW.0): indica paridade do acumulador. Se setado, indica nmero par de '1' no acumulador. Caso contrrio indica nmero mpar. - Contador de Programa (PC): registrador de 16 bits que guarda o endereo da prxima instruo. Quando o 8051 resetado, este registrador zerado, fazendo o 8051 buscar a primeira instruo da memria. - Apontador de Pilha (SP): registrador de 8 bits indicador do endereo inicial da pilha do 8051. A pilha necessariamente tem que estar localizada entre os endereos 30H e 7FH da rea RAM interna do microcontrolador. O tamanho da pilha deve ser suficiente para permitir os diversos acessos de sub-rotinas do programa (considerando os armazenamento dos endereos do PC e dos parmetros da instruo PUSH). - Ponteiro de Memria Externo (DPTR): registrador de 16 bits utilizado para armazenar endereos de memria externa. - Registrador B: registrador auxiliar nas operaes de multiplicao e diviso. - Decodificador e Registrador de Instrues / Controle e Temporizao: sistema responsvel pelo armazenamento, decodificao e execuo dos cdigos de operao (bytes) das 256 instrues do 8051. Controla os sinais externos de controle (reset, ALE, configurao da memria interna de programa e sinal de leitura da memria externa). - Timers: o 8051 possui 2 sistemas de temporizao de 16 bits. Maiores detalhes sero fornecidos nos captulos subsequentes. - Unidade Serial: sistema para comunicao serial assncrona full-duplex. Maiores detalhes sero fornecidos nos captulos seguintes. - Memria de Dados (SFR) e de Programa: o 8051 possui um estrutura de acesso ao sistema de memria conhecida como HARVARD, onde o acesso a memria de programa diferenciado do acesso a memria de dados (atravs de sinais de leitura distintos). Desta forma, o microcontrolador no permite que um determinado programa fique localizado na rea de dados ou vice-versa. A grande vantagem deste sistema a otimizaco do sistema no acesso as instrues do programa e aos dados. O programa dos sistemas com microcontroladores normalmente so dedicados (FIRMWARE). Observe que este modo de acesso a memria diferente dos microcomputadores padro IBM-PC, onde normalmente os programas localizam-se na rea de dados (da o fato de cada vez mais ser importante uma grande rea de memria RAM dentro dos computadores). - Memria de Dados (SRF): o 8051 possuir 256 bytes de memria de dados interna e permite o acesso de mais 64 Kbytes de memria de dados externa (unicamente atravs das instrues MOVX). Na maioria das vezes a memria interna de dados suficiente, pois as aplicaes de controle normalmente no exigem muita quantidade de memria voltil (j que os programas no so armazenados na rea de RAM).

A memria RAM interna divida em 4 reas: - rea de Registradores R0-R7 (00-1FH): o 8051 possui 4 bancos de registradores selecionados atravs dos bits RS1 e RS0 do registrador PSW. Normalmente estes registradores armazenam endereos da rea de rascunho (modo de endereamento indireto). - rea Booleana (binria) (20H-2FH): 16 bytes endereados bit a bit (totalizando 128 bits). Pode-se acessar cada bit individualmente indicando uma determinada condio binria (por exemplo: a tecla A de um teclado foi acionada). Estes bits so acessados pelas instrues booleanas do 8051. - rea de Rascunho (30H-7FH): memria de uso geral onde se localiza a pilha do sistema. - rea de Registradores Especiais (SFR) (80H-FFH): rea onde se localiza todos os registradores com funo especial. O nmero destes registradores varia de acordo com as funes disponveis dentro do processador. Os registradores especiais mais comuns so: - PO (80H): port P0. - P1 (90H). - P2 (A0H). - P3 (B0H). - ACC (E0H): acumulador. - B (F0H) - PSW (D0H): registrador de status - SP (81H): apontador de pilha - DPL (82H): byte menos significativo do registrador DPTR. - DPH (83H): byte mais significativo do registrador DPTR. - PCON (87H): registrador de controle de consumo do 8051. - IE (A8H): registrador de habilitao do sistema de interrupes. - IP (B8H): registrador indicador de prioridade do sistema de interrupo. - TMOD (89H): registrador de modo dos timers. - TCON (88H): registrador de controle do timer 1 - T2CON (C8H): registrador de controle do timer 2. - TL0 (8AH): byte inferior do timer 1. - TH0 (8CH): byte superior do timer 1. - TL1 (8DH): byte inferior do timer 2. - TH1 (8BH): byte superior do timer 2. A seguir o mapa de endereo dos registradores especiais (Databook Atmel 89S51 www.atmel.com.br).

Figura - Tabela de Endereo dos Registradores Dedicados (fonte: Atmel)

1.1.4 Conjunto de Instrues 8051 (mneumnicos)

1.1.5 Microcontrolador LPC93x (NXP)

Famlia Microcontroladores LPC9xx NXP

Arquitetura Interna LPC93x NXP

Principais Caractersticas

Memria Flash de 4 / 8 / 16 Kbytes com fcil programao. Memria RAM 256 bytes + 512 bytes de memria auxiliar nas verses LPC935 / 936. Memria EEPROM 512 bytes 4 entradas multiplexadas de conversor ADC de 8 bits e 1 DAC. 2 comparadores analgicos com entrada selecionvel. 2 timers de 16 bits (temporizador com overflow ou PWM). Sistema adicional de timer de 23 bits podendo ser utilizado como RTC (relgio). UART com gerador de baund rate, deteco de parada e erro de comunicao. CCU (Capture Compare Unit) para gerao de PWM e funes de comparao de sinais. RC interno de alta preciso (erro < 1%) dispensando cristal externo. Alimentao de 2,4V a 3,6 V com pinos de I/O tolerantes a 5 V (resistor de pullup). CPU 8051 de alta velocidade (6 vezes a velocidade 8051 dividindo a frequencia do cristal / oscilador por 2. Cristal at 18 Mhz (ciclo de instruo de 111 nseg). Gravao Serial (ISP) da memria Flash, facilitando a programao in circuit. Gravao In-Circuit Programming (ICP) permitindo processos produtivos geis e proteo do cdigo da memria. Watch Dog com oscilador independente (interno). Seleciona at 8 perodos de Watch Dog. Detector de baixa tenso (Brown Out Detect) permitindo o desligamento suave do sistema com opo de gerar uma interrupo. Modo Idle de economia de energia (ativa interrupo) e 2 modos de Power Down com correntes de repouso menores que 1 uA. Reset externo ativo em nvel alto (com detector de sinais esprios). Sistema de Reset interno. Oscilador interno com freqncia selecionada por programao. Frequncia externa de 20 Khz e 18 Mhz. Detector de falha de clock atravs do Watch Dog. Programao dos ports de 4 modos: bi-direcional, coletor aberto, com resistor interno de push pull e somente entrada. Capacidade de corrente dos ports de at 20 mA (aciona leds) dentro das restries mximas de corrente de cada chip. Controle de EMI (rudos) nos ports, exigindo 10 nseg de tempo mnimo de subido de cada sinal. Quando utilizado clock e reset interno exige apenas ligao dos pinos GND e Vcc. Interrupes com 4 nveis de prioridade. Interrupes de teclado de 8 entradas. Entradas com Schimitt Trigger. Suporte a emulao externa.

Descritivo da Pinagem Pode ser consultada no item 1.2.1, pgina 05 do Manual. No diagrama de pinagem e o diagrama lgico do LPC935 possvel acessar a funcionalidade.

Configurao dos Ports: Os 3 ports so configurados individualmente de 4 formas (pag. 40, item 5.1 do Manual):

Bidirecional: configurao tpica do 8051, pode ser configurado como entrada / sada (com resistor de pull-up). Sada: sem resistor de pull-up (open drain output) Sada com resistor de pull-up Entrada com scgnutt-trigger

Registradores de configurao: PxM1.y w Px.M2.y, onde X representa o Port e o Y o pino do Port 0 0 Bidirecional 0 1 Saida com resistor pull up. 1 0 Entrada (alta inpedncia). 1 1 Sada coletor aberto Exemplo: Configurar os 3 ports como bidirecionais mov P0M1,#0x00 mov P0M2,#0x00; mov P1M1,#0x00 mov P1M2,#0x00; mov P2M1,#0x00; mov P2M2,#0x00;

Inicializao (Reset) Item 7 (pgina 49 do Manual)


O pinio P1.5 / RST pode ser ativo como reset externo (condio inicial aps ligar). O bit RPE (Reset Pin Enable) do registrador UCFG1 (pg. 136 do Manual Registrador da Memria Flash configurado na gravao da memria) quando colocado em 1 habilita o reset interno.

Registrador UCFG1 Escrito na Memria Flash durante a Gravao Para ativar reset interno RPE=0

Se nvel baixo o pino P1.5 pode ser utilizado como pino de entrada. O circuito tpico de um reset externo mostrado abaixo:

O gravador FlashMagic configura o registrador UCFG1 funo DEVICE CONFIGURATION

Temporizao (Clock) Item 2 (pagina 25 do Manual) A velocidade do LPC9xx 6 vezes mais rpida que o 8051. Cada ciclo de maquina ocupa 2 ciclos de clock interno. Fontes de sinal de clock:

O sinal de clock pode ser de um cristal externo (XTAL1, XTAL2), clock externo (XTAL1), oscilador RC interno (7,3728 Mhz) ou oscilador Watch Dog. O registrador DIVM divide a frequncia da fonte de clock utilizando a frmula:

Onde fosc a frequncia da fonte de clock e N o valor de DIVM. Como este valor pode variar de 0 a 255, a frequncia de sada ir de fosc at fosc/512. Exemplo: 1. Utilizando o oscilador interno e o valor de reset de DIVM (00), a frequncia de trabalho ser de 7,373 Mhz ou ciclo de clock de 0,135 useg (cada ciclo de mquina ocupa 0,135 x 2 = 0,270 us) 2. Carregando DIVM com 6, a frequncia da fonte ser dividida por 2x6=12 MOV DIVM,#06

3. Rotina de 500 mseg. ;ROTINA DE 500 MILISEGUNDOS ;CICLO -> RC INTERNO -> 7,37 MHZ -> DIVIDE POR 1 (LPC935) -> CICLO DE ;MAQUINA 2 x 0,135 uSEG = 0,27 us. TEMPO500: PUSH PUSH PUSH MOV MOV MOV NOP NOP NOP NOP NOP NOP NOP DJNZ DJNZ DJNZ POP POP POP RET Exerccios 1. Fazer um programa de 15 mseg e 100 mseg. 2. Dividir a frequncia de dados por 10 (registrador DIV = 5) e fazer uma rotina de 1 segundo. 30H 31H 32H 32H,#3 30H,#255 31H,#255 ;SALVA REGISTRADORES NA PILHA

RET3A RET1A RET2A

;LOOP COM 9 CICLOS x 0,27 x 256 = 0,62 mseg

31H,RET2A 30H,RET1A ;LOOP SECUNDARIO -> 0,62 X 255 = 0,16 seg 32H,RET3A ;FINAL 3 X 0,16 = 0,5 SEG 32H 31H 30H

O LPC935 tem um oscilador interno podendo ser configurado com cristal externo. O registrador envolvido o TRIM (endereo interno 0x96). Com o bit ENCKL = 0 (condio inicial do reset) o microcontrolador est configurado para operar com oscilador interno Registrador TRIM:

No processo de inicializao dos 5 bits TRIM so carregados no oscilador interno para aferio. Estes bits no devem ser ALTERADOS no processo de configurao do oscilador. ENCLK = 1, clock externo de oscilador nos pinos XTAL1 e XTAL2. RCCLK = 1, seleciona RC interno sem necessidade de evento de reset. Exemplo de inicializao UTILIZAR CLOCK INTERNO DA INICIALIZAO ORL TRIM,#0x40 ;ENCLK = 1 -> CLOCK EXTERNO

Sistema Mnimo LPC935 Kit de Desenvolvimento QSP935 Ver no anexo 2 esquema do Kit QSP935 (arquivo PDF disponvel no laboratrio). Observar ligao dos Ports, Fonte de Alimentao e circuito serial de gravao. CPU e o sistema mnimo com Reset, Clock e Alimentao.

Sistema de Teclado Matricial (4x3) com 4 linhas (sada) e 3 colunas (entradas)

Display LCD (D0-D3) utilizando Port P0, controle de Back Light

Controle de Entrada / Saida (utilizar transistor Mosfet BSS89 no lugar o NPN BC 547

Ports de Entrada / Saida:

LED RELE BEEP

DEFINE P1.6 DEFINE P0.0 DEFINE P2.7

CHAVES2 DEFINE P1.4 CHAVES3 DEFINE P2.0 LDR DEFINE P0.2

; IGUAL A LINHA 1 DO TECLADO

Relgio DS1307 com barramento SPI

Chave de seleo

Fonte de Alimentao, Comunicao Serial e Programao:

Estrape Gravao e Alimentao

Estrape JP5 ativo -> alimenta microcontrolador (operao normal) Estrape JP6 ativo -> controla Reset atravs da programao ISP. Estrape JP7 -> alimentao USB Estrape JP8 -> alimentao fonte externa

1.2 Display LCD programvel


1.2.1 Introduo Terica: Mdulo LCD

Funcionamento Bsico: Atualmente est disponvel no mercado uma grande variedade de Displays de Cristal Lquido com circuitos de controle e processamento interno que visam facilitar o projeto de hardware e a rotina de programao destes tipos de dispositivos de sada. A figura a seguir mostra os principais controles destes tipos de displays:

Figura -Arquitetura bsica dos displays L.C.D.

Figura - Display 16 x 2

Descrio dos sinais: - D0-D7: barramento de dados com dupla funo: envio dos comandos de programao do display (posicionamento do cursor, endereo do caracter a ser utilizado, etc.) e dos dados a serem escritos no display. - C/D (RS): em nvel baixo, indica que o barramento de dados D0-D7 carrega a informao de controle (configurao geral do display). Em nvel alto, informao de dados (informao a ser mostrado no display). Sinal normalmente ligado ao endereo A0 (endereo mpar -> dado; endereo par -> controle) - E: sinal que em nvel alto habilita o display. Nos modelos com 4 linhas, utilizamos um sinal E1 para a habilitao das 2 primeiras linhas e um sinal E2 para a habilitao das 2 ltimas linhas. _ - R/W: sinal de entrada indicando em nvel baixo processo de escrita (barramento de dados como entrada) e em nvel alto processo de leitura (barramento de dados como sada). - Vo: entrada de tenso para controle de luminosidade do display

Circuito recomendado para controle de luminosidade - Vss/GND: entrada de alimentao nica de +5 Vcc.

Sistema Mnimo com o mdulo LCD 4 bits RS (C/D) -> P0.1 E -> P0.3 D4 D7 -> PORT P0.4 a P0.7

Controle / Inicializao Mdulo LCD


Com o sinal C/D (RS) colocado em nvel baixo possvel escrever comandos de INICIALIZAO (podem ser utilizados como comandos individuais como limpeza do LCD) e ENDEREAMENTO. Os principais comandos utilizados so: Nmero de Linhas / Bits Dados: o 30H: 1 linha 8 bits o 20H: 1 linha 4 bits o 38H: 2 linhas 8 bits o 28H: 2 linhas 4 bits o 0CH: sem cursor o 0EH: com cursor fixo o 0DH: cursor piscante o 07H: mensagem para direita o 05H: mensagem para esquerda o 01H: limpeza LCD

Para o posicionamento do cursor/mensagem dentro do display necessrio enviar um comando de endereamento, sendo a 1 Posio Superior o endereo 80H e a 1 Posio Inferior o endereo C0H. Tabela para LCD 16 x 2 (1 pino de seleo E)

Inicializao mdulo LCD 4 bits


A inicializao do LCD de 4 bits necessita um controle de nibbles enviados. O nibble mais significativo da instruo enviado primeiro seguido do nibble menos significativo (com espera de 15 ms ou leitura do BUSY FLAG). Os fabricantes indicam o envio de 3 nibble 3 (0011) e envio dos comando 28H, 05H, 0CH e 01H para 1 linhas, mensagem para direita, sem cursor e limpeza: 3332-280 C01 Exemplo: considerando o sistema mnimo indicado anteriormente para sistema de 4 bits, inicializar um LCD para 2 linhas, mensagem a direita, sem cursor, limpeza e 1 posio superior (80H) ;DEFINE LABELS RS DEFINE P0.1 E DEFINE P0.3 D1 DEFINE P0.4 D2 DEFINE P0.5 D3 DEFINE P0.6 D4 DEFINE P0.7 ....... ;ROTINA DE INICIALIZAO NA BIOS BIOS ;INICIALIZA LCD PARA 4 BITS, 2 LINHAS, SEM CURSOR, DESLOCAMENTO DIREITA E LIMPEZA CLR RS ;entrada CD = 0 -> comando CLR E ;ENABLE LCD = 0 -> DESABILITADO CALL TEMPO100 ;ESPERA 100 MSEG PARA ESTABILIZAR LDC ;ENVIE SEQUENCIA DO NIBBLE 3 (0011) e 2 MOV CALL CALL CALL MOV CALL CALL CALL MOV CALL CALL CALL NIBBLE_LCD,#0x03 ;ENVIA MODO 4 BITS LCD WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS E_PULSO ;ATIVA ENABLE TEMPO15 NIBBLE_LCD,#0x03 WR_NIBBLE E_PULSO TEMPO15 NIBBLE_LCD,#0x03 WR_NIBBLE E_PULSO TEMPO15

MOV NIBBLE_LCD,#0x02

CALL WR_NIBBLE CALL E_PULSO CALL TEMPO15 ;ENVIE SEQUENCIA DE COMANDOS 2-8-0-C-0-1 MOV NIBBLE_LCD,#0x02 CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x08 CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x00 CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x0C CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x00 CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x01 CALL WR_NIBBLE CALL E_PULSO RET ;GERA PULSO PINO ENABLE E AGUARDA 15 MSEG. E_PULSO SETB E CLR E CALL TEMPO15 ;15 MSEG RET ;ESCREVE NIBBLE_LCD NO NIBBLE DO LCD WR_NIBBLE PUSH ACC MOV A,NIBBLE_LCD RRC A MOV D1,C ;ESCREVE PRIMEIRO BIT NO LCD RRC A MOV D2,C ;ESCREVE PRIMEIRO BIT NO LCD RRC A MOV D3,C ;ESCREVE PRIMEIRO BIT NO LCD RRC A ;LIMPEZA (01H) ;CURSOR APAGADO (0CH) ;2 LINHAS, 4 BITS (28H)

MOV D4,C ;ESCREVE PRIMEIRO BIT NO LCD POP ACC RET Exerccio 1. Configurar um LCD em um sistema de 4 bits com cursor fixo. Programao Dados (C/D = 1) Para a escrita de dados no display a entrada C/D colocada em nvel ALTO. O display necessita ser inicializado e o cursor posicionado na posio do primeiro caracter. Uma vez posicionado este caracter, automaticamente o display incrementa a posio do cursor, no necessitando de reprogramaes constantes do posicionamento do display. O dado envido para o LCD no formato ASCII. Se o display for de 4 bits, da mesma forma que a programao de controle, necessrio enviar inicialmente o nibble superior e posteriormente o nvel inferior. Exemplo: Escrever MACK no meio da primeira linha do LCD ;LCD de 4 bits #include "ioP89LPC935.h" ;DEFINE LABELS RS DEFINE E DEFINE D1 DEFINE D2 DEFINE D3 DEFINE D4 DEFINE

P0.1 P0.3 P0.4 P0.5 P0.6 P0.7 0x30H ;BYTE A SER ESCRITO NO LDC 4 BITS

BYTE_LCD DEFINE ASEG

ORG 0 INICIO MOV SP,#PILHA CALL BIOS ;INICIALIZA LDC 8 BITS CALL ES_MACK ;ESCREVE MACK LDC ;PROGRAMA MAIN DO APLICATIVO .. ;SUBROTINAS BIOS ............ RET ;ESCREVE MACK NO MEIO DA SEGUNDA LINHA -> END. C5H

;COMANDO PARA ENDEREO LCD CLR RS ;PINO CD EM NVEL BAIXO - CONTROLE ;ENDEREO 0xC5 MOV NIBBLE_LCD,#0x0C CALL WR_NIBBLE CALL E_PULSO MOV NIBBLE_LCD,#0x05 CALL WR_NIBBLE CALL E_PULSO ;ESCREVE LCD STRING MACK SETB RS ;PINO CD EM NIVEL ALTO - DADO MOV DADO_LCD,#'M' CALL WR_BYTE MOV DADO_LCD,#'A' CALL WR_BYTE MOV DADO_LCD,#'C' CALL WR_BYTE MOV DADO_LCD,#'K' CALL WR_BYTE RET ;ROTINA ENVIA DADOS ASCII CONTIDO EM DADO_LCD PARA LCD WR_BYTE PUSH ACC ; SETB RS ;DADO ;TRATA NIBBLE SUPERIOR MOV A,DADO_LCD ANL A,#0xF0 ;ISOLA NIBBLE SUPERIOR SWAP A ;TROCA NIBBLES MOV NIBBLE_LCD,A CALL WR_NIBBLE CALL E_PULSO ;TRATA NIBBLE INFERIOR MOV A,DADO_LCD ANL A,#0x0F ;ISOLA NIBBLE INFERIOR MOV NIBBLE_LCD,A CALL WR_NIBBLE CALL E_PULSO POP ACC RET ;ESCREVE NIBBLE_LCD NO NIBBLE DO LCD WR_NIBBLE

RET ;GERA PULSO PINO ENABLE E AGUARDA 15 MSEG. E_PULSO ... RET Exerccio Escrever o seu primeiro nome centralizado na 2 linha do LCD

Escrita do BYTE no LCD utilizando tabela


Pode-se utilizar o conceito de tabela para envio de Strings para o LCD. Neste caso utiliza-se a instruo MOVC A,@A+DPTR. Exemplo: Enviar a String ENGENHARIA MACKENZIE para a primeira e segunda linha do LCD de forma centralizada em um mdulo LCD de 4 bits

#include "ioP89LPC935.h" ;DEFINE LABELS RS DEFINE E DEFINE D1 DEFINE D2 DEFINE D3 DEFINE D4 DEFINE BYTE_LCD CONTADOR1 ASEG ORG 0 INICIO MOV SP,#PILHA CALL BIOS

P0.1 P0.3 P0.4 P0.5 P0.6 P0.7 DEFINE DEFINE 0x30H ;BYTE A SER ESCRITO NO LDC 4 BITS 0x31H ;CONTADOR GENRICO

;INICIALIZA LDC 8 BITS

CALL L1_LCD ;ENVIA COMANDO LINHA 1 (0x80) MOV DPTR,#TAB1 CALL STRING_LCD CALL L2_LCD ;ENVIA COMANDO LINHA 1 (0xC0) MOV DPTR,#TAB2 CALL STRING_LCD ;PROGRAMA MAIN DO APLICATIVO ..

;SUBROTINAS BIOS ............ RET ;ENVIA DADO ASCII DE UMA TABELA CARREGADA EM DPTR PARA O LCD STRING_LCD PUSH ACC SETB RS ;ATIVA COMANDO DE DADOS MOV CONTADOR1,#00 ;INICIALIZA CONTADOR LOOP_LCD MOV A,CONTADOR1 MOVC A,@A+DPTR ;LE TABELA MOV DADO_LCD,A ;CARREGA DADO TABELA CALL WR_BYTE ;ENVIA DADO ASCII PARA LCD INC CONTADOR1 MOV A,CONTADOR1 CJNE A,#16,LOOP_LCD POP ACC RET ;COMANDO PRIMEIRA LINHA LCD ;ENVIA 0x80 PARA O LCD COMO COMANDO L1_LCD CLR RS ;COMANDO ;ENVIA COMANDO LINHA SUPERIOR -> 80H MOV NIBBLE_LCD,#0x08 ;ENVIA MODO 4 BITS LCD CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS CALL E_PULSO ;ATIVA ENABLE MOV NIBBLE_LCD,#0x00 ;ENVIA MODO 4 BITS LCD CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS CALL E_PULSO ;ATIVA ENABLE RET ;COMANDO PRIMEIRA LINHA LCD ;ENVIA 0xC0 PARA O LCD COMO COMANDO L2_LCD CLR RS ;COMANDO ;ENVIA COMANDO LINHA SUPERIOR -> C0H MOV NIBBLE_LCD,#0x0C ;ENVIA MODO 4 BITS LCD CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS CALL E_PULSO ;ATIVA ENABLE MOV NIBBLE_LCD,#0x00 ;ENVIA MODO 4 BITS LCD CALL WR_NIBBLE ;ENVIA NIBBLE PARA OS PORTS CALL E_PULSO ;ATIVA ENABLE

RET WR_BYTE: ............. RET WR_NIBBLE: ........... RET ;TABELAS LCD ;COLOCAR 16 CARACTERES NA TABELA TAB1 DB ' TAB2 DB ' END Exerccios 1. Explicar a funo das rotinas STRING_LCD, WR_BYTE, WR_NIBBLE, L1_LCD e L2_LCD. Detalhar as rotinas WR_BYTE e WR_NIBBLE. 2. Alternar, com intervalo de 1 segundo, as Strings <TECNOLOGIA> < MACKENZIE> e <TURMA 6T> <SALA XXX>. No inicio piscar um LED presente em um port P1.6 (acionado com zero). Apenas chamar as sub-rotinas envolvidas. ENGENHARIA ' MACKENZIE '

2. Sistema de Interrupo, Controle de Potncia e Temporizao


2.1 Conceito de Interrupo Sinal de entrada no microprocessador gerado normalmente por perifricos, fazendo o microprocessador parar seu processamento, salvar o endereo atual, saltar para uma sub-rotina especfica do perifrico (endereado pelo vetor de interrupo, que pode ser fixo ou varivel) e posteriormente retornar ao ponto de parada (poderamos comparar o processo a uma chamada de subrotina atravs de um sinal de hardware). Exemplo: -Atendimento ao teclado: quando uma tecla acionada, o teclado gera um sinal positivo que ao entrar na interrupo do microprocessador faz o mesmo parar o processamento, salvar o endereo atual do PC na pilha e saltar para o endereo indicado no vetor de interrupo (varivel ou fixo). Dentro dos microprocessadores esto disponveis registradores de configurao que determinam interrupes pendentes e nveis de prioridade.

2.2 Interrupes do MSC-51/ LPC935

2.2.1 Sistema de Interrupo MSC-51


O microcontrolador 8051, esta famlia possui 5 interrupes com vetores fixos, com a prioridade mais alta podendo ser programada pelo registrador IP. O nvel de prioridade default e os vetores de interrupo so apresentados abaixo: IE0 (interrupo externa 0) -> 0003H -> + prioridade TF0 (interrupo do timer 0) -> 000BH IE1 (interrupo externa 1) -> 0013H

TF1 (interrupo do timer 1) -> 001BH SRT (interface serial) -> 0023H -> - prioridade As interrupes do 8051 so do tipo nesting , ou seja, a interrupo acontecendo INTERROMPE o programa e a interrupo que est sendo executada, desde que tenha a prioridade mais alta (ver IP abaixo). Se o nvel for a mesma ser obedecida a prioridade interna acima. As interrupes externas so sensveis a borda de subida ou a nvel (alto). As interrupes do timer so ativadas internamente e a interrupo serial pelo fim da transmisso ou recepo da UART. - Registrador de habilitao do sistema de interrupo: _______________________________ IE: | EA | x | x | ES | ET1 | EX1 | ET0 | EX0 | EA: em nvel baixo, desabilita todas as interrupes ES: em nvel baixo, desabilita interrupo serial ET1: em nvel baixo, desabilita interrupo do timer 1 EX1: em nvel baixo, desabilita interrupo externa 1 ET0: em nvel baixo, desabilita interrupo do timer 0 EX0: em nvel baixo, desabilita interrupo externa 0 - Registrador do nvel de prioridade: ______________________________ IP: | x | x | x | PS | PT1 | PX1 | PT0 | PX0 | PS: em nvel alto, interrupo serial prioridade 1. Caso contrrio, 0. PT1:em nvel alto, interrupo timer 1 prioridade 1. Caso contrrio, 0. PX1:em nvel alto, interrupo externa 1 prioridade 1. Caso contrrio, 0. PT0:em nvel alto, interrupo timer 0 prioridade 1. Caso contrrio, 0. PX0:em nvel alto, interrupo externa 0 prioridade 1. Caso contrrio, 0. Exerccios: 1) - Inicializar um programa habilitar as interrupes TIMER0, EXT1 e SERIAL. Prioridade mxima para a unidade SERIAL (incluir na rotina CONFIG) 2) - Desabilitar apenas a unidade SERIAL, gerar um pulso de 0,5 segundos e ativar a interrupo serial.

2.2.2 Sistema de Interrupo LPC935


O microcontrolador LPC935 possui 15 fontes de interrupo interna (ver pgina 36 do Manual) A tabela abaixo resume as interrupes:

Tabela Interrupes LPC935 As interrupes externas IE0 e IE1 esto respectivamente nos pinos P1.3 e P1.4 Os registradores IEN0 e IEN1 habilitam o sistema de interrupo:

O descritivo dos bits pode ser obtido na tabela de interrupes (EX0 -> interrupo externa 0 pino P1.3, ET0 -> timer 0, etc.). O bit EA em nvel alto habilita os bits de interrupo de IEN0 Os registradores IP0, IP1 e IP0H e IP1H configuram a prioridade dentro de 4 nveis. Mais detalhes na pgina 37 do Manual do LPC935.

Exemplo 1. Habilitar apenas o Timer 0 MOV IEN0,#10000010B ;HABILITA TIMER 0 MOV IEN1,#0x00

Exerccios 1. Configurar registradores IEN0 e IEN1 para habilitar IE1, Serial, interrupo I2C e ADC.

2. Considerando uma chave ligada em IE0 e um sensor ligado em IE1, ativar um buzina (P2.7) por 1 segundo se o sensor interromper o LPC935 e piscar um led 5 vezes se a chave estiver ativada. Colocar no LCD as mensagens LED ATIVADO ou BUZINA ATIVADA por 1 segundo ou quando o led estiver piscando.

2.3 Sistema de Controle de Potncia


O Controle de Potncia no LPC935 implementado pelo registrador PCON.

Os bits SMOD1 e SMOD2 so configurados com a UART (captulo 3) Os bits BOPD e BOI so configurados no processo de Brown-Out GF1 e GF2 so dois bits genricos endereveis. PMOD1 e PMOD2 configuram o sistema de controle de potncia (ver detalhes na pgina 47 do Manual): 0 0 1 1 0 1 0 1 -> sem controle de potncia -> modo IDLE -> modo Power Down parcial (ativa RTC, comparadores, BOD e WDT) -> modo Power Down total (ativa apenas timer / RTC e WDT.

Abaixo uma tabela comparativa do consumo (ver em especificaes detalhadas no Manual). As interrupes externas (ITO, IT1, Keyboard, etc) continuam ativos em todas as interrupes.

Exemplo: 1. Configurar o LPC935 para o modo IDLE (PMOD1 =0 e POMOD2 = 1) ORL PCON,#00000001B ; 0x01 ANL PCON,#11111101B ;0xFD 2. Ficar em modo IDLE. Quando for gerada a interrupo IE1 (P1.4), ligar o LED (P1.6) por 0,5 segundos e voltar ao modo IDLE.

LED

DEFINE

P1.6

ORG 0 JMP INICIO ORG 0x13 JMP LIGALED

;SALTA VETORES DE INTERRUPO (ltimo 0x73) ;VETOR IE1

ORG 0x80 INICIO MOV SP,#PILHA MOV IEN0,#10000100B MOV IEN1,#0x00 LOOP ;MODO IDLE ORL PCON,#00000001B ANL PCON,#11111101B JMP LOOP ;SUBROTINA INTERRUPO CLR LED CALL TEMPO500 SETB LED RETI END

;ATIVA IE1

; 0x01 ;0xFD ;RETORNO DA INTERRUPO

Exerccio 1. Configurar PCON para modo Power Down e Power Down Total 2. Ativar as interrupes externas 0 (sensor presena) e 1 (chave liga/desliga). Ficar em modo Power Down. Se for detectado presena aciona BEEP (P2.0) por 10 segundos. Se for acionada a chave entrar em modo Power Down Total.

2.4) - Sistema de temporizao (Timers) 8051:


(ver pgina 51 do Manual LPC935)

O microcontrolador da famlia 8051 possui 2 timers de 16 bits. Seu nmero programado incrementado por pulsos externos (dos pinos Tin1 e Tin2) ou pelo clock interno de 1/12 fcristal. Quando o nmero do timer chega a zero, a interrupo respectiva (TF0 - end. 000bH ou TF1 - end. 001bH) acionada.

Registrador de Modo (TMOD e TAMOD)

Registradores do sistema de temporizao:

GATE: utilizado quando se deseja um controle do timer externo atravs do pino externo INT0 ou INT1 (dependendo do timer utilizado). Quando este bit est em 1 e o pino INT externo est setado, o bit TR1 do registrador TCON controla o funcionamento do timer. C/T: em nvel alto, coloca o timer como contador dos pulsos da entrada Tin1 (externa). Em nvel baixo, o timer acionada pelo sinal de freqncia 1/12 do oscilador interno. M1 0 0 1 1 M0 0 1 0 1 : controla modo de operao do timer ->possuiu um divisor de 5 bits (TL) e um contador de 8 bits (TH) -> sem divisor, possuiu contador de 16 bits -> contador de 8 bits (TH). O byte TH recarregado a cada ciclo em TL -> para timer.

O registrador TAMOD permite um configurao adicional para PWM (colocar o bit do registrador do bit TxM2 em 1 e M1 e M2 como contador 8 bits. - Registrador de controle

TF0: bit de status. Em nvel alto indica overflow do timer 0. TR0: em nvel alto habilita o funcionamento do timer 0. Precisa ser setado para o timer operar. IE0: bit de status. Em nvel alto indica que houve pulso na entrada do pino Tin0. IT0: em nvel alto indica pulso positivo na entrada do pino Tin0. Em nvel baixo indico pulso negativo. Exerccio 1. Configurar o timer 0 para temporizao de 16 bits e timer 1 para temporizador de 8 bits com carregamento automtico. Colocar o nmero 0AB5H no timer 0 e 20H no timer 1 e disparar Timer0 e Timer1 2. Configurar timer 0 e 1 como PWM. 3. Qual o tempo mximo possvel de ser implementado pelos timers 0 e 1 se utilizarmos um cristal de 12 Mhz para o cristal externo (divide frequncia por 6 e registrador DIVM = 0). Idem ao exerccio anterior utilizando um RC interno 7,373 Mhz interno. 4. Se utilizarmos o timer 0 controlado pela entrada externa 0 (pino T0), qual o tempo mximo de temporizao se recebermos um sinal externo quadrado de 1 Khz? 5. Calcular o valor a ser configurado o timer do LPC935 para RC = 7,373Mhz e tempo do timer de 10 mseg. Fazer o programa de configurao. 6. Gerar um sinal de 10 Khz no port P1 utilizando o Timer 0 (RC = 7,373 Mhz). Idem para 5 Khz e 2 kHz. Ficar esperando em modelo IDLE. 7. Piscar um led 5 vezes por segundo utilizando cristal 12 Mhz. Idem para RC = 7,373. Ficar esperando em modelo IDLE. 8. Gerar um sinal de 3 Khz em P2.0 utilizando o Timer0 e um sinal de 10 Khz em P2.1 utilizando o Timer1. Considerar RC = 7,373. Ficar esperando em modelo IDLE. 9. - Fazer um relgio de 1 segundo (utilizando T0, fc = 12 Mhz). Colocar no display o valor do dgito. Dica: criar um contador de 20 eventos para um timer de 50 msegundos. 2.5 - Sistema de varredura de Teclado/Display. As teclas esto localizadas na interseco de linhas (ports de sada) e colunas (ports de entrada). Ao acionar uma determinada tecla, o sinal da linha colocado na coluna para ser lida. Um sistema de varredura (com freqncia superior da freqncia de toque das teclas) garante um sinal em nvel alto (ou baixo) durante um pequeno perodo suficiente para ser reconhecido pelo port de entrada em caso de acionamento de alguma tecla.

Figura - Teclado de 12 teclas com varredura matricial Port P2 Programa de Leitura do Teclado na interrupo Timer0:
;*** LABELS DO TECLADO TECLA0 DEFINE 0x20.0 TECLA1 DEFINE 0x20.1 TECLA2 DEFINE 0x20.2 TECLA3 DEFINE 0x20.3 TECLA4 DEFINE 0x20.4 TECLA5 DEFINE 0x20.5 TECLA6 DEFINE 0x20.6 TECLA7 DEFINE 0x20.7 TECLA8 DEFINE 0x21.0 TECLA9 DEFINE 0x21.1 TECLAST DEFINE 0x21.2 ;ASTERISTICO * TECLATRA DEFINE 0x21.3 ;TRALHA FTEC DEFINE 0x21.4 ;FLAG TECLADO FTMP100 DEFINE 0x21.5 ;FLAG 100 MSEG. L1 L2 L3 L4 C1 C2 C3 DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE DEFINE P2.0 ;LINHAS COMO ENTRADA P2.1 ;L1 TAMBM TEM A CHAVE S3 P2.2 P2.3 P2.4 ;COLUNAS COMO SAIDA DA VARREDURA P2.5 P2.6

; T0 -> 10 mseg ; T0 -> FFFF 10000/0,81 = 0x3039

TIMERL0 DEFINE 0x39 TIMERH0 DEFINE 0x30

TIMERL0 DEFINE 0xAD TIMERH0 DEFINE 0x90

aseg org 0
JMP INICIO

;VETOR TIMERO ORG 0x0B JMP LE_TECLADO

;salta vetores de interrupo ORG 0x80 INICIO MOV SP,#PILHA ;inicializa timer 0 MOV TMOD,#00010001B ;TIMER 0 E 1 16 BITS MOV TH0,#TIMERL0 MOV TL0,#TIMERH0 ;TEMPO MXIMO -> FFFF X 0,27 useg = 17,7 MSEG.

CLR FTMP100 ;ZERA FLAG DE TEMPO MOV TMP100,#00 ;ZERA VARIAVEL DE CONTAGEM DE TEMPO MOV 20H,#00 MOV 21H,#00 ;LEITURA DO TECLADO SETB TCON_TR0 JNB FTEC,$ CLR FTEC CLR TCON_TR0 ;PARA VARREDUR ;COMEA VARREDURA TECLADO ;ESPERA TECLADO

; TRATAMENTO DO TECLADO .......................

;ROTINAS DE INTERRUPO ; FAZ VARREDURA DO TECLADO E AVALIAR TECLAS. LE_TECLADO PUSH ACC MOV MOV TL0,#TIMERL0 ;CARREGA TIMER 0 BAIXO TH0,#TIMERH0 ;CARREGA TIMER 0 ALTO

;COLOCA COLUNAS (SAIDAS) EM NVEL ALTO PARA CONHEAR VARREDURA SETB SETB C1 C2

SETB

C3

;VARREDURA COLUNA 1 CLR JB SETB SETB SALTO1: JB SETB SETB SALTO2: JB SETB SETB SALTO3: JB SETB SETB L4,SALTO4 TECLATRA FTEC L3,SALTO3 TECLA7 FTEC L2,SALTO2 TECLA4 FTEC C1 L1,SALTO1 TECLA1 FTEC

;VARREDURA COLUNA 2 SALTO4: SETB CLR JB SETB SETB SALTO5: JB SETB SETB SALTO6: JB SETB SETB SALTO7: JB SETB SETB L4,SALTO8 TECLA0 FTEC L3,SALTO7 TECLA8 FTEC L2,SALTO6 TECLA5 FTEC C1 C2 L1,SALTO5 TECLA2 FTEC

;VARREDURA COLUNA 3

SALTO8: SETB CLR JB SETB SETB SALTO9: JB SETB SETB SALTO10: JB SETB SETB SALTO11: JB SETB SETB SALTO12: SETB POP RETI C3 ACC L4,SALTO12 TECLAST FTEC L3,SALTO11 TECLA9 FTEC L2,SALTO10 TECLA6 FTEC C2 C3 L1,SALTO9 TECLA3 FTEC

Exerccios 1. Ligar um BEEP por 100 mseg. a cada tecla digitada. 2. Se for digitada a tecla 1, ligar o led P1.6. Se for digitada a tecla 2, desligar o LED. 3. Colocar a tecla digitada no meio da 2 Linha do LCD. Escrever na 1 Linha <TECLA DIGITADA>

3. Comunicao Serial
3.1 - Introduo e conceitos bsicos: A comunicao serial proporciona a comunicao entre 2 pontos ou uma rede de pontos atravs de um nmero reduzido de vias (2 vias no caso da comunicao fullduplex ou 1 via no caso da comunicao half-duplex, rede de fibras ticas, cabo coaxial utilizado em redes padro ETHERNET). A comunicao serial proporciona maior economia a infraestrutura de transferncia de dados (menor nmero de vias nos cabos, menor nmero de canais nos repetidores de linha, etc.), maior imunidade a rudos, maior alcance. Apresenta como desvantagem bsica a menor velocidade de processamento (variando de 300 b.p.s - baunds at redes de alta velocidade de 100 Mbits/seg) em se comparando com a velocidade de transferncia paralela interna dos computadores (atravs dos barramentos internos). 3.1.1 Comunicao Serial Sncrona Transmissor e receptor devem utilizar um clock compartilhado. Alm do sinal de dados, o transmissor deve enviar um sinal de strobe para que o receptor saiba quando ler o prximo bit de dados. Trata-se de uma comunicao mais eficiente mas com custo maior devido aos circuitos e cabeamento para compartilhamento do clock. 3.1.2 Comunicao Serial Assncrona Transmisso de dados sem utilizao de sinal de clock. Bits especiais so adicionados aos dados para sincronizar o transmissor e o receptor:

Start Bit: adicionado ao incio da word que ser transmitida. Usado para sincronizar clocks do receptor e do transmissor com variao mxima entre clocks de 10%. Bit de dados: os bits de dados (D0-D7) so enviados, com o Bit menos significativo antes (LSB). A sinalizao de cada bit realizada em perodo constante e o receptor l (amostra) o meio fsico no meio deste perodo. Bit de paridade: o transmissor adiciona este bit depois de enviar toda a palavra de dados. O receptor pode utilizar este bit para verificar erros. Bit opcional. Stop Bit: o transmissor envia pelo menos um bit de parada. O receptor, ao receber toda o pacote de bits (Start Bit, Data Bits, Parity Bit, Stop Bit) pode verificar o bit de paridade (previamente configurado entre transmissor e receptor

paridade par, impar ou nenhuma). Deve verificar o Stop Bit, se no o encontrar, ento houve um erro de transmisso e o UART deve avisar que ocorreu um Framing Error, isto , h um problema de sincronia entre transmissor e receptor. A UART receptor descarta os bits de controle (Start, Paridade, Stop) e envia ao microcontrolador host apenas os dados/palavra. 3.1.3 Interface padro RS-232: Segue orientao V.24 da CCITT. Aumenta a imunidade a rudo incrementando os nveis de tenso dos bits 0 e 1 transmitidos.

Figura - Sinais padro TTL e RS-232 A implementao mais comum realizada atravs de circuitos integrados tipo line-drivers como os chip MAX232 (5 V) ou MAX3232 (3 V).

3.1.4 Sinais tpicos de uma interface padro serial


Os sinais mais comuns encontrados em comunicao serial assncrona so mostrados abaixo. Uma aplicao tpica desta configurao implementada na comunicao computador/MODEM (interface utilizada para modulao / demodulao para comunicao na rede telefnica).

- TXD: transmisso de dados. - RXD: recepo de dados. - RTS (request to send): sinal de sada de propsito geral. Normalmente ativo em 0, tem como principais aplicaes validar dados transmitidos (como um sinal STROBE) ou determinar se o sinal de transmisso ou recepo nas comunicaes fullduplex. - CTS (clear to send): sinal de entrada como resposta ao sinal RTS, indicando entendimento do sinal RTS. Em muitos sistemas, este sinal necessita estar em 0 para funcionamento do sistema. - DTR (data terminal ready): sinal de sada de propsito geral. - DSR (data set ready): sinal de entrada de propsito geral. - CD (carrier detect): sinal de entrada indicando que a portadora foi detectada pelo modem.

3.2 - Comunicao serial no 8051- LPC935


A interface serial do microcontrolador 8051 full-duplex, ou seja, pode-se transmitir e receber uma comunicao simultaneamente. Como existe um registrador buffer de recepo (SBUF) possvel esperar-se a leitura deste buffer sem a perda do prximo dado de recepo. Este mesmo buffer SBUF utilizado para a transmisso de dados. Na pgina 71 do Manual do LPC935 possvel buscar detalhes da UART (Unidade Assncrona de Recepo e Transmisso). A seguir mostrado o circuito da UART de um microcontrolador 8051.

Os registradores SBUF de Transmisso e Recepo armazenam os dados a serem transmitidos e recebidos (processo de converso paralelo-srie). O fim da transmisso e fim da recepo geram a interrupo serial (vetor 0x23) e colocam 1 nos bits TI e RI (registrador de controlo SCON). Exemplo de Transmisso de um byte MOV A,#X MOV SBUF,A ;REGISTRADOR DE TX JNB TI,ESPERA ;AGUARDA FIM DE TX

ESPERA

Nos exerccios sero utilizados a rotina TX1 para transmitir o valor do acumulador MOV A,X CALL TX1 ....... MOV SBUF,A JNB SCON_TI,ESPTXA; CLR SCON_TI RET

TX1: ESPTXA:

Aguardo fim de TX

Exemplo de Recepo de um byte ESPERA JNB MOV MOV SETB RI,ESPERA ;AGUARDA DADO RECEBIDO RI=1 A,SBUF BUFRX,A ;GUARDA DADO RECEBIDO FRX ;SETA FLAG RX

Nos exerccios utilizaremos a interrupo serial para ler o dado recebido ORG 0x23 ;VETOR SERIAL JMP TRATA_SERIAL ;LE DADO RX TRATA_SERIAL: PUSH JB ;TRATA RX CLR MOV MOV SETB SETB CLR SAIRX: POP RETI ACC SCON_TI,SAIRX IEN0_ES A,SBUF BUFRX,A FLAG_RX IEN0_ES SCON_RI ACC

;SE TX, SAI

;DESABILITA INTER. SERIAL ;CARREGA BUFFER ;ATIVA FLAG ;HABILITA INTER. SERIAL ;ZERA FLAG RX

3.2.1 Registrador de Controle SCON


O registrador SCON configura a UART do 8051. Abaixo o SCON do LPC935.

SM0 - SM1: modo de operao da UART

0 0 1 1

0 1 0 1

modo 0 modo 1 modo 2 modo 3

Modo 0: comunicao serial de 8 bits (sem START e STOP BIT). Bit LSB o primeiro. Para o LPC935 o Baud-rate ser fixo na frequncia do clock /16. Modo 1: comunicao serial de 10 bits (com START e STOP BIT). Na recepo, o STOP BIT vai para o RB8 do registrador SCON se SM2=0. Baud-rate programvel de acordo com carga do timer 1 (ver adiante). Modo 2: comunicao serial de 11 bits (com START, STOP BIT e PARIDADE). O bit de paridade programvel atravs do bit TB8 de SCON. Na recepo, o

bit de paridade guardado em RB8 de SCON. O baud rate programvel pelo bit SMOD do registrador PCON (ver detalhes no Manual). Modo 3:idem ao modo 2,mas com baud-rate programvel conforme modo 1. SM2: configura modo de comunicao com paridade (pouco utilizado). Ver detalhes no Manual. REN: em nvel alto habilita recepo. TB8: armazena programao dos bits de paridade dos modos 2 e 3. RB8: nos modos 2 e 3, armazena o bit de paridade recebido. TI: bit flag indicador de dado transmitido. Quando for lido necessita ser limpo por software. RI: bit indicador de dado recebido. Quando for lido necessita ser limpo por software. Exemplo 1. Configurar o registrador SMOD para o modo de transmisso assncrona (modo 1), habilitando a recepo. MOV SCON,#01010000B

3.2.2 Configurao de Velocidade (Baund Rate)


A configurao de velocidade pode ser representada pela figura a seguir.

O bit SMOD1 o bit menos significativo do registrador PCON j visto no captulo de controle de potncia. Este bit controla a diviso da velocidade de comunicao por 2.

A velocidade de comunicao do LPC935 pode ser obtida atravs de um gerador interno (registradores BRGR0 e BRGR1) ou pelo Timer 1. O bit SBRGS determina a origem deste sinal (0 -> Timer 1 e 1-> gerador interno). O registrador BRGCON, detalhado a seguir, configura o bit SBRGS. A condio de reset 0 (timer 1).

A tabela abaixo resume a condio dos bits explicados.

Utilizando o Timer 1 como fonte de baund rate, os valores tpicos do temporizador sero 0xFD (76800 e 38400 baunds) e 0xF4 (9600 e 4800 baunds) Exemplo 1. Utilizando o RC interno (7,373 Mhz), calcular o baund rate, utilizando o Timer 1 com 0xFD. CCLK = freq. RC (ver diagrama do oscilador) = 7,373 Mhz Para SMOD=1 (PCON): CCLK/(256-TH1)32 = 7,373 Mhz /(256 0xFD).32 = 7,373 Mhz /(256 253).32 = 7,373 Mhz / 96 = 76800 baunds Para SMOD=0 -> metade -> 38400 baunds

2. Idem para Timer 1 com 0xF4 SMOD=1 CCLK/(256-TH1)32 = 7,373 Mhz /(256 0xF4).32 = 7,373 Mhz /(256 244).32 = 7,373Mhz / 384 = 19200 baunds SMOD=0 -> metade -> 9600 baunds 3. Fazer uma rotina de inicializao para baund rate de 38400 bps (baunds) para o modo 1 (8N1) e habilitando Rx SMOD = 0 Timer1 (8 bits) = 0xFD BIOS MOV IE,#10010000B MOV BRGCON,#00 MOV TH1,#0xFD MOV TL1,#0xFD ANL PCON,#01111111B ;SMOD=0 -> 38400 bps MOV SCON,#01010000B ;MODO 1 HABILITA RX SET RETI 4. Idem para 19200 bps TCON_TR1 ;DISPARA TIMER ;HABITA INTERRUPO SERIAL (0x23) ;TIMER1 (BIT SBRGS = 0) ;38400 ou 19200 bps

3.2.3 Rotina de Trasmisso de uma String (@dptr)


Transmite os dados de um String at encontrar o caracter 0xFF. Caracteres LF (0x0A) e CR (0xD) MOV DPTR,#TAB1 CALL STRING_LCD

;MENSAGEM RX / TX

TXSTRING: PUSH ACC MOV R2,#00 ;VARIAVEL ZERADA LOOPTXS: MOV A,R2 MOVC A,@A+DPTR ;LE STRING CJNE A,#0FFH,CONT2A ;SE NAO CHEGOU NO FINAL CONT.

CONT2A:

JMP CALL INC JMP POP RET

FIMTXS TX1 R2 LOOPTXS ACC

;TX VALOR ACUMULADOR

FIMTXS:

TAB1:

DB 'EXEMPLO TX STRING',0x0A,0X0D,0xFF Exerccios

1. Ligar um led (P3.4) se receber a letra L e desligar se receber a letra M. Transmitir ON e OFF respectivamente. Configurar a UART com o padro 8N1, 38400 bps. 2. Fazer uma rotina para transmitir uma string de uma tabela. Transmitir para um computador a 9600 bps a string <ENGENHARIA MACKENZIE> . Testar utilizando o Hiperterminal ou qualquer outro programa de comunicao. 3. Idem transmitindo a 19200 bps a string completa do seu nome.

Das könnte Ihnen auch gefallen