Sie sind auf Seite 1von 45

CURSO DE MICROCONTROLADORES EXERCCIOS PROFESSOR

Ricardo Pannain

Programas Exemplo
CURSO DE MICROCONTROLADORES..........................................................................................................1 EXERCCIOS PROFESSOR............................................................................................................................1 Programas E !m"#o..............................................................................................................................................$ Programa 1%.......................................................................................................................................................& Diagrama Es'(!m)*ico%................................................................................................................................& Codi+ica,-o%..................................................................................................................................................& Programa $%........................................................................................................................................................ Diagrama Es'(!m)*ico%................................................................................................................................. Codi+ica,-o%................................................................................................................................................... Programa &%......................................................................................................................................................./ Diagrama Es'(!m)*ico%................................................................................................................................/ Codi+ica,-o%................................................................................................................................................../ Programa 0%.......................................................................................................................................................1 Diagrama Es'(!m)*ico%................................................................................................................................1 Codi+ica,-o%................................................................................................................................................12 Programa .%.....................................................................................................................................................1& Diagrama Es'(!m)*ico%..............................................................................................................................1& Codi+ica,-o%................................................................................................................................................1& Programa 3%.....................................................................................................................................................13 Diagrama Es'(!m)*ico%..............................................................................................................................13 Codi+ica,-o%................................................................................................................................................13 Programa /%.....................................................................................................................................................$2 Diagrama Es'(!m)*ico%..............................................................................................................................$2 Codi+ica,-o%................................................................................................................................................$2 Programa 4%.....................................................................................................................................................$0 Diagrama Es'(!m)*ico%..............................................................................................................................$0 Codi+ica,-o%................................................................................................................................................$0 Programa 1%.....................................................................................................................................................$3 Diagrama Es'(!m)*ico%..............................................................................................................................$3 Codi+ica,-o%................................................................................................................................................$3 Programa 12%...................................................................................................................................................$1 Diagrama Es'(!m)*ico%..............................................................................................................................$1 Codi+ica,-o%................................................................................................................................................&2 Programa 11%...................................................................................................................................................&& Diagrama Es'(!m)*ico%..............................................................................................................................&& Codi+ica,-o%................................................................................................................................................&0 Programa 1$%...................................................................................................................................................&1 Diagrama Es'(!m)*ico%..............................................................................................................................&1 Codi+ica,-o%................................................................................................................................................02

Ricardo Pannain

Programa 1:
Este programa faz com que um LED, ligado sada RB0, seja aceso, caso uma chave C, ligada e trada R!", esteja em #$%& Caso co tr'rio, o diodo se apaga&

Diagrama Esquem'tico(

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador& Cada registrador possui um e dere)o, e t*o criamos #aliases% para facilitar a codifica)*o& !fi al de co tas, = mais f'cil se referir ao registrador .:R-B pelo seu ome, ao i v=s de seu e dere)o a mem4ria 50>007 ,-!-;, .:R-! E?; E?; 0>0@ 0>0A

Ricardo Pannain

&

.:R-B R.0

E?; E?;

0>00 0>0A

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0>00 B:-: + icio :RB 0>0A + cio do programa + icio( B!9C:$ CLR1 E:FLG C muda )a para o 6a co de mem4ria $ C limpa do os 6its de .:R-B& Com isso, todos os C pi os 5RB0 a RBD7 ser*o utilizados como sada BH00000$00H C utiliza do o registrador GorI 5G7 para co figurar a C porta de e trada !& : terceiro 6it, que correspo de C ao pi o R!" est' se do co figurado como e trada, C e o resta te dos pi os desta porta como sada .:R-! C co clui do a co figura)*o da porta ! C muda do para o 6a co de mem4ria 0 .:R-B C limpa do a porta B .:R-B

E:FG1 B!9C:0 CLR1

