Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES)

Documentos relacionados
OMPLAB é um programa para PC, que roda sobre a

Microcontrolador PIC 16F877

1.1 Noções básicas sobre interrupções em Microcontroladores

Interrupção Externa. Capítulo 1. Noções básicas sobre interrupções em Microcontroladores PIC

Introdução aos Microcontroladores PIC

Fundamentos de Microprocessadores 2006/2007 1º Ano Eng. Electrotécnica (Bolonha) 1º Exame (14/07/2007)

C:\seminario\guiao_aluno\trab6\trab6.asm

Sistemas Microcontrolados. Período Aula 4. 1 Saulo O. D. Luiz

V1 5V +V. (14)Vdd (6)RB0 PIC 16F628A. (16) Clk-out. C1 33pF. C2 33pF. Figura 1 Circuito pisca-pisca.

MICROCONTROLADORES PIC PRIMEIROS PASSOS

Seqüencial de Leds utilizando o microcontrolador PIC16F628A Vitor Amadeu

Placa McLab1 Upgrade PIC16F84A p/ PIC16F62x

ENGENHARIA ELECTROTÉCNICA. 2º Semestre 2015/2016 FUNDAMENTOS DE MICROPROCESSADORES (XX DIA/NOITE) 2ª FREQUÊNCIA - TIPO

PIC16F628a. Pinagem do PIC16F628a:

Sistemas Microcontrolados. Período Aula 6. 1 Saulo O. D. Luiz

Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes.

Hardware Parte I. Fábio Rodrigues de la Rocha

Experiência. Montagem Kit Didático. 2. Turma: Nota: 5. MICRO-I Prof. Mauricio. Identificação dos Alunos:

Sistemas Digitais e Microcontrolados

Curso PIC 1 Desbravando o PIC. Eng. Diego Camilo Fernandes Labtools Mosaico Didactic Division

Servo-Motor. por. Nuno Monteiro & Gabriel Dinis Eng. Electrotécnica, UTAD Junho de nuno_monteiro@portugalmail.com gabrieldinis@portugalmail.

7. Técnicas de Programação

FACULDADE LEÃO SAMPAIO

PIC. PeripheralInterface Controller. Prof. EngºespLuiz Antonio Vargas Pinto Prof. Vargas

Microcontroladores. 1 Microprocessadores x Microcontroladores Microprocessadores: Microcontroladores: 2 Microcontrolador x DSP

MICROCONTROLADORES O QUE É O PIC?

Objetivo Geral Compreender o funcionamento de uma lógica assembler que realiza a sequência de LED s.

Fundamentos de Microprocessadores ENGENHARIA ELECTROTÉCNICA

Programação Daniel Corteletti Aula 3 Parte III Página 1/7

Fundamentos de Microprocessadores ENGENHARIA ELECTROTÉCNICA

Características técnicas Baseado no ATMega da empresa AVR, fabricante de micro-controladores em plena ascensão e concorrente do PIC Pode usar ATMega

EXERCÍCIOS RESOLVIDOS

Montagem do Robô. Especificações. domingo, 28 de agosto de 11

2 - Considere a seguinte figura que representa uma parte dos componentes básicos de um microprocessador:

Plano de Aula. 1 o semestre. Aula número 010 Interrupções Internas Timers. Uso de interrupções internas produzidas pelos timers

Interrupção. Prof. Adilson Gonzaga

Curso de Microcontroladores PIC 16F84A

14/3/2016. Prof. Evandro L. L. Rodrigues

Programação em Linguagem Assembly

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

OMicrocontrolador PIC16F877A implementa um conversor

SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Construção de Robôs Jogadores de Futebol (2ª Parte)

LBM-UMA PROPOSTA DE LINGUAGEM BÁSICA ESTRUTURADA PARA PROGRAMAÇÃO DE MICROCONTROLADORES NOS CURSOS DE ENGENHARIA.

Introdução ao Uso do LCD Inteligente (Versão Preliminar) Por Gilson Yukio Sato. Introdução

Circuito Eletrônico. Entendendo o circuito eletrônico na robótica. domingo, 28 de agosto de 11

Microprocessadores 1º Ano - LECOM. Universidade do Minho Dept. De Electrónica Industrial

Objetivo Geral Compreender o funcionamento dos softwares de simulação Mplab e Proteus com um simples programa.

