Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led...

38
Chave Liga Desliga (Um toque Liga outro Desliga)

Transcript of Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led...

Page 1: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Chave Liga Desliga(Um toque Liga outro Desliga)

Page 2: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Roteiro

● Materiais● Pinos do PIC● Fluxograma● E/S com PIC● Circuito no protoboard● Melhoramentos● Sugestão de Atividades

Page 3: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Materiais

● Gravador● PIC 16F628A● 1 Led● Resistores: 1 x 1K e 1 x 10k● 2 Suportes para Pilhas AA● 4 Pilhas AA● Push buttom● Protoboard e Fios

Page 4: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Pinos do PIC

Pinos do Port B

Pinos do Port A

Page 5: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Fluxograma

O botãoFoi pressionado?

INICIO

O LEDEstá ligado?

SIM

NÃO

SIM

NÃO

Acende

Apaga

Page 6: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Entrada e Saída

● Em geral os sistemas computacionais precisam comunicar-se com o mundo externo, no contexto de computadores essas comunicações são conhecidas como operações de E/S (Entrada/Saída).

● Saída: Toda vez que o sistema precisar “afetar” de alguma forma o mundo externo, essa operação será considerada saída. Ex: ligar um led, rotacionar um motor.

● Entrada: Toda vez que o sistema precisar responder a um estimulo vindo do mundo externo isso será considerado entrada. Ex: Um botão foi pressionado, o sistema acende um led.

Page 7: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Fazendo E/S 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 neste exemplo, usaremos port B, bit 0 (Pino 6 do CI) como entrada, onde será ligado um botão. E port A bit 6 (Pino 15 do CI) como saída onde será ligado um led.

+

+

+

+

1K

10K

Page 8: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Fazendo E/S com o PIC

● O Port A do PIC tem o endereço 05H e o Port B endereço 06H, Cada um destes endereços tem os seu bits “ligados” aos pinos externos do PIC, de acordo com a tabela a seguir:

BIT PORTA Pino

0 17

1 18

2 1

3 2

4 3

5 4

6 15

7 16

BIT PORTB Pino

0 6

1 7

2 8

3 9

4 10

5 11

6 12

7 13

Page 9: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando E/S

● 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

Page 10: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando E/S

9

8

7

6

10

11

12

13

4

3

2

1

15

16

17

18

5 14- +85H TRISA

86H TRISB

06H PORT B

05H PORT A

Page 11: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando E/S

0

1

9

8

7

6

10

11

12

13

4

3

2

1

15

16

17

18

5 14- +85H TRISA

86H TRISB

06H PORT B

05H PORT AINPUT

OUTPUT

Page 12: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando E/S

0

1

9

8

7

6

10

11

12

13

4

3

2

1

15

16

17

18

5 14- +85H TRISA

86H TRISB

06H PORT B

05H PORT A

LED

Page 13: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando E/S

0

1

9

8

7

6

10

11

12

13

4

3

2

1

15

16

17

18

5 14- +85H TRISA

86H TRISB

06H PORT B

05H PORT A

LED

-

+

BSF 06h,010 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

7 6 5 4 3 2 1 I0

Page 14: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Memória de dados do PIC

0 5110h 1FFh

256-383100h-17Fh

Banco 2

384-511180h-1FFh

Banco 3

06h: PortB

05h: PortA

86h: TRISB

85h: TRISA

128 – 25580h – FfhBanco 1

8BITS

03h: STATUS

0 – 1270h – 7FhBanco 0

83h: STATUS 103h: STATUS 183h: STATUS

IRP RP0

3h: STATUS

IRP RP1 RP0

7 6 5 4 3 2 1 0

TO PD DC C ZRP1RP1 RP0RP0

Page 15: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Memória de dados do PIC

0 5110h 1FFh

256-383100h-17Fh

Banco 2

384-511180h-1FFh

Banco 3

06h: PortB

05h: PortA

86h: TRISB

85h: TRISA

128 – 25580h – FfhBanco 1

8BITS

03h: STATUS

0 – 1270h – 7FhBanco 1

83h: STATUS 103h: STATUS 183h: STATUS

3h: STATUS

IRP 0 0

7 6 5 4 3 2 1 0

TO PD DC C ZAO LIGAR

0 – 1270h – 7FhBanco 0

0 – 1270h – 7FhBanco 0

Page 16: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Memória de dados do PIC

0 5110h 1FFh

256-383100h-17Fh

Banco 2