Loop( B-1,, B:-: B:-: !ce der( B,1 B:-: !pagar( BC1 B:-: E9D .:R-!, " !pagar !ce der .:R-B, 0 Loop .:R-B, 0 Loop C verifica o estado da chave C 5pi o R!"7& ,e o valor C for #$%, a pr4>ima li ha = pulada, e t*o o LED ir' C ace der& Caso co tr'rio o LED ir' apagar C se R!" / 0, apaga o LED C se R!" / $, ace de o LED C seta o 6it 0 5RB07 da porta B& +sto faz com que o C LED se ace da& RB0 / $ C volta para verifica)*o da chave C C limpa o 6it 0 5RB07 da porta B& +sto faz com que o C LED se apague& RB0 / 0 C volta para verifica)*o da chave C C fim do programa

Ricardo Pannain

Programa 2:
Este programa fu cio a como um #segredo eletrJ ico%& : microco trolador espera uma com6i a)*o de A chaves, ligadas a porta ! 5R!0 K R!A7, e, se esta com6i a)*o ocorrer, todos os LEDs ligados porta B 5RB0 K RBD7 se ace dem& Caso co trario, eles perma ecem apagados& ! com6i acao deve ser $L0L$L0L$&

Diagrama Esquem'tico(
L1 L2 L3 L4 L5 L6 L7 L8

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador& ,-!-;, .:R-! .:R-B R.0 M E?; E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A 0>0"

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0

Ricardo Pannain

B:-: + icio :RB A + cio do programa + icio( B!9C:$ CLR1 E:FLG E:FG1 B!9C:0 CLR1 Loop( E:F1 !9DLG .:R-!, G C faze do uma c4pia do status da porta ! para o C registrador GorI 5G7 BH000$$$$$H C !9D l4gico e tre o registrador GorI 5G7 e o valor C #000$$$$$%, para que os A primeiros 6its sejam C ma tidos e os outros @ passem a ser 0& +sto = C ecess'rio para realizar a compara)*o a6ai>o BH000$0$0$H C verifica do a e>istO cia da seqPO cia $L0L$L0L$, C atrav=s de um N:R& ,-!-;,, M C se a opera)*o acima resultou em 0, ou seja se todos C os 6its de G estiverem em 0, sig ifica que a C sequO cia $L0L$L0L$ est' prese te& E t*o, a pr4>ima C li ha = pulada Loop C se a sequO cia *o estiver prese te, = feita uma C ova verifica)*o 0>11 C se a sequO cia estiver prese te, todos os 6its da C porta B s*o setados 5valor 0>117, faze do com que C os LEDs se ace dam& .:R-B C ace de do os LEDs 1im C loop i fi ito& .ara come)ar o programa ovame te, C depois de uma sequO cia correta, = ecess'rio C resetar o microco trolador C fim do programa C muda )a para o 6a co de mem4ria $ C limpa do os 6its de .:R-B& Com isso, todos os C pi os 5RB0 a RBD7 ser*o utilizados como sada BH000$$$$$H C utiliza do o registrador GorI 5G7 para co figurar a C porta de e trada !& -odos os pi os da porta 5R!0 K C R!37 est*o se do co figurados como e trada .:R-! C co clui do a co figura)*o da porta ! C muda do para o 6a co de mem4ria 0 .:R-B C limpa do a porta B .:R-B

N:RLG B-1,,

B:-: E:FLG E:FG1 1im( B:-: E9D

Ricardo Pannain

Programa 3:
Este programa utiliza um displaQ de D segme tos, ligado porta B 5RB0 K RBD7 para mostrar o valor de uma chave C ligada e trada R!" da porta !& ,e a chave estiver ligada, o displaQ e>i6e o Rmero $& Caso co tr'rio, = e>i6ido o Rmero 0&

Diagrama Esquem'tico(

Gnd

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

abcdefg.

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador& ,-!-;, .:R-! .:R-B R.0 E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A

Ricardo Pannain

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ CLR1 E:FLG C muda )a para o 6a co de mem4ria $ C limpa do os 6its de .:R-B& Com isso, todos os C pi os 5RB0 a RBD7 ser*o utilizados como sada BH00000$00H C utiliza do o registrador GorI 5G7 para co figurar a C porta de e trada !& : terceiro 6it, que correspo de C ao pi o R!" est' se do co figurado como e trada, C e o resta te dos pi os desta porta como sada .:R-! C co clui do a co figura)*o da porta ! C muda do para o 6a co de mem4ria 0 .:R-B .:R-!, " C verifica o estado da chave C 5pi o R!"7& ,e o valor C for #$%, a pr4>ima li ha = pulada, e t*o o displaQ C ir' e>i6ir o Rmero $& Caso co tr'rio o displaQ ir' C e>i6ir o Rmero 0 C desvia para li ha #Mero% se o valor de R!" for 0 C desvia para li ha #;m% se o valor de R!" for $

E:FG1 B!9C:0 Loop( B-1,,

B:-: B:-: Mero( E:FLG E:FG1 B:-: ;m( E:FLG E:FG1 B:-: E9D

Mero ;m

BH00$$$$$$H C como o valor a ser e>i6ido deve ser Mero, o c4digo C 6i 'rio correspo de te este valor o displaQ = C colocado o registrador GorI 5G7 .:R-B C e>i6i do o valor Mero o displaQ fsico Loop C volta para verifica)*o da chave C BH00000$$0H C como o valor a ser e>i6ido deve ser ;m, o c4digo C 6i 'rio correspo de te este valor o displaQ = C colocado o registrador GorI 5G7 .:R-B C e>i6i do o valor ;m o displaQ fsico Loop C volta para verifica)*o da chave C C fim do programa

Ricardo Pannain

Programa 4:
Este programa faz com que o LED, ligado ao pi o RB0 da porta B ace da e apague a cada segu do& Como o ciclo de clocI do microco trolador = muito peque o, = ecess'rio i troduzir delays para que as tra si)<es do LED possam ser visualizadas& Estes delays fu cio am da segui te ma eira( uma roti a, chamada DelaQ$,, que utiliza a su6roti a Del$0, que gera delays de $0 ms a cada chamada& De tro desta roti a e>iste uma vari'vel au>iliar 5-EE.:$7, que come)a com o valor $00 e vai se do decreme tada& Cada vez que ela = decreme tada, a roti a Del$0 = chamada ovame te& :u seja, ser*o $00 chamadas roti a Del$0, gera do um delay total de $ segu do&

Diagrama Esquem'tico(

L1

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Ricardo Pannain

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador e vari'veis au>iliares utilizadas o programa ,-!-;, .:R-! .:R-B R.0 :.-+:9SREB +9-C:9 -EE.:$ E?; E?; E?; E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A 0>0$ 0>0B 0>0C

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ CLR1 E:FLG .:R-B BH00000$$$H C muda )a para o 6a co de mem4ria $ C limpa do os 6its de .:R-B& Com isso, todos C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $("A0& .or C e>emplo, se tivermos um clocI de 3Ehz, C cada i stru)*o = e>ecutada em $s& Com o C prescaler de $("A0, o -ER0 = i creme tado C a cada "A0 ciclos, co seque teme te ele ir' C estourar em, apro>imadame te, 0,Ams& C co clui do a co figura)*o do registrador de C opera)<es

E:FG1

:.-+:9SREB

Ricardo Pannain

12

B!9C:0 CLR1 Loop( B,1 C!LL BC1 C!LL B:-: DelaQ$, B!9C:0 E:FLG E:FG1 C!LL RE-;R9 Del$0 BC1

.:R-B .:R-B, 0 DelaQ$, .:R-B, 0 DelaQ$, Loop

C muda do para o 6a co de mem4ria 0 C limpa do a porta B C seta do o pi o RB0 da porta B& +sto faz com C que o LED se ace da C chama do a roti a que i troduz um delaQ de C $ segu do o processame to, faze do com C que o LED fique aceso por $ segu do C limpa do o pi o RB0 da porta B& +sto faz com C que o LED se apague C ovame te a roti a de delaQ = chamada, C para que o LED fique apagado por $ segu do C volta para o la)o pri cipal C muda do para o 6a co de mem4ria 0 C coloca do o valor 03h 5$00 em decimal7 o C registrador GorI 5G7 C move do o valor a terior para a vari'vel C tempor'ria -EE.:$, que ser' utilizada a C roti a Del$0 5delaQ de $0ms7 C chama do a roti a Del$0 C retor a do C seta do o 6it " do registrador de C co figura)*o de i terrup)<es& +sto faz com C que a i terrup)*o de estouro de timer C 5registrador -ER07 seja ha6ilitada C coloca do o valor D2h 5$$0$$000 em 6i 'rio7 C o registrador GorI 5G7 C move do o valor a terior para o registrador C de opera)<es& +sto faz com que os 6its do C registrador sejam co figurados da segui te C ma eira( C L .ullL;ps + ter os 5TRB.;7 /U ha6ilitados C L Borda que ir' gerar a i terrup)*o e>ter a C o RB0 5+9-EDB7 /U su6ida C L + creme to de -ER0 5-0C,7 /U clocI C i ter o C L !plica)*o do prescaler 5.,!7 /U GDC L Falor do prescaler( $($ C se o 6it " do registrador de i terrup)<es C 5-0+17 estiver setado, sig ifica que ocorreu C um estouro do -ER0& E t*o, a vari'vel C au>iliar -EE.:$ 5que i icialme te tem o C valor $007, = decreme tada& ?ua do esta C vari'vel chegar a zero, ou seja, qua do

0>03 -EE.:$ Del$0

+9-C:9, "

E:FLG E:FG1

0>D2 :.-+:9SREB

Del$0S$ B-1,,

+9-C:9, "

Ricardo Pannain

11

B:-: DEC1,M B:-: RE-;R9 E9D

Del$0S$ -EE.:$, $ Del$0

C ocorrerem $00 vezes a chamada da roti a C Del$0 5delaQ de $0 ms7, a roti a retor a, pois C o delaQ j' ter' ati gido $ segu do& Caso C co tr'rio, o programa fica em loop at= C ocorrer a i terru)*o de estouro do -ER0 C volta para verificar se ocorreu i terru)*o C decreme ta a vari'vel au>iliar -EE.:$ C delaQ de $0ms C retor a do C fim do programa

Ricardo Pannain

1$

Programa 5:
Este programa co ta as tra si)<es 5muda )as7 de uma chave C, ligada ao pi o R!0 da porta !& ! qua tidade de tra si)<es = mostrada por 2 LEDs ligados aos pi os da porta B, em formato 6i 'rio

Diagrama Esquem'tico(
L1 L2 L3 L4 L5 L6 L7 L8

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador e vari'veis au>iliares utilizadas o programa ,-!-;, .:R-! .:R-B R.0 :.-+:9SREB +9-C:9 C:9-!D:R E?; E?; E?; E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A 0>0$ 0>0B 0>0D

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0
Ricardo Pannain 1&

B:-: + icio :RB A + cio do programa( + icio( B!9C:$ E:FLG 0>0$ C muda )a para o 6a co de mem4ria $ C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !& : primeiro C 6it, que correspo de ao pi o R!0 est' se do C co figurado como e trada, e o resta te dos C pi os desta porta como sada C co clui do a co figura)*o da porta ! C limpa do os 6its de .:R-B& Com isso, todos C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $("A0 C co clui do a co figura)*o do registrador de C opera)<es C muda do para o 6a co de mem4ria 0 C limpa do a porta B C limpa do a vari'vel au>iliar C:9-!D:R C testa do o estado da chave C& E qua to ela C estiver desligada 5valor 07, o programa fica C em loop& ?ua do ela for ligada, = i troduzido C um peque o delaQ 5roti a ! tiSRudos7, para C evitar i terferO cias e tre o acio ame to da C chave C e o ace dime to dos LEDs, e o C programa passa a esperar que a chave C C seja desligada C espera at= a chave C ser ligada C qua do a chave C for ligada, chama a roti a C ! tiSRudos C testa do o estado da chave C& E qua to ela C estiver ligada 5valor $7, o programa fica em C loop& ?ua do ela for desligada, a roti a C ! tiSRudos = chamada, e o programa passa C a e>i6ir o valor do co tador os LEDs C espera at= a chave C ser desligada C qua do a chave C for desligada, chama a C roti a ! tiSRudos

E:FG1 CLR1 E:FLG

.:R-! .:R-B BH00000$$$H

E:FG1 B!9C:0 CLR1 CLR1 Loop( B-1,,

:.-+:9SREB .:R-B C:9-!D:R .:R-!, 0

B:-: C!LL Loop"( B-1,C

Loop ! tiSRuidos

.:R-!, 0

B:-: C!LL

Loop" ! tiSRuidos

Ricardo Pannain

10

+9C1

C:9-!D:R, 1

E:F1 E:FG1 B:-: ! tiSRuidos BC1

C:9-!D:R, G .:R-B Loop +9-C:9, "

C este po to, uma tra si)*o ocorreu& E t*o, a C vari'vel au>iliar C:9-!D:R, que grava a C qua tidade de tra si)<es feitas a chave C, = C i creme tada& C o valor da vari'vel C:9-!D:R = gravada o C registrador GorI 5G7 C o valor de tra si)<es = e>i6ido os LEDs C volta a esperar outra tra si)*o C limpa do o 6it " do vetor de co figura)*o de C i terrup)<es& +sto = ecess'rio para que a C roti a fu cio e corretame te, pois se este 6it C estiver em $, o delaQ *o ser' aplicado C move do o valor B0h 5$0$$0000 em 6i 'rio7 C para o registrador GorI 5G7 C modifica do as co figura)<es do registrador C de opera)<es& !s op)<es escolhidas s*o( C L .ullL;ps + ter os 5TRB.;7 /U ha6ilitados C L + creme to de -ER0 5-0C,7 /U e>ter o, C pela muda )a do pi o R!3T-0CV+ C Borda do i creme to /U descida C verifica)*o da ocorrO cia da i terrup)*o de C estouro de timer 5-ER07 C espera a ocorrO cia da i terrup)*o C retor a do C fim do programa

E:FLG E:FG1

0>B0 :.-+:9SREB

Del( B-1,, B:-: RE-;R9 E9D +9-C:9, " Del

Ricardo Pannain

1.

Programa 6:
Este programa faz com que um speaIer, ligado ao pi o RBD da porta B, dO beeps peri4dicos a cada segu do& Cada beep dura cerca de 0,As& Como o ciclo de clocI do microco trolador = muito peque o, = ecess'rio i troduzir delays para que os beeps do speaIer possam ser ouvidos clarame te& Estes delays fu cio am da segui te ma eira( duas roti as, uma chamada DelaQ$, 5delaQ de $ segu do7 e outra, DelaQE, 5delaQ de 0,A segu dos7, utilizam a su6roti a Del$0, que gera delays de $0 ms a cada chamada& De tro desta roti a e>iste uma vari'vel au>iliar 5-EE.:$7, que, para a roti a DelaQ$,, tem o valor i icial $00 e, para a roti a DelaQE, tem o valor i icial de A0& e que vai se do decreme tada& Cada vez que ela = decreme tada, a roti a Del$0 = chamada ovame te&

Diagrama Esquem'tico(

PIC
RA0 RA1 RA2 RA3 RA4
Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 BC1 ,-!-;,, R.0

RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Ricardo Pannain

13

8DE1+9E B!9C:$

B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador e vari'veis au>iliares utilizadas o programa ,-!-;, .:R-! .:R-B R.0 :.-+:9SREB +9-C:9 -EE.:$ E?; E?; E?; E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A 0>0$ 0>0B 0>0C

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ E:FLG BH0$$$$$$$H C muda )a para o 6a co de mem4ria $ C utiliza do o registrador GorI 5G7 para C co figurar a porta B& -odos os pi os desta C porta s*o co figurados como e trada, e>ceto C o pi o RBD, que fu cio ar' como sada C co clui do a co figura)*o da porta B C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $("A0& C co clui do a co figura)*o do registrador de C opera)<es C muda do para o 6a co de mem4ria 0 C limpa do a porta B C seta do o pi o RB0 da porta B& +sto faz com C que o speaIer comece a produzir um som C chama do a roti a que i troduz um delaQ de C 0,A segu dos o processame to, faze do C com que o speaIer fique ligado por cerca de C 0,A segu dos C limpa do o pi o RB0 da porta B& +sto faz com C que o speaIer pare de produzir o som C chama do a roti a que i troduz um delaQ de C $ segu do o processame to, faze do com

E:FG1 E:FLG

.:R-B BH00000$$$H

E:FG1 B!9C:0 CLR1 Loop( B,1 C!LL

:.-+:9SREB .:R-B .:R-B, D DelaQE,

BC1 C!LL

.:R-B, D DelaQ$,

Ricardo Pannain

1/

B:-: DelaQ$, B!9C:0 E:FLG E:FG1 C!LL RE-;R9 DelaQE, B!9C:0 E:FLG E:FG1 C!LL RE-;R9 Del$0 BC1

Loop

C que o speaIer fique desligado por cerca de C $ segu do C volta para o la)o pri cipal C muda do para o 6a co de mem4ria 0 C coloca do o valor $00 5em decimal7 o C registrador GorI 5G7 C move do o valor a terior para a vari'vel C tempor'ria -EE.:$, que ser' utilizada a C roti a Del$0 5delaQ de $0ms7 C chama do a roti a Del$0 C retor a do C muda do para o 6a co de mem4ria 0 C coloca do o valor A0 5em decimal7 o C registrador GorI 5G7 C move do o valor a terior para a vari'vel C tempor'ria -EE.:$, que ser' utilizada a C roti a Del$0 5delaQ de $0ms7 C chama do a roti a Del$0 C retor a do C seta do o 6it " do registrador de C co figura)*o de i terrup)<es& +sto faz com C que a i terrup)*o de estouro de timer C 5registrador -ER07 seja ha6ilitada C coloca do o valor D2h 5$$0$$000 em 6i 'rio7 C o registrador GorI 5G7 C move do o valor a terior para o registrador C de opera)<es& +sto faz com que os 6its do C registrador sejam co figurados da segui te C ma eira( C L .ullL;ps + ter os 5TRB.;7 /U ha6ilitados C L Borda que ir' gerar a i terrup)*o e>ter a C o RB0 5+9-EDB7 /U su6ida C L + creme to de -ER0 5-0C,7 /U clocI C i ter o C L !plica)*o do prescaler 5.,!7 /U GDC L Falor do prescaler( $($ C se o 6it " do registrador de i terrup)<es C 5-0+17 estiver setado, sig ifica que ocorreu C um estouro do -ER0& E t*o, a vari'vel C au>iliar -EE.:$ 5que i icialme te tem o C valor $00 ou A07, = decreme tada& ?ua do C esta vari'vel chegar a zero, ou seja, qua do C ocorrerem $00 5ou A07 vezes a chamada da

&$00 -EE.:$ Del$0

&A0 -EE.:$ Del$0

+9-C:9, "

E:FLG E:FG1

0>D2 :.-+:9SREB

Del$0S$ B-1,,

+9-C:9, "

Ricardo Pannain

14

B:-: DEC1,M B:-: RE-;R9 E9D

Del$0S$ -EE.:$, $ Del$0

C roti a Del$0 5delaQ de $0 ms7, a roti a C retor a, pois o delaQ j' ter' ati gido $ C segu do 5ou 0,A segu dos7& Caso co tr'rio, C o programa fica em loop at= ocorrer a C i terru)*o de estouro do -ER0 C volta para verificar se ocorreu i terru)*o C decreme ta a vari'vel au>iliar -EE.:$ C delaQ de $0ms C retor a do C fim do programaC

Ricardo Pannain

11

Programa 7:
Este programa escreve dados a mem4ria EE.R:E do microco trolador& ! posi)*o 0 desta mem4ria ir' armaze ar o valor das chaves ligadas aos pi os R!0 R!3 da porta ! 5em 6i 'rio7& ! verifica)*o do valor armaze ado a mem4ria pode ser visualizado pelo programa de grava)*o do .+C, j' que esta mem4ria *o = apagada at= ser su6scrita& ! grava)*o da mem4ria EE.R:E leva um certo tempo& Devemos esperar este tempo a tes de co ti uar a e>ecu)*o do programa& -emos duas op)<es( ou esperamos que o 6it GR do registrador EEC:9$ seja limpado pelo hardWare, i dica do o fim da escrita, ou i troduzirmos um delaQ, que espera uma determi ada qua tidade de tempo a tes de co ti uar a e>ecu)*o& Esta impleme ta)*o utiliza um delaQ de, apro>imadame te, ",0 segu dos, para a espera da grava)*o da mem4ria EE.R:E&