Acetatos de apoio às aulas teóricas

Faculdade de Tecnologia SENAI Pernambuco - Unidade Santo Amaro Curso de Tecnologia em Mecatrônica Industrial

Introdução aos microcontroladores Microcontroladores e microprocessadores Tecnologia em Manutenção Industrial

Usando 123D: Led e Protoboard

C:\seminario\guiao_aluno\trab9\trab9p2\trab9VoltUart.asm

INSTITUTO DE TECNOLOGIA EMERSON MARTINS

Departamento de Sistemas de Computação - SSC. Sistemas Digitais. 2 o Semestre Projeto CPU. Data da apresentação: 26/27 de outubro

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA ENGENHARIA DE COMPUTAÇÃO MICROPROCESSADORES PROJETO PARDAL DOCUMENTAÇÃO

CURSO DE Microcontroladores PIC SETEMBRO DE 2005

Departamento de Sistemas de Computação - SSC. SSC-110 Elementos de lógica digital I SSC-111 Laboratório de elementos de lógica digital I.

Lista de Exercícios 1

Kit Clp Pic 40B Manual do usuário. Manual do usuário - Kit Clp Pic 40B v2.0. Copyright VW Soluções

PROGRAMAÇÃO DE UM MICROPROCESSADOR

INTRODUÇÃO: MICROCONTROLADORES

Sistemas Embarcados:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES MEMÓRIA E BARRAMENTOS DE SISTEMA. Prof. Dr. Daniel Caetano

Sistemas Processadores e Periféricos Aula 2 - Revisão

LCDs Inteligentes. LCD Inteligente. Gabriel Kovalhuk DAELN / UTFPR

Circuitos Digitais. Tipos de circuitos digitais: Circuitos combinacionais Circuitos sequenciais

MICROPROCESSADORES E MICROCONTROLADORES PROVA 1

Guia de Trabalhos Práticos do Professor

Objetivos MICROCONTROLADORES SOFTWARE PROGRAMAÇÃO (PARTE: 04) Programação em Linguagem C

Programação em BASIC para o PIC Vitor Amadeu Souza

Microprocessadores 1º Ano - LECOM

1. Microcontrolador PIC. 1.1 Introdução

MICROCONTROLADORES SOFTWARE PROGRAMAÇÃO (PARTE: 01)

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI - UFSJ DEPARTAMENTO DE ENGENHARIA ELÉTRICA - DEPEL INTRODUÇÃO AOS MICROCONTROLADORES PIC

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

SEMINÁRIO ASSEMBLY: Arquitetura PIC

Comunicando com um teclado PS2 Vitor Amadeu Souza

Aula Expositiva 03. DCC 001 Programação de Computadores 2 o Semestre de 2011 Prof. Osvaldo Carvalho DCC

Portas de entrada e saída; Interrupções; Interrupções externas; Temporizadores Contadores; Interface Serial

Professor Marcelo Josué Telles Porta LPT, programação, componentes eletrônicos, sistema binário...

Neander - características

Organização Básica III

Conjunto de Instruções. Alisson Brito

CIRCUITOS SEQUENCIAIS. Adão de Melo Neto

22:43. MIC29004 Microprocessadores. Microcontroladores. Microcontroladores. Microcontroladores. Microcontroladores

Transferência de dados via rede elétrica baseado no protocolo X-10

DOUGLAS DAL POZZO DIEGO VITTI

Sistemas Embarcados:

Fundamentos de Sistemas Operacionais

Prof. Adilson Gonzaga

Guia de Trabalhos Práticos do Aluno

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível

Laboratório de Microprocessadores e Microcontroladores

Interrupções. O que é uma interrupção? Como funciona uma interrupção no AVR?

Lista de Exercícios 2 Prof. Daniel Caetano Solução

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

Sistemas Microcontrolados

Introdução ao Microcontrolador PIC

Transcrição:

Sequencial Supermáquina (TEMPORIZAÇÃO SIMPLES)

Roteiro Sequencial Supermáquina Materiais Pinos do PIC Fluxograma Temporização Circuito no protoboard Melhoramentos Sugestão de Atividades

Sequencial Um sequencial é basicamente um conjunto de leds que acedem e apagam em uma determinada ordem provocando algum tipo de efeito visual. O sequencial supermáquina é assim chamado graças a série Supermáquina dos anos 80, onde o carro do protagonista possuía na sua parte frontal um sequencial onde as luzes acendiam de forma a provocar um efeito de vai-e-vem.