384-511180h-1FFh

Banco 3

06h: PortB

05h: PortA

86h: TRISB

85h: TRISA

128 – 25580h – FfhBanco 1

8BITS

03h: STATUS

0 – 1270h – 7FhBanco 0

83h: STATUS 103h: STATUS 183h: STATUS

3h: STATUS

IRP 0 1

7 6 5 4 3 2 1 0

TO PD DC C ZBSF 03h,5

128 – 25580h – FfhBanco 1

128 – 25580h – FfhBanco 1

Page 17: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Memória de dados do PIC

0 5110h 1FFh

256-383100h-17Fh

Banco 2

384-511180h-1FFh

Banco 3

06h: PortB

05h: PortA

86h: TRISB

85h: TRISA

128 – 25580h – FfhBanco 1

8BITS

03h: STATUS

0 – 1270h – 7FhBanco 0

83h: STATUS 103h: STATUS 183h: STATUS

3h: STATUS

IRP 1 0

7 6 5 4 3 2 1 0

TO PD DC C ZBCF 03h,5BSF 03h,6

256-383100h-17Fh

Banco 2

256-383100h-17Fh

Banco 2

Page 18: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Memória de dados do PIC

0 5110h 1FFh

256-383100h-17Fh

Banco 2

384-511180h-1FFh

Banco 3

06h: PortB

05h: PortA

86h: TRISB

85h: TRISA

128 – 25580h – FfhBanco 1

8BITS

03h: STATUS

0 – 1270h – 7FhBanco 0

83h: STATUS 103h: STATUS 183h: STATUS

3h: STATUS

IRP 1 1

7 6 5 4 3 2 1 0

TO PD DC C ZBSF 03h,5BSF 03h,6

384-511180h-1FFh

Banco 3

384-511180h-1FFh

Banco 3

Page 19: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configuração

Código: Configuração

CONFIGURACAOBSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

Page 20: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Fluxograma

O botãoFoi pressionado?

O LEDEstá ligado?

SIM

NÃO

SIM

NÃO

Acende

Apaga

CONFIGURAÇÃO

INICIO

LOOP

Page 21: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Teste se o Botão foi pressionado(Testando um Bit)

● Se o teste for Verdadeiro salta a próxima instrução.● Para Testar se um bit está ligado:

– BTFSS Endereço, bit● Para testar se um bit está desligado:

– BTFSZ Endereço, bit

● EX: (Testa se o bit 6 de Port A está ligado )

BTFSS 05h,6GOTO DESLIGADOGOTO LIGADO

Page 22: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

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,0 ; desliga o bit 0 de 6H● BSF 06H,0 ; Liga o bit 0 de 6H

● A sintaxe destes comandos é● BCF Endereço, Bit● BSF Endereço, Bit

Page 23: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Fluxograma

BTFSS 6H,0GOTO LOOP

BTFSS 5H,6 GOTO ACENDE

SIM

NÃO

SIM

NÃO

ACENDEBSF 5H,6GOTO LOOP

APAGABCF 5H,6GOTO LOOP

CONFIGURACAOBSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

INICIO

LOOP

Page 24: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Código (ex2-0.asm)

Código: ex2-0.asm

__CONFIG 0x3D18ORG 0x00INICIOCONFIGURACAO

BSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)CLRF 05H

LOOPBTFSS 6H,0 ; Pula se botão PressionadoGOTO LOOP BTFSS 5H,6 ; Pula se Luz acessaGOTO ACENDEGOTO APAGA

ACENDEBSF 5H,6GOTO LOOP

APAGABCF 5H,6GOTO LOOP

END

BTFSS 6H,0GOTO LOOP

BTFSS 5H,6 GOTO ACENDE

SIM

NÃO

SIM

NÃO

ACENDEBSF 5H,6GOTO LOOP

APAGABCF 5H,6GOTO LOOP

CONFIGURACAOBSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

INICIO

LOOP

Page 25: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

executável: ex1-0.hexexecutável: ex1-0.hexCódigo

Código

ex2-0.asmex2-0.asm

:020000040000FA:100000008316051586118512051D0028861D0928F1:0A0010000B2886150028861500282D:02400E00182D6B:00000001FF

:020000040000FA:100000008316051586118512051D0028861D0928F1:0A0010000B2886150028861500282D:02400E00182D6B:00000001FF

Montagem

Processo de Montagem

$ gpasm -p16f628a ex2-0.asm

Page 26: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Simulação