Diagrama Esquem'tico(

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Ricardo Pannain

$2

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador e vari'veis au>iliares utilizadas o programa ,-!-;, .:R-! .:R-B R.0 :.-+:9SREB +9-C:9 EEC:9$ EEC:9" EED!-! EE!DDR -EE.:$ R.0B EE+E GRE9 GR RD E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; E?; 0>0@ 0>0A 0>00 0>0A 0>0$ 0>0B 0>22 0>2X 0>02 0>0X 0>0D A 0 " $ 0

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ E:FLG BH000$$$$$H C muda do para o 6a co de mem4ria $ C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !& -odos os C pi os da porta 5R!0 K R!37 est*o se do C co figurados como e trada C co clui do a co figura)*o da porta ! C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $("A0& C co clui do a co figura)*o do registrador de C opera)<es C muda do para o 6a co de mem4ria 0 C roti a que o6t=m o dado a ser escrito C roti a que escreve o dado a EE.R:E C fi aliza programa C muda do para o 6a co de mem4ria 0

E:FG1 E:FLG

.:R-! BH00000$$$H

E:FG1 B!9C:0 C!LL C!LL B:-: Dado B!9C:0

:.-+:9SREB Dado Grite 1im

Ricardo Pannain

$1

E:FLG E:FG1

BH00000000H EE!DDR

E:F1

.:R-!, G

E:FG1 RE-;R9 Grite B!9C:$ B,1

EED!-!

C coloca do o Rmero 0 o registrador GorI C move do o valor 0 para o registrador de C e dere)os da EE.R:E& Este correspo de C ao e dere)o da mem4ria EE.R:E o qual o C dado ser' armaze ado C coloca do o valor das chaves de e trada C ligadas a porta ! o registrador GorI 5G7, C que ser' o valor em 6i 'rio armaze ado o C e dere)o 0 da EE.R:E C coloca do o valor de G o registrador C EED!-!, que serve para armaze ar o dado C que ser' gravado a mem4ria EE.R:E C retor a do C muda do para o 6a co de mem4ria $ C seta do o 6it GRE9 do registrador de C co figura)<es EEC:9$& Este 6it ha6ilita a C escrita a mem4ria, e = utilizado como 6it de C segura )a C tam6=m utilizado por quest<es de prote)*o, C evita do que a mem4ria EE.R:E seja C su6scrita acide talme te, o registrador C EEC:9" deve, primeirame te, rece6er o C valor 0>AA, e, posteriorme te, o valor 0>!!& C Este procedime to = o6rigat4rio em todos os C processos de escrita a mem4ria EE.R:E