Materiais Gravador PIC 16F628A 8 Leds 8 Resistores de 1K 2 Suportes para Pilhas AA 4 Pilhas AA Protoboard e Fios

Pinos do PIC

Fluxograma INICIO Configuração Apaga Led 2 Acende Led 3 Apaga Led 6 Acende Led 7 Apaga Led 4 Acende Led 3 Loop Apaga Led 3 Acende Led 4 Apaga Led 7 Acende Led 6 Apaga Led 3 Acende Led 2 Acende Led 0 Apaga Led 0 Acende Led 1 Apaga Led 4 Acende Led 5 Apaga Led 6 Acende Led 5 Apaga Led 2 Acende Led 1 Apaga Led 1 Acende Led 2 Apaga Led 5 Acende Led 6 Apaga Led 5 Acende Led 4 Apaga Led 1

Fazendo Saída com o PIC O controlador PIC tem 2 Portas para Entrada e Saída uma conhecida por Port A e a outra Port B. Usaremos Port B neste exemplo. O Port B do PIC tem o endereço 06H, e tem os seu bits ligados ao pinos externos do PIC, de acordo com a tabela a seguir: BIT PORTB 0 6 1 7 2 8 3 9 Pino 4 10 5 11 6 12 7 13

Configurando as Saídas As configurações de E/S para cada Port são feitas usando os registradores TRISA e TRISB onde TRISA configura o PortA e TRISB o PortB, os endereços são 85H e 86H respectivamente. Para configurar algum pino de Port B como saída devemos desligar o bit correspondente em TRISB. Ou seja se queremos que o pino 6 de PortB seja saída (output) configuramos o Bit 6 de TRISB como 0. Para configurar como entrada configuramos o bit 6 como 1; É fácil lembrar desta regra 0 para 0utput e 1 para 1nput Desta forma para configurar todos os pinos de port B como saída devemos zerar todos os bits de TRISB;

Instruções BCF e BSF As instruções BCF (Bit Clear File) e BSF (Bit Set File) são usadas para desligar e ligar bits específicos de um registrador. Ex BCF 06H,1 ; desliga o bit 1 de 6H BSF 06H,1 ; Liga o bit 1 de 6H A sintaxe destes comandos é BCF Registrador, Bit BSF Registrador, Bit

Configuração Depois veremos a Razão destas instruções Código: Configuração CONFIGURACAO BSF 03H,5 ; Seleciona banco 1 (seta RP0) CLRF 86H ; Reseta PortB (Todas os pinos como saida) BCF 03H,5 ; Seleciona banco 0 (reseta RP0) CLRF 06H ; Zera todos os pinos de PortB

Fluxograma INICIO Configuração Apaga Led 2 Acende Led 3 Apaga Led 6 Acende Led 7 Apaga Led 4 Acende Led 3 Loop Acende Led 0 Apaga Led 3 Acende Led 4 Apaga Led 7 Acende Led 6 Apaga Led 3 Acende Led 2 Apaga Led 0 Acende Led 1 Apaga Led 4 Acende Led 5 Apaga Led 6 Acende Led 5 Apaga Led 2 Acende Led 1 Apaga Led 1 Acende Led 2 Apaga Led 5 Acende Led 6 Apaga Led 5 Acende Led 4 Apaga Led 1

Fluxograma INICIO Configuração BCF 86H,2 BSF 86H,3 BCF 86H,6 BSF 86H,7 BCF 86H,4 BSF 86H,3 Loop BSF 86H,0 BCF 86H,3 BSF 86H,4 BCF 86H,7 BSF 86H,6 BCF 86H,3 BSF 86H,2 BCF 86H,0 BSF 86H,1 BCF 86H,4 BSF 86H,5 BCF 86H,6 BSF 86H,5 BCF 86H,2 BSF 86H,1 BCF 86H,1 BSF 86H,2 BCF 86H,5 BCF 86H,6 BCF 86H,5 BSF 86H,4 BCF 86H,1