$ gpsim ex2-0.cod

Clique no pino correspondente a RB0 para que ele fique vermelho (1), Verifique o que o pino RA6 fica piscando. Clique novamente em RB0 e verifique que RA6 parou de piscar, mas pode tanto estar ligado como desligado. Na aplicação real, enquanto o botão estiver pressionado o led estará sendo aceso e apagado 1 milhão de vezes por segundo. Desta forma o Led ficará aceso ou apagado dependendo do tempo que o botão ficar pressionado.Observe que não é isso que queremos. Então como resolver esse problema? Resp: Proximo slide

Inicie a simulaçãoVerifique a Breadboad

Escolha Realtime with GUI(simulação em tempo real)

Page 27: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Resposta: Interrupção

Page 28: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Interrupções

● A interrupção é um recurso importante nos sistemas computacionais, com ela é possível avisar a CPU a ocorrência de algum evento externo que precisa de tratamento imediato. A rotina que vai cuidar dessa interrupção é conhecida como tratador de interrupção e deve ficar posicionada em uma área da memória conhecida como vetor de interrupção. No controlador PIC16F628A, quando ocorre uma interrupção o PC é desviado para o endereço 0x04 da memória de programa, este endereço é conhecido como vetor de interrupção e é nele que deve está o tratador de interrupção.

Page 29: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Tipos de Interrupção

● O PIC dispõe 10 Tipos de interrupções:● Interrupção externa:

– Mudança de nível na porta RB0● Mudança de Estado

– Mudança de valor em um dos pinos (RB4,RB5,RB6,RB7)● 3 Timers (TDVI)● 2 Comunicação Serial● 1 de comparador● 1 de Final de Escrita em ROM● 1 de CPP

Page 30: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

O que é uma interrupção?

● Quando uma interrupção ocorre, o fluxo normal de execução é desviado e o contador de programa passa a apontar para o vetor de interrupção 0x04. A sequencia de instrução que estiver neste endereço será executada. Para retornar ao ponto de parada do programa usa-se a instrução RETFIE

LOOP DOPROGRAMAPRINCIPAL

ORG 0X04Momento da interrupção

Tratamento dainterrupção

Desligar a FlagCorrespondente

RETFIE

Page 31: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Configurando as interrupções

● As interrupções são habilitadas e configuradas usando o SFR INTCON (endereço 0BH)

● Abaixo o esquema dos bits do Registrador INTCON● Acesso: Se pode ser escrito e lido (RW) ou

somente escrito● POR: Valor assumido na inicialização

INTCON (0Bh,8Bh,10Bh,18Bh)

Bit 7 6 5 4 3 2 1 0

Função GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

Acesso RW RW R RW RW RW RW RW

POR 0 0 0 0 0 0 0 X

Page 32: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

SFR INTCON(interrupt controler)

● GIE (INTCON,7) : Set (=1) para habilitar interrupções;● PEIE (INTCON,6) : Set (=1) para habilitar interrupções periféricas (USART,

Comparador, CPP);● T0IE (INTCON,5): Set (=1) para habilitar interrupção do timer 0;● INTE (INTCON,4): Set (=1) para habilitar a interrupção externa (mudança de

nível em RB0);● RBIE (INTCON,3): Set (=1) para habilitar interrupções de mudança de

estado (RB4,RB5,RB6,RB7);● T0IF (INTCON,2): FLAG, Se igual a 1, ocorreu interrupção do timer 0;● INTF (INTCON,1): FLAG, Se igual a 1, houve mudança de nível em RB0.● RBIF (INTCON,0): FLAG, Se igual a 1, ocorreu interrupção de mudança de

estado. Relativo a RB4,RB5,RB6,RB7;

INTCON (0Bh,8Bh,10Bh,18Bh)

Bit 7 6 5 4 3 2 1 0

Função GIE PEIE T0IE INTE RBIE T0IF INTF RBIF

Acesso RW RW RW RW RW RW RW RW

POR 0 0 0 0 0 0 0 X

Page 33: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Passos para configurar interrupções

● Ex: Configurar interrupção em RB0

CódigoCódigo

BSF 0BH, 7; GIE=1BSF 0BH, 4; INTE=1

BSF 0BH, 7; GIE=1BSF 0BH, 4; INTE=1

Page 34: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Código (ex2-0.asm)

Código: ex2-0.asm

__CONFIG 0x3D18ORG 0x00INICIOCONFIGURACAO

BSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)CLRF 05H

LOOPBTFSS 6H,0 ; Pula se botão PressionadoGOTO LOOP BTFSS 5H,6 ; Pula se Luz acessaGOTO ACENDEGOTO APAGA

ACENDEBSF 5H,6GOTO LOOP

APAGABCF 5H,6GOTO LOOP

END

BTFSS 6H,0GOTO LOOP

BTFSS 5H,6 GOTO ACENDE

SIM

NÃO

SIM

NÃO

ACENDEBSF 5H,6GOTO LOOP

APAGABCF 5H,6GOTO LOOP

CONFIGURACAOBSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

INICIO

LOOP

Page 35: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Programando interrupções● Em ex2-0.asm é possível trocar a checagem continua por

interrupção em RB0

INICIO

BTFSS 5H,6

SIM

NÃOBSF 5H,6

BCF 5H,6

LOOP

CONFIGURAÇÃO

Código: ex2-1.asm

__CONFIG 0x2D18ORG 0x00GOTO CONFIGURACAOORG 0x04

BTFSS 5H,6 ; Pula se Luz acessaGOTO ACENDEGOTO APAGA

ACENDEBSF 5H,6 ; Acende LedGOTO SAIINT

APAGABCF 5H,6 ;Apaga o Led

SAIINTBCF 0Bh,1 ; Desliga a Flag INTFRETFIE

CONFIGURACAOBSF 0BH, 7; GIE=1 (Habilita int geral)BSF 0BH, 4; INTE=1 (habilita int externa)BSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA6 (RA6 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

LOOPGOTO LOOP

END

INICIO

BCF 0Bh,1

REFIE

Laço Principal

Tratadorde interrupção

Page 36: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Código: ex2-2.asm

Economizando energia● Economizando energia

INICIO

BTFSS 5H,6

SIM

NÃOBSF 5H,6

BCF 5H,6

LOOP

CONFIGURAÇÃO__CONFIG 0x2D18ORG 0x00GOTO CONFIGURACAOORG 0x04

BTFSS 5H,6 ; Pula se Luz acessaGOTO ACENDEGOTO APAGA

ACENDEBSF 5H,6GOTO SAIINT

APAGABCF 5H,6

SAIINTBCF 0Bh,1RETFIE

CONFIGURACAOBSF 0BH, 7; GIE=1 (Habilita int geral)BSF 0BH, 4; INTE=1 (habilita int externa)BSF 03H,5 ; Seleciona banco 1 (seta RP0)BCF 85H,6 ; Reseta RA3 (RA3 como saida)BSF 86H,0 ; Seta RB0 (RB0 como entrada)BCF 03H,5 ; Seleciona banco 0 (reseta RP0)

LOOPSLEEP ; Poe o sistema em standbyGOTO LOOP

END

INICIO

BCF 0Bh,1

REFIE

Laço Principal

Tratadorde interrupção

SLEEP

A instrução SLEEPProvoca uma parada do sistema e só volta

Em caso de interrupção

Page 37: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

executável: ex2-2.hexCódigo

ex2-2.asm

:020000040000FA:020000000C28CA:08000800051F07280928051750:100010000A2805138B1009008B170B16831605137E:0800200006148312630012288C:02400E00182D6B:00000001FF

Processo de gravação

$ gpasm -p16f628a ex2-2.asm

$ picprog --device=pic16f628a --erase --burn --pic-serial-port=/dev/ttyS0 --input-hexfile ex1.hex

Linha de comando para Montagem no Live CD.

Arquivos gerados:ex2-2.lst, ex2-2.cod, ex2-2.hex

Linha de comando para Gravação no Live CD.O gravador deve está

Conectado na porta serial

Porta Serial

Arquivo HEX

Montagem

Page 38: Chave Liga Desliga (Um toque Liga outro Desliga) · Materiais Gravador PIC 16F628A 1 Led Resistores: 1 x 1K e 1 x 10k 2 Suportes para Pilhas AA 4 Pilhas AA Push buttom Protoboard

Atividades Sugeridas

1) Modifique o programa de forma que fique mais precisa a atividade de acender e apagar do botão. (inserir verificação para se o botão foi solto)

2) Modifique o programa para que com um toque acenda um led verde (em RA3), com outro toque acenda o vermelho (em RA2) e apague o verde.

2) Depois você poderá modificar o programa para que com um toque acenda o verde, um segundo toque acenda o vermelho e o terceiro toque apague os dois.