EEC:9$, GRE9

E:FLG

0>AA

E:FG1 E:FLG E:FG1 B,1

EEC:9" 0>!! EEC:9" EEC:9$, GR

B!9C:0 C!LL RE-;R9 Del$0 BC1

Del$0

C seta do o 6it GR do registrador de C co figura)<es EEC:9$& ?ua to este 6it = C setado, o ciclo de escrita = i iciado& ?ua do C termi ada a escrita, o hardWare, C automaticame te, limpa este 6it& C muda do para o 6a co de mem4ria 0 C espera a mem4ria ser escrita C retor a do C seta do o 6it " do registrador de C co figura)*o de i terrup)<es& +sto faz com C que a i terrup)*o de estouro de timer C 5registrador -ER07 seja ha6ilitada C coloca do o valor D2h 5$$0$$000 em 6i 'rio7 C o registrador GorI 5G7 C move do o valor a terior para o registrador C de opera)<es& +sto faz com que os 6its do C registrador sejam co figurados da segui te C ma eira( C L .ullL;ps + ter os 5TRB.;7 /U ha6ilitados

+9-C:9, "

E:FLG E:FG1

0>D2 :.-+:9SREB

Ricardo Pannain

$$

C L Borda que ir' gerar a i terrup)*o e>ter a C o RB0 5+9-EDB7 /U su6ida C L + creme to de -ER0 5-0C,7 /U clocI C i ter o C L !plica)*o do prescaler 5.,!7 /U GDC L Falor do prescaler( $($ Del$0S$ B-1,, +9-C:9, " C se o 6it " do registrador de i terrup)<es C 5-0+17 estiver setado, sig ifica que ocorreu C um estouro do -ER0& E t*o, a vari'vel C au>iliar -EE.:$ 5que i icialme te tem o C valor 07, = decreme tada& Como o valor C i icial desta vari'vel = 0, qua do C decreme tada pela primeira vez, ela passa a C ter o valor "AA& ?ua do esta vari'vel chegar C a zero, ou seja, qua do ocorrerem "A0 vezes C a chamada da roti a Del$0 5delaQ de $0 ms7, C a roti a retor a, pois o delaQ j' ter' C termi ado& Caso co tr'rio, o programa fica C em loop at= ocorrer a i terru)*o de estouro C do -ER0 C volta para verificar se ocorreu i terru)*o C decreme ta a vari'vel au>iliar -EE.:$ C delaQ de $0ms C retor a do

B:-: DEC1,M B:-: RE-;R9 1im( B:-:

Del$0S$ -EE.:$, $ Del$0

1im

C loop i fi ito& .ara come)ar o programa C ovame te, depois de uma escrita, = C ecess'rio resetar o microco trolador C fim do programa

E9D

Ricardo Pannain

$&

Programa 8:
Este programa lO os dados a teriorme te gravados a mem4ria EE.R:E, a posi)*o 0& : valor lido = represe tado, em 6i 'rio, atrav=s de LEDs ligados aos pi os da porta B&

Diagrama Esquem'tico(

L1 L2 L3 L4 L5 L6 L7 L8

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das co sta tes utilizadas para acessar os registradores do microco trolador e vari'veis au>iliares utilizadas o programa ,-!-;, .:R-! E?; E?; 0>0@ 0>0A

Ricardo Pannain

$0

.:R-B R.0 :.-+:9SREB +9-C:9 EEC:9$ EED!-! EE!DDR RD

E?; E?; E?; E?; E?; E?; E?; E?;

0>00 0>0A 0>0$ 0>0B 0>22 0>02 0>0X 0

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ CLR1 B!9C:0 CLR1 C!LL E:F1 E:FG1 B:-: Read B!9C:$ B,1 EEC:9$, RD C muda do para o 6a co de mem4ria $ C seta do o 6it RD do registrador de C co figura)<es EEC:9$& ?ua to este 6it = C setado, o ciclo de leitura = i iciado& ?ua do C termi ada a leitura, o hardWare, C automaticame te, limpa este 6it& Como a C leitura da mem4ria = muito r'pida, ou seja, o C dado = lido quase imediatame te ap4s o 6it C de i cio do ciclo de leitura ser setado, *o = C ecess'rio i troduzir delaQs para a leitura, ou C esperar que o 6it RD seja limpado pelo C hardWare C muda do para o 6a co de mem4ria 0 C retor a do .:R-B C muda do para o 6a co de mem4ria $ C limpa do os 6its de .:R-B& Com isso, todos C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C muda do para o 6a co de mem4ria 0 C limpa do os 6its do registrador de e dere)os C EE!DDR& +sso faz com que o e dere)o a ser C lido seja o e dere)o 0 C chama a roti a de leitura da mem4ria C move os dados lidos da mem4ria para o C registrador GorI 5G7 C e>i6e o valor lido da mem4ria, em 6i 'rio, C os LEDs ligados aos pi os da porta B C fi aliza o programa

EE!DDR Read EED!-!, G .:R-B 1im

B!9C:0 RE-;R9

Ricardo Pannain

$.

1im( B:-: E9D 1im C loop i fi ito& .ara come)ar o programa C ovame te, depois de uma escrita, = C ecess'rio resetar o microco trolador C fim do programa

Programa 9:
Este programa = similar ao programa A, mas e>plora os recursos de GatchDog e modo ,leep do microco trolador& ! partir deste programa, passaremos a utilizar o arquivo de defi i)<es padr*o da Eicrochip para microco troladores modelo $0123, o de se e co tra as defi i)<es dos omes e e dere)os de todos os ,1Rs 5registradores especiais7 e uma s=rie de outras defi i)<es ecess'rias para a utiliza)*o do microco trolador $0123& Como curiosidade, vocO pode co sultar este arquivo para visualizar todos os omes dos ,1Rs e co sta tes que podem ser utilizadas a programa)*o do $0123&