Código Código: ex1-0.asm CONFIG 0x3D18 ORG 0x00 CONFIGURACAO BSF 03H,5 ; Seleciona banco 1 (seta RP0) CLRF 86H ; Reseta PortB (Todas os pinos como saida) BCF 03H,5 ; Seleciona banco 0 (reseta RP0) CLRF 06H ; Zera todos os pinos de PortB LOOP BSF 06H,0 ; Liga RB0 (bit 0 de PortB) BCF 06H,0 ; Desliga RB0 BSF 06H,1 ; Liga RB1 (bit 1 de PortB) BCF 06H,1 ; Desliga RB1 BSF 06H,2 ; Liga RB2 (bit 2 de PortB) BCF 06H,2 ; Desliga RB2 BSF 06H,3 ; Liga RB3 (bit 3 de PortB) BCF 06H,3 ; Desliga RB3 BSF 06H,4 ; Liga RB4 (bit 4 de PortB) BCF 06H,4 ; Desliga RB4 BSF 06H,5 ; Liga RB5 (bit 5 de PortB) CONTINUAÇÃO... BCF 06H,5 ; Desliga RB5 BSF 06H,6 ; Liga RB6 (bit 6 de PortB) BCF 06H,6 ; Desliga RB6 BSF 06H,7 ; Liga RB7 (bit 7 de PortB) BCF 06H,7 ; Desliga RB7 BSF 06H,6 ; Liga RB6 (bit 6 de PortB) BCF 06H,6 ; Desliga RB6 BSF 06H,5 ; Liga RB5 (bit 5 de PortB) BCF 06H,5 ; Desliga RB5 BSF 06H,4 ; Liga RB4 (bit 4 de PortB) BCF 06H,4 ; Desliga RB4 BSF 06H,3 ; Liga RB3 (bit 3 de PortB) BCF 06H,3 ; Desliga RB3 BSF 06H,2 ; Liga RB2 (bit 2 de PortB) BCF 06H,2 ; Desliga RB2 BSF 06H,1 ; Liga RB1 (bit 1 de PortB) BCF 06H,1 ; Desliga RB1 GOTO LOOP END

Processo de Montagem Código Código ex1-0.asm ex1-0.asm $ gpasm -p16f628a ex1-0.asm Montagem executável: ex1-0.hex executável: ex1-0.hex :020000040000FA :020000040000FA :100000008316860183128601861306140610861451 :100000008316860183128601861306140610861451 :100010008610061506118615861106160612861616 :100010008610061506118615861106160612861616 :0A002000861206170613861704283F :0A002000861206170613861704283F :02400E00183D5B :02400E00183D5B :00000001FF :00000001FF

Simulação $ gpsim ex1-0.cod Escolha Realtime with GUI (simulação em tempo real) Inicie a simulação Verifique a Breadboad Observe que durante a simulação as saídas do controlador não estão alternando entre acesso e apagado com esperado.

Simulação Execute passo-a-passo as instruções do programa Pause a simulação No passo-a-passo o comportamento é o esperado. Qual será o problema? Resposta: Próximo slide.

Resposta: Temporização

Temporização Entende-se por temporização a capacidade de programar um evento para acontecer após a passagem de um tempo específico. No PIC não existem instruções que permitam fazer o controlador esperar um determinado intervalo de tempo, desta forma é responsabilidade do programador prover esse tipo de funcionalidade. Existem 2 formas de temporização com o PIC, a primeira e mais simples é a queima de ciclos. A segunda é usar os timers internos do PIC para essa finalidade. Aqui veremos apenas a primeira.

Temporização A palavra de configuração que estamos usando aqui configura o oscilador interno do PIC que é de 4Mhz. O PIC executa instruções a ¼ da velocidade do oscilador o que nos leva a uma taxa de 1 milhão de instruções por segundo, ou seja uma instrução demora 1 microssegundo para ser executada. Com base nisto se quisermos um tempo de espera 1s temos que fazer o PIC executar 1 milhão de instruções. Mas como fazer isso?

Temporização Para prover a temporização usaremos loops com a instrução: NOP (No OPeration) que serve apenas para Queimar um ciclo Observe o código abaixo de loop infinito: Agora o que é preciso fazer é trabalhar esse loop de forma que ele execute por um número determinado de interações. Ex: 250 interações leva a uma espera de 1ms Código LOOP NOP NOP GOTO LOOP Esse loop leva 4us por interação, 1us para cada NOP e 2us para GOTO. Instruções de salto costumam levar 2 ciclos quando saltam