Diagrama Esquem'tico(
L1 L2 L3 L4 L5 L6 L7 L8

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 + clus*o do arquivo de defi i)<es da Eicrochip para o modelo $0123a +9CL;DE Y.$0123!&+9CY Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das vari'veis au>iliares utilizadas o programa

Ricardo Pannain

$3

C:9-!D:R

E?;

0>0C

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ E:FLG

0>0$

E:FG1 CLR1 E:FLG

.:R-! .:R-B BH0000$$$$H

E:FG1 B!9C:0 CLR1 CLR1 Loop( B-1,,

:.-+:9SREB .:R-B C:9-!D:R .:R-!, 0

C muda )a para o 6a co de mem4ria $ C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !& : primeiro C 6it, que correspo de ao pi o R!0 est' se do C co figurado como e trada, e o resta te dos C pi os desta porta como sada C co clui do a co figura)*o da porta ! C limpa do os 6its de .:R-B& Com isso, todos C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $($"2, pois, C como o quarto 6it est' setado, sig ifica que o C prescaler ser' aplicado ao GD- 5GatchDog7 C Como o prescaler est' acertado para $($"2, C o GD- ir' demorar $2 Z $"2 / ",@ segu dos C para estourar& 9ote que "A0 i creme tos do C GD- correspo dem a $2 ms C co clui do a co figura)*o do registrador de C opera)<es C muda do para o 6a co de mem4ria 0 C limpa do a porta B C limpa do a vari'vel au>iliar C:9-!D:R C testa do o estado da chave C& E qua to ela C estiver desligada 5valor 07, o programa fica C em loop& ?ua do ela for ligada, = i troduzido C um delaQ, atrav=s do GD-, para evitar C i terferO cias e tre o acio ame to da chave C C e o ace dime to dos LEDs, e o programa C passa a esperar que a chave C seja C desligada C espera at= a chave C ser ligada C espera o GD- estourar 5cerca de ",@ C segu dos7& 9este perodo de tempo, o

B:-: ,LEE.

Loop

Ricardo Pannain

$/

C oscilador = desligado e o processame to = C paralisado Loop"( B-1,C .:R-!, 0 C testa do o estado da chave C& E qua to ela C estiver ligada 5valor $7, o programa fica em C loop& ?ua do ela for desligada, o delaQ = C i troduzido, e o programa passa a e>i6ir o C valor do co tador os LEDs C espera at= a chave C ser desligada C espera o GD- estourar 5cerca de ",@ C segu dos7& 9este perodo de tempo, o C oscilador = desligado e o processame to = C paralisado C este po to, uma tra si)*o ocorreu& E t*o, a C vari'vel au>iliar C:9-!D:R, que grava a C qua tidade de tra si)<es feitas a chave C, = C i creme tada& C o valor da vari'vel C:9-!D:R = gravada o C registrador GorI 5G7 C o valor de tra si)<es = e>i6ido os LEDs C volta a esperar outra tra si)*o C fim do programa

B:-: ,LEE.

Loop"

+9C1

C:9-!D:R, 1

E:F1 E:FG1 B:-: E9D

C:9-!D:R, G .:R-B Loop

Ricardo Pannain

$4

Programa 10:
Este programa simula os movime tos de um ro6J& Este ro6J imagi 'rio possui dois dispositivos i fravermelhos, que fazem com que ele siga uma trajet4ria dese hada o ch*o, e dois motores, um para cada roda de tra)*o& ?ua do os se sores detectam a ecessidade de acertar a rota, os motores devem ser ma ipulados a fim de realizar o acerto& .or e>emplo, se o ro6J estiver desvia do a rota para a esquerda, o ro6J deve se mover para a direita at= que a rota seja acertada& .ara isto, o motor da direita deve ser revertido 5rodar para tr's7, e o da esquerda deve co ti uar ligado 5roda do para fre te7& ?ua do a rota estiver certa, am6os os motores devem ser ligados para fre te, para que o ro6J co ti ue a da do em fre te& :s movime tos possveis s*o para a esquerda 5reverter o motor da esquerda e ma ter o motor da direita a fre te7, para a direita 5reverter o motor da direita e ma ter o motor da esquerda a fre te7, para fre te 5ma ter os dois motores a fre te7, e para tr's 5reverter os dois motores7& :s se sores ser*o simulados pelas chaves ligadas aos pi os R!0 e R!$ da porta& Famos co ve cio ar que o valor 0 sig ifica que o se sor *o detectou desvio a trajet4ria, e o valor $ sig ifica que o se sor detectou um desvio a trajet4ria& :s LEDs ligados aos pi os RB0 e RB$ da porta B ir*o simular as sadas de co trole dos dois motores de tra)*o 5direito e esquerdo, respectivame te7& Famos co ve cio ar que o valor $ sig ifica ligar os motores fre te, e 0 sig ifica reverter os motores&

Diagrama Esquem'tico(

L1 L2

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Ricardo Pannain

$1

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 + clus*o do arquivo de defi i)<es da Eicrochip para o modelo $0123a +9CL;DE Y.$0123!&+9CY Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das vari'veis au>iliares utilizadas o programa !;N E?; 0>0C

Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( + icio( B!9C:$ E:FLG BH000000$$[ C muda do para o 6a co de mem4ria $ C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !& : dois C primeiros 6its, que correspo dem aos pi os C R!0 e R!$ est*o se do co figurados como C e trada, e o resta te dos pi os desta porta C como sada C co clui do a co figura)*o da porta ! C limpa do os 6its de .:R-B& Com isso, todos C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C muda do para o 6a co de mem4ria 0 C move do o status atual da porta ! para o C registrador GorI 5G7 C !9D l4gico e tre o registrador GorI 5G7 e o C valor #000000$$%, para que os " primeiros C 6its sejam ma tidos e os outros 0 passem a C ser 0& +sto = ecess'rio para realizar as C compara)<es
&2

E:FG1 CLR1 B!9C:0 Loop( E:F1 !9DLG

.:R-! .:R-B

.:R-!, G BH000000$$H

Ricardo Pannain

E:FG1 N:RLG B-1,C

!;N BH00000000H ,-!-;,, M

B:-: E:F1 N:RLG B-1,C

.araS1re te !;N, G BH0000000$H ,-!-;,, M

C coloca o valor da opera)*o a terior a C vari'vel au>iliar !;N C verifica se a trajet4ria est' correta 5valores C dos se sores / 0& ,e estiver correta, ma t=m C o movime to fre te C verifica se a opera)*o a terior resultou em C zero& ,e o 6it M do registrador ,-!-;, C estiver setado, sig ifica que a opera)*o C resultou em zero& +sto sig ifica que am6os os C se sores est*o com os valores 0, e a C trajet4ria est' correta& ,e isto ocorrer, o ro6J C ma t=m o movime to ' fre te& Caso C co tr'rio, a pr4>ima li ha = pulada e outras C verifica)<es ser*o feitas C faz o ro6J movime tarLse para fre te C faz uma c4pia do valor da vari'vel !;N o C registrador GorI 5G7 para compara)*o C verifica se a trajet4ria desviou para a C esquerda C se a opera)*o a terior resultou em zero, C sig ifica que a trajet4ria deve ser acertada, C ou seja, o ro6J deve movime tarLse para a C direita at= que retome a trajet4ria correta C faz o ro6J movime tarLse para a direita C faz uma c4pia do valor da vari'vel !;N o C registrador GorI 5G7 para compara)*o C verifica se a trajet4ria desviou para a C direita C se a opera)*o a terior resultou em zero, C sig ifica que a trajet4ria deve ser acertada, C ou seja, o ro6J deve movime tarLse para a C esquerda at= que retome a trajet4ria correta C faz o ro6J movime tarLse para a direita C faz uma c4pia do valor da vari'vel !;N o C registrador GorI 5G7 para compara)*o C verifica se o ro6J saiu totalme te da trajet4ria C 5isto ocorre qua do am6os os se sores C passam a ter o valor $7 C se a opera)*o a terior resultou em zero, C sig ifica que a trajet4ria deve ser acertada, C ou seja, o ro6J deve movime tarLse para tr's C at= que retome a trajet4ria correta C faz o ro6J movime tarLse para tr's C volta para o loop pri cipal C os dois motores ser*o ligados fre te

B:-: E:F1 N:RLG B-1,C

Direita !;N, G BH000000$0H ,-!-;,, M

B:-: E:F1 N:RLG B-1,C

Esquerda !;N, G BH000000$$H ,-!-;,, M

B:-: B:-: .araS1re te( E:FLG

.araS-ras Loop BH000000$$H

Ricardo Pannain

&1

E:FG1 B:-:

.:R-B Loop

C liga os motores C volta para o loop pri cipal C os dois motores ser*o revertidos C reverte os motores C volta para o loop pri cipal C o motor esquerdo ser' ser' ligado fre te e C o direito, revertido C acio a os motores C volta para o loop pri cipal C o motor direito ser' ser' ligado fre te e C o esquerdo, revertido C acio a os motores C volta para o loop pri cipal C fim do programa

.araS-ras( E:FLG BH00000000H E:FG1 .:R-B B:-: Loop Direita( E:FLG E:FG1 B:-: Esquerda( E:FLG E:FG1 B:-: E9D BH000000$0H .:R-B Loop BH0000000$H .:R-B Loop

Ricardo Pannain

&$

Programa 11:
Este programa servir' para a gera)*o de Rmeros aleat4rios& +r' fu cio ar da segui te ma eira( L Devemos gerar Rmeros aleat4rios de 0 a 0 L ?ua do a chave C, ligada ao pi o R!0 da porta !, estiver em Y$Y, o displaQ 5ligado aos pi os RB0 RBD da porta B7 ir' mostrar, seque cialme te, Rmeros de 0 a 0, em i tervalos de 0,0A segu dos L !o passar a chave C para Y0Y, o displaQ mostrar', dura te @ segu dos, o Rmero aleat4rio o6tido L .assados os @ segu dos, o displaQ se apaga e a seque cia se repete : Rmero represe tado os 3 6its me os sig ificativos do registrador GorI 5G7 = tra sformado em um Rmero equivale te o displaQ de D segme tos, como se estiv=ssemos impleme ta do um co versor& : c4digo refere te ao Rmero o displaQ de D segme tos tam6=m retor a o registrador G&

Diagrama Esquem'tico(

Gnd

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

abcdefg.

Ricardo Pannain

&&

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 + clus*o do arquivo de defi i)<es da Eicrochip para o modelo $0123a +9CL;DE Y.$0123!&+9CY Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das vari'veis au>iliares utilizadas o programa CBL:CV 0>0C 9;EER: DEL!\SC:9-EE.:R!L E9DC Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( -a6ela !DDG1 .CL, 1 C soma o valor do registrador G 5que co t=m o C Rmero a ser co vertido7 com o valor do C registrador .CL, para que o program cou ter C seja desviado para o valor que correspo de C ao Rmero a ta6ela de co vers*o& : C Rmero co vertido = retor ado em G, C atrav=s da chamada RE-LG C represe ta)*o do Rmero 0 C represe ta)*o do Rmero $ C represe ta)*o do Rmero " C represe ta)*o do Rmero @ C represe ta)*o do Rmero 3 C represe ta)*o do Rmero A C represe ta)*o do Rmero 0
&0

C i cio da 'rea de mem4ria do usu'rio

RE-LG RE-LG RE-LG RE-LG RE-LG RE-LG RE-LG


Ricardo Pannain

BH00$$$$$$H BH00000$$0H BH0$0$$0$$H BH0$00$$$$H BH0$$00$$0H BH0$$0$$0$H BH0$$$$$0$H

DelaQS"0Sms( BC1 +9-C:9, -0+1 C seta do o 6it -0+1 do registrador de C co figura)*o de i terrup)<es& +sto faz com C que a i terrup)*o de estouro de timer C 5registrador -ER07 seja ha6ilitada C coloca do o valor B$h 5$DD em decimal7 o C registrador GorI 5G7 C move do o valor $DD para o -ER0& Como o C prescaler foi setado para $("A0, o -ER0 ser' C i creme tado a cada "A0 ciclos& Com um C clocI de 3 Ehz, isto sig ifica que ocorre um C i creme to a cada "A0s& Como o -ER0 C come)a em $DD, ap4s DX i creme tos ele ir' C estourar& .ara ocorrer DX i creme tos, v*o C ser ecess'rios DX Z "A0 / "0""3s, ou, C apro>imadame te, "0 ms, que = o delaQ que C desejamos

E:FLG E:FG1

0>B$ -ER0

DelaQS"0SmsS$ CLRGDB-1,, +9-C:9, -0+1 C limpa o registrador GD- para *o ocorrer C um reset C se o 6it -0+1 do registrador de i terrup)<es C estiver setado, sig ifica que ocorreu um C estouro do -ER0& :u seja, o delaQ de "0 ms C foi ati gido, e t*o a roti a retor a& E qua to C *o ocorrer a i terrup)*o de estouro de C timer, o programa fica em loop, aguarda do C que esta i terrup)*o ocorra C espera i terrup)*o de estouro de timer C retor a do

B:-: RE-;R9 DelaQSFar BC1

DelaQS"0SmsS$

+9-C:9, -0+1

E:FLG E:FG1

0>@C -ER0

C seta do o 6it -0+1 do registrador de C co figura)*o de i terrup)<es& +sto faz com C que a i terrup)*o de estouro de timer C 5registrador -ER07 seja ha6ilitada C coloca do o valor @Ch 500 em decimal7 o C registrador GorI 5G7 C move do o valor 00 para o -ER0& Como o C prescaler foi setado para $("A0, o -ER0 ser' C i creme tado a cada "A0 ciclos& Com um C clocI de 3 Ehz, isto sig ifica que ocorre um C i creme to a cada "A0s& Como o -ER0 C come)a em 00, ap4s $X0 i creme tos ele ir' C estourar& .ara ocorrer $X0 i creme tos, v*o C ser ecess'rios $X0 Z "A0 / A0$D0 s, ou,

Ricardo Pannain

&.

CLRGD+ tervalo CLRGDB-1,, +9-C:9, -0+1

C apro>imadame te, A0 ms& C limpa o registrador GD- para *o ocorrer C um reset

B:-: DEC1,M B:-:

+ tervalo DEL!\SC:9-, 1 DelaQSFar

RE-;R9 + icio( CLR1 B!9C:$ CLR1 .:R-B -R+,B

C limpa o registrador GD- para *o ocorrer C um reset C se o 6it -0+1 do registrador de i terrup)<es C estiver setado, sig ifica que ocorreu um C estouro do -ER0& :u seja, o delaQ de A0 ms C foi ati gido, e t*o a vari'vel DEL!\SC:9-, C que co t=m a qua tidade de vezes que a C roti a ir' repetir 5ou seja, = um par]metro C que correspo de ao tempo desejado de C delaQ, leva do em co ta que cada itera)*o C da roti a demora A0 ms7, = decreme tada, e C a roti a recome)a& ?ua do a vari'vel C DEL!\SC:9- chegar a zero, a roti a C retor a, se do que o tempo gasto esta C roti a correspo de ao delaQ desejado& C E qua to *o ocorre uma i terrup)*o de C estouro de timer, a roti a perma ece em loop C espera i terrup)*o de estouro de timer C decreme ta a vari'vel DEL!\SC:9C se DEL!\SC:9- *o chegou a zero, volta a C e>ecutar a roti a& 9ote que esta roti a C co t=m tra)os de roti a recursiva& E t*o por C que, ao i v=s de chamar a roti a usa do C C!LL usamos B:-:^ ! resposta = simples, C pois se e>ecutamos C!LL, o e dere)o de C retor o = armaze ado a pilha 5stacI7& Como C a pilha possui ape as 2 veis, *o seria C possvel armaze ar todos os e dere)os de C retor os das v'rias chamadas mesma C roti a 5por e>emplo, se desejarmos um delaQ C de @ segu dos, a roti a deve ser chamada C 00 vezes7& +sto acarretaria a perda dos C e dere)os mais a tigos da pilha, e o C programa *o fu cio aria corretame te& C E t*o, utiliza do B:-:, o programa C some te desvia a e>ecu)*o para a li ha C correspo de te ao ome da roti a, *o C se do ecess'rio armaze ar o e dere)o de C retor o& C retor a do C limpa do a porta B C muda do para o 6a co de mem4ria $ C limpa do os 6its de -R+,B& Com isso, todos