Temporização Essas instruções inicializam o endereço de memória com o valor 250. Em termos da percepção humana, 1ms é muito pouco. Para o olho humano perceber, com certa persistencia precisamos de um intervalo de pelo menos 1/50s ou seja 20ms Código MOVLW d'250' MOVWF 20H DL_1 NOP DECFSZ 20H,1 GOTO DL_1 DECFSZ Essa Instrução decrementa o conteúdo da posição 20h até este chegar a zero. Quando o valor armazenado em 20H chegar a zero, a instrução DECFSZ efetuará o salto da próxima instrução (GOTO DL_1) e sairá do loop. Resultado: 1ms de espera (250x4us).

Temporização Código 1MS MOVLW d'250' MOVWF 20H DL_1 NOP DECFSZ 20H,1 GOTO DL_1 RETURN 1MS Esse conjunto de instruções foi transformado em uma FUNÇÃO. Isso permite que em qualquer parte do código o programador execute esse conjunto de instruções apenas executando CALL 1MS. Isso tem algumas vantagens a principal delas é não precisar replicar esse código em todas as partes do programa Esse laço executa 250 vezes, a cada vez que executa chama a função 1MS 4 vezes. Ou seja uma espera aproximada de 1s. Convém transformar esse código em função. Código MOVLW d'250' MOVWF 21H DL_2 CALL 1MS CALL 1MS CALL 1MS CALL 1MS DECFSZ 21H,1 GOTO DL_2

Fluxograma (com temporização) INICIO Configuração Loop BCF 86H,7 BSF 86H,0 BCF 86H,0 BSF 86H,1 BCF 86H,1 BSF 86H,2 BCF 86H,2 BSF 86H,3 BCF 86H,3 BSF 86H,4 BCF 86H,4 BSF 86H,5 BCF 86H,5 BCF 86H,6 BCF 86H,6 BSF 86H,7

Fluxograma INICIO Configuração BCF 86H,2 BSF 86H,3 BCF 86H,6 BSF 86H,7 BCF 86H,4 BSF 86H,3 Loop BSF 86H,0 BCF 86H,3 BSF 86H,4 BCF 86H,7 BSF 86H,6 BCF 86H,3 BSF 86H,2 BCF 86H,0 BSF 86H,1 BCF 86H,1 BSF 86H,2 BCF 86H,4 BSF 86H,5 BCF 86H,5 BCF 86H,6 BCF 86H,6 BSF 86H,5 BCF 86H,5 BSF 86H,4 BCF 86H,2 BSF 86H,1 BCF 86H,1

Código com temporização Código: ex1-1.asm CONFIG 0x3D18 ORG 0x00 CONFIGURACAO BSF 03H,5 ; Seleciona banco 1 (seta RP0) CLRF 86H ; Reseta PortB (Todas os pinos como saida) BCF 03H,5 ; Seleciona banco 0 (reseta RP0) CLRF 06H ; Zera todos os pinos de PortB GOTO LOOP 1MS MOVLW d'250' MOVWF 20H DL_1 NOP DECFSZ 20H,1 GOTO DL_1 RETURN 1S MOVLW d'250' MOVWF 21H DL_2 CALL 1MS CALL 1MS CALL 1MS CALL 1MS DECFSZ 21H,1 GOTO DL_2 RETURN CALL 1S BCF 06H,2 ; Desliga RB2 BSF 06H,3 ; Liga RB3 (bit 3 de PortB) CALL 1S BCF 06H,3 ; Desliga RB3 BSF 06H,4 ; Liga RB4 (bit 4 de PortB) CALL 1S BCF 06H,4 ; Desliga RB4 BSF 06H,5 ; Liga RB5 (bit 5 de PortB) CALL 1S BCF 06H,5 ; Desliga RB5 BSF 06H,6 ; Liga RB6 (bit 6 de PortB) CALL 1S BCF 06H,6 ; Desliga RB6 BSF 06H,7 ; Liga RB7 (bit 7 de PortB) CALL 1S BCF 06H,7 ; Desliga RB7 BSF 06H,6 ; Liga RB6 (bit 6 de PortB) CALL 1S BCF 06H,6 ; Desliga RB6 BSF 06H,5 ; Liga RB5 (bit 5 de PortB) CALL 1S BCF 06H,5 ; Desliga RB5 BSF 06H,4 ; Liga RB4 (bit 4 de PortB) CALL 1S BCF 06H,4 ; Desliga RB4 BSF 06H,3 ; Liga RB3 (bit 3 de PortB) CONTINUAÇÃO... LOOP BSF 06H,0 ; Liga RB0 (bit 0 de PortB) CALL 1S BCF 06H,0 ; Desliga RB0 BSF 06H,1 ; Liga RB1 (bit 1 de PortB) CALL 1S BCF 06H,1 ; Desliga RB1 BSF 06H,2 ; Liga RB2 (bit 2 de PortB) END CALL 1S BCF 06H,3 ; Desliga RB3 BSF 06H,2 ; Liga RB2 (bit 2 de PortB) CALL 1S BCF 06H,2 ; Desliga RB2 BSF 06H,1 ; Liga RB1 (bit 1 de PortB) CALL 1S BCF 06H,1 ; Desliga RB1 CALL 1S GOTO LOOP