Ricardo Pannain

&3

E:FLG

BH000$$$$$H

E:FG1 E:FLG

-R+,! BH00000$$$H

E:FG1 B!9C:0 Loop( CLRGDB-1,, B:-: E:F1 E:FG1 Divide( E:FLG ,;BG1 E:FG1 ,;BLG B-1,, B:-: +9C1 Dado( E:FLG E:FG1 R!0S$( CLRGDB-1,,

:.-+:9SREB

C os pi os 5RB0 a RBD7 ser*o utilizados como C sada C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !& -odos os C pi os 5R!0 K R!37 ser*o utilizados como C e trada& C co clui do a co figura)*o da porta ! C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o do C microco trolador& :s trOs primeiros 6its, que C correspo dem co figura)*o do prescaler, C est*o se do setados, o que sig ifica que o C prescaler assumir' o valor de $("A0 C co clui do a co figura)*o do registrador de C opera)*o C muda do para o 6a co de mem4ria 0 C limpa o registrador GD- para *o ocorrer C um reset C testa o status da chave C& ,e estiver C ligada, espera at= que ela seja desligada& C espera a chave C ser desligada C copia o valor corre te do timer 5-ER07 para o C registrador GorI 5G7 C move o valor de GorI 5G7 para a vari'vel C 9;EER: C move o valor 0 para o registrador GorI 5G7 C su6trai o valor de G da vari'vel 9;EER: C atualiza a vari'vel 9;EER: C su6trai o valor A do registrador G C testa a ocorrO cia do carrQ 5 egativo7 C se *o ocorreu carrQ, co ti ua os c'lculos C se ocorreu carrQ, i creme ta 9;EER: C move o valor 0 para o registrador GorI 5G7 C copia o co teRdo de G 5valor 07 para a C vari'vel -EE.:R!L C limpa o registrador GD- para *o ocorrer C um reset C testa o status da chave C& ,e estiver C ligada, vai e>i6i do os Rmeros aleat4rios o C displaQ, em i tervalos de 0,0A segu dos& ,e C estiver desligada, e>i6e o displaQ o Rmero C aleat4rio gerados, por @ segu dos& C se a chave C estiver desligada, e>i6e o C Rmero aleat4rio gerado o displaQ

.:R-!, 0 Loop -ER0, G 9;EER: DH0H 9;EER:, G 9;EER: DHAH ,-!-;,, C Divide 9;EER:, 1 DH0H -EE.:R!L

.:R-!, 0

B:-:

,aida

Ricardo Pannain

&/

E:F1 C!LL E:FG1 E:FLG E:FG1 C!LL DEC1,M B:-: B:-: C!LL ,aida( E:F1 C!LL E:FG1 E:FLG E:FG1

-EE.:R!L, G -a6ela .:R-B DH$H DEL!\SC:9DelaQSFar -EE.:R!L, 1 R!0S$ Dado DelaQS"0Sms 9;EER:, G -a6ela .:R-B DH00H DEL!\SC:9-

C move o Rmero aleat4rio atual para o C registrador GorI 5G7 C co verte este Rmero para o formato de D C segme tos C e>i6e o Rmero o displaQ C move o valor $ para o registrador GorI 5G7 C seta o multiplicador da roti a DelaQSFar para C o valor $& :u seja, a roti a ir' gerar um delaQ C de A0 ms C chama a roti a DelaQSFar C decreme ta o valor do Rmero aleat4rio atual C se -EE.:R!L *o chegou a zero, co ti ua C e>i6i do os Rmeros aleat4rios o displaQ C se -EE.:R!L for zero, seu valor deve ser C atualizado& 9o caso, o desvio para a li ha C Dado, ele voltar' ao valor 0 C delaQ de "0 ms C move o umero aleat4rio gerado, a ser C e>i6ido o displaQ, para o registrador G C co verte este Rmero para o formato de D C segme tos C e>i6e o Rmero o displaQ C move o valor 00 para o registrador GorI 5G7 C seta o multiplicador da roti a DelaQSFar para C o valor 00& :u seja, a roti a ir' gerar um C delaQ de 00 Z A0 / @000 ms, ou seja, @ C segu dos C chama a roti a DelaQSFar C apaga o co teRdo do displaQ C retor a para o loop pri cipal C fim do programa

C!LL CLR1 B:-: E9D

DelaQSFar .:R-B Loop

Ricardo Pannain

&4

Programa 12:
Este programa ir' simular um co tador de " dgitos 500 a XX7& .ara sua realiza)*o, ser*o utilizados dois displaQs de D segme tos, e dois co versores 6i 'rioLDsegme tos, que rece6e um Rmero 6i 'rio de 3 6its e tra sforma este Rmero para a represe ta)*o do displaQ& .ara e>i6ir os Rmeros os displaQs, utilizaremos a porta B, se do que os 3 6its me os sig ificativos represe tar*o o Rmero a ser e>i6ido o primeiro displaQ 5u idade7, e os 3 6its mais sig ificativos represe tar*o o Rmero a ser e>i6ido o segu do displaQ 5deze a7& Este co tador ter' duas chaves e um 6ot*o 5push 6uttom7& ! chave ligada e trada R!0 da porta ! ir' co trolar o se tido da co tagem 50 / Decresce te e $ / Cresce te7& ! chave ligada e trada R!$ da porta ! ir' co trolar a parada do co tador 50 / .arar e $ / Co tar7& E, por Rltimo, o 6ot*o ligado R!" servir' de reset, ou seja, qua do pressio ado, ir' zerar os displaQs e recome)ar a co tagem&

Diagrama Esquem'tico(

Ricardo Pannain

&1

Gnd

Gnd

abcdefg.

abcdefg.

a b c d e f g

4543

PIC
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

+V

Codifica)*o(
Defi i)*o do tipo de dispositivo que ser' utilizado& Correspo de ao tipo do microco trolador o qual iremos gravar o programa L+,- ./$0123 + clus*o do arquivo de defi i)<es da Eicrochip para o modelo $0123a +9CL;DE Y.$0123!&+9CY Defi i)*o dos coma dos de usu'rio para altera)*o das p'gi as de mem4ria 56a cos7 8DE1+9E B!9C:0 8DE1+9E B!9C:$ BC1 ,-!-;,, R.0 B,1 ,-!-;,, R.0

Defi i)<es das vari'veis au>iliares utilizadas o programa CBL:CV 0>0C C:9-!D:RSD$ C:9-!D:RSD" C i cio da 'rea de mem4ria do usu'rio

Ricardo Pannain

D3 D2 D1 D0 LD BI PH
02

D3 D2 D1 D0 LD BI PH

4543

a b c d e f g

C:9-!D:RS-E. C:9-!D:RSDEL!\ E9DC Defi i)<es do e dere)o de i cio de processame to, ou vetor de reset 50>007, e do vetor de i terrup)<es 50>0A7 :RB 0 B:-: + icio :RB A + cio do programa( DelaQ E:FLG E:FG1 BC1 E:FLG E:FG1 &$0 C:9-!D:RSDEL!\ +9-C:9, -0+1 0>@C -ER0 C move o valor $0 para o registrador C GorI 5G7 C move o co teRdo de G para a C vari'vel C:9-!D:RSDEL!\ C limpa do o 6it de ide tifica)*o de C ocorrO cia da i terrup)*o de estouro C de timer 5-0+17 C coloca do o valor @Ch 500 em C decimal7 o registrador GorI 5G7 C move do o valor 00 para o -ER0& C Como o prescaler foi setado para C $(03, o -ER0 ser' i creme tado a C cada 03 ciclos& Com um clocI de C 3 Ehz, isto sig ifica que ocorre um C i creme to a cada 03s& Como o C -ER0 come)a em 00, ap4s $X0 C i creme tos ele ir' estourar& C .ara ocorrer $X0 i creme tos, v*o ser C ecess'rios $X0 Z 03 / $"A33 s, ou, C apro>imadame te, $",A ms& C limpa o registrador GD- para *o C ocorrer um reset C limpa o registrador GD- para *o C ocorrer um reset C se o 6it -0+1 do registrador de C i terrup)<es estiver setado, sig ifica C que ocorreu um estouro do -ER0& :u C seja, o delaQ de $",A ms foi ati gido, C e t*o a vari'vel C C:9-!D:RSDEL!\, que co t=m a C qua tidade de vezes que a roti a ir' C repetir 5que, o caso do e>emplo, = C de $0 vezes7, = decreme tada, e a C roti a recome)a& ?ua do a vari'vel
01

CLRGD+ tervalo CLRGDB-1,, +9-C:9, -0+1

Ricardo Pannain

B:-: DEC1,M B:-: EostrarSFalor E:F1 E:FG1 ,G!.1

+ tervalo C:9-!D:RSDEL!\, 1 DelaQSFar C:9-!D:RSD", G C:9-!D:RS-E. C:9-!D:RS-E., 1

C C:9-!D:RSC:9- chegar a zero, a C roti a retor a, se do que o tempo C gasto esta roti a correspo de ao C delaQ desejado 5 o caso, $"A ms7 C E qua to *o ocorre uma i terrup)*o C de estouro de timer, a roti a C perma ece em loop C espera i terrup)*o de estouro de C timer C decreme ta a vari'vel DEL!\SC:9C se DEL!\SC:9- *o chegou a zero, C volta a e>ecutar a roti a C move o valor atual do displaQ" para o C registrador GorI 5G7 C coloca este valor a vari'vel C C:9-!D:RS-E. C realiza um sWap dos 6its me os C sig ificativos com os 6its mais C sig ificativos da vari'vel C C:9-!D:RS-E.& +sto = ecess'rio C porque o Rmero a ser e>i6ido o C displaQ" ser' escrito os 3 6its mais C sig ificativos da porta B, e t*o eles C devem estar a posi)*o adequada C limpa o registrador GorI 5G7 C realiza um :R l4gico e tre o valor C corre te do displaQ$ e o co teRdo do C registrador GorI 5G7& Com isso, os C 3 6its me os sig ificativos de G ir*o C co ter o Rmero a ser e>i6ido o C displaQ$ C realiza um :R l4gico e tre o valor da C vari'vel C:9-!D:RS-E. 5que C co t=m o sWap dos 6its do Rmero C co tido a vari'vel C:9-!D:RSD"7 C e o co teRdo do registrador GorI 5G7& C Com isso, os 3 6its mais sig ificativos C de G ir*o co ter o Rmero a ser C e>i6ido o displaQ" C e>i6e os Rmeros os displaQs $ e " C retor a do C limpa do a porta B C muda do para o 6a co de mem4ria $ C limpa do os 6its de -R+,B& Com isso, C todos os pi os 5RB0 a RBD7 ser*o C utilizados como sada C utiliza do o registrador GorI 5G7 para C co figurar a porta de e trada !&

CLRG +:RG1

C:9-!D:RSD$, G

+:RG1

C:9-!D:RS-E., G

E:FG1 RE-;R9 + icio( CLR1 B!9C:$ CLR1 E:FLG

.:R-B

.:R-B -R+,B BH000$$$$$H

Ricardo Pannain

0$

E:FG1 E:FLG

-R+,! BH00000$$H

E:FG1 B!9C:0 Resetar( CLR1 CLR1 CLR1 C!LL Loop( C!LL B-1,C B:-: B-1,,

:.-+:9SREB

C -odos os pi os 5R!0 K R!37 ser*o C utilizados como e trada& C co clui do a co figura)*o da porta ! C utiliza do o registrador GorI 5G7 para C co figurar o registrador de opera)*o C do microco trolador& :s trOs primeiros C 6its, que correspo dem C co figura)*o do prescaler, est*o C se do co figurados de ma eira a C fazer o prescaler assumir o valor de C $(03 C co clui do a co figura)*o do C registrador de opera)*o C muda do para o 6a co de mem4ria 0 C limpa do o displaQ$ C limpa do o displaQ" C limpa do a vari'vel C C:9-!D:RS-E. C e>i6i do o valor #00% os displaQs C delaQ de 0,"A segu dos C verifica do se o 6ot*o de reset do C c tador foi pressio ado& C se o 6ot*o estiver pressio ado, reseta C os displaQs C verifica do o status da chave de C parada do co tador& ,e estiver C desligada, o co tador ir' parar& ,e C estiver ligada, a co tagem co ti ua C p'ra o co tador C verifica do o se tido da co tagem& ,e C a chave de se tido estiver ligada, a C co tagem = cresce te& Caso C co tr'rio, a co tagem = decresce te C co tagem decresce te C co tagem cresce te C i creme ta o valor atual do displaQ$ C move o valor $0 para o registrador C GorI 5G7 C su6trai o valor atual do displaQ$ do C valor de G 5 o caso, $07 C verifica se a opera)*o a terior C resultou em zero& Caso sim, o C displaQ$ deve ser atualizado, volta do C para o valor 0, e o displaQ" deve ser C i creme tado& Caso co tr'rio, a C co tagem co ti ua ormalme te

C:9-!D:RSD$ C:9-!D:RSD" C:9-!D:RS-E. EostrarSFalor DelaQ .:R-!, " Resetar .:R-!, $

B:-: B-1,,

Loop .:R-!, 0

B:-: Cresce te( +9C1 E:FLG ,;BG1 B-1,,

Decresce te C:9-!D:RSD$, 1 &$0 C:9-!D:RSD$, G ,-!-;,, M

Ricardo Pannain

0&

B:-: CLR1 +9C1 E:FLG ,;BG1 B-1,C

DesviarSC C:9-!D:RSD$ C:9-!D:RSD", 1 &$0 C:9-!D:RSD", G ,-!-;,, M

CLR1 DesviarSC( C!LL B:-: Decresce te( DEC1 E:FLG ,;BG1 B-1,,

C:9-!D:RSD" EostrarSFalor Loop C:9-!D:RSD$, 1 0>11 C:9-!D:RSD$, G ,-!-;,, M

C co ti ua a co tagem C o displaQ$ volta para o valor 0 C o displaQ" = i creme tado C move o valor $0 para o registrador C GorI 5G7 C su6trai o valor atual do displaQ" do C valor de G 5 o caso, $07 C verifica se a opera)*o a terior C resultou em zero& Caso sim, o C displaQ" tam6=m deve ser atualizado, C volta do para o valor 0 C o displaQ" volta para o valor 0 C e>i6e o valor atual dos co tadores de C cada displaQ C volta para o loop pri cipal C decreme ta o valor atual do displaQ$ C move o valor 0>11 5"AA em decimal7 C para o registrador GorI 5G7 C su6trai o valor atual do displaQ$ de G C verifica se a opera)*o a terior C resultou em zero& Caso sim, o C displaQ$ deve ser atualizado, volta do C para o valor X, e o displaQ" deve ser C decreme tado& Caso co tr'rio, a C co tagem co ti ua ormalme te C co ti ua a co tagem C move o valor X para o registrador C GorI 5G7 C atualiza o co tador do displaQ$ C decreme ta o displaQ" C move o valor 0>11 5"AA em decimal7 C para o registrador GorI 5G7 C su6trai o valor atual do displaQ" de G C verifica se a opera)*o a terior C resultou em zero& Caso sim, o C displaQ" tam6=m deve ser atualizado, C volta do para o valor X C co ti ua a co tagem C move o valor X para o registrador C GorI 5G7 C o displaQ" volta para o valor X C e>i6e o valor atual dos co tadores de C cada displaQ C volta para o loop pri cipal

B:-: E:FLG E:FG1 DEC1 E:FLG ,;BG1 B-1,,

DesviarSD &X C:9-!D:RSD$ C:9-!D:RSD", 1 0>11 C:9-!D:RSD", G ,-!-;,, M

B:-: E:FLG E:FG1 DesviarSD( C!LL B:-:

DesviarSD &X C:9-!D:RSD" EostrarSFalor Loop

Ricardo Pannain

00

E9D

C fim do programa

Ricardo Pannain

0.

Das könnte Ihnen auch gefallen