Simulação $ gpsim ex1-0.cod Inicie a simulação Verifique a Breadboad Observe que o funcionamento agora está correto. Parabéns você conseguiu!

O Circuito + + + + 1K 1K 1K 1K 1K 1K 1K 1K

Melhoramentos deste código No programa optamos por ligar e desligar os bits da porta individualmente através das instruções BCF e BSF. Podemos minimizar bastante o código tratando a porta como um byte completo, ao invés de tratar cada bit. Existe duas instruções que proporcionam o mesmo efeito do programa anterior que é basicamente o rotacionamento do byte para direita ou esquerda, essas instruções são RRF e RLF respectivamente.

INICIO Configurações Liga Led 0 Rotaciona Esquerda X2 Led 7 Está aceso? Rotaciona Direita /2 Sim Não INICIO Configurações BSF 05H,0 LOOPESQ RLF 05,1 BTFSS 05,7 Sim LOOPDIR RRL 05,1 Não Sim Led 0 Está Acesso? Não Sim BTFSS 05,0 Não

Código com Temporização Melhorado Código: ex1-2.asm CONFIG 0x3D18 ORG 0x00 GOTO CONFIGURACAO 1MS ; Funcao de Espera 1ms MOVLW d'250' ; $(20H) = 250 MOVWF 20H ; DL_1 NOP ; Queima 1 Ciclo DECFSZ 20H,1 ; Queima 1 Ciclo se <> 0 GOTO DL_1 ; Queima 2 Ciclos ; Total 4 ciclos X 250 = 1000 ciclos gastos ; 1000 X 0,000001s = 0,001s = 1ms RETURN ; Retorna 1S ; Funcao espera 1s MOVLW d'50' ; $(21h) = 250 MOVWF 21H ; DL_2 CALL 1MS CALL 1MS CALL 1MS CALL 1MS DECFSZ 21H,1 GOTO DL_2 RETURN ; Retorna CONFIGURACAO BSF 03H,5 ; Seleciona banco 1 (seta RP0) CLRF 86H ; Reseta PortB (Todas os pinos como saida) BCF 03H,5 ; Seleciona banco 0 (reseta RP0) CLRF 06H ; Zera todos os pinos de PortB BSF 06H,0 ; Liga RB0 (bit 0 de PortB) LOOPESQ CALL 1S RLF 06H,1 ; Rotaciona para esquerda BTFSS 06H,7 ; Sai do Loop se led 7 acesso GOTO LOOPESQ LOOPDIR CALL 1S RRF 06H,1 ; Rotaciona para direita BTFSS 06H,0 ; Sai do Loop se led 7 acesso GOTO LOOPDIR GOTO LOOPESQ END

Simulação $ gpsim ex1-0.cod Inicie a simulação Verifique a Breadboad Observe que o funcionamento TAMBEM está correto. Só que agora com muito menos linhas de código e consequentemente menos espaço na memória do programa.

Sugestão de Atividades 1) diminua o tempo de forma a parecer mais continuo o deslocamento do led acesso; 2)Altere o código de forma que no ligamento do circuito todos os leds pisquem 5 vezes como forma de teste; 3) Altere o código para que existam 2 leds sempre acessos um se deslocando para direita e outro para esquerda; 4) Altere o código de forma que os dois leds acessos voltem quando se encontrarem.