Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

16
WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS PRATICOS: PRATICOS: PRATICOS: PRATICOS: 10 EXEMPLOS FUNCIONAIS EM LINGUAGEM C 1- Acendendo um led: 2 - Acionando led por chave: 3 - Pisca-pisca: 4 - Corredor de leds: 5 - Botão de trava: 6 - Acionando led por botão: 7 - Vai e volta de leds: 8 - Contador de 0 á 9 com display: 9 - Contador de 0 á 9 com display ll: 10 - Pisca-pisca acionado por botão: WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM WWW.CLOCKSIZE.BLOGSPOT.COM

Transcript of Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

Page 1: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

WWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COM

CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS

PRATICOS:PRATICOS:PRATICOS:PRATICOS:

10 EXEMPLOS FUNCIONAIS EM LINGUAGEM C

1- Acendendo um led: 2 - Acionando led por chave:

3 - Pisca-pisca: 4 - Corredor de leds: 5 - Botão de trava:

6 - Acionando led por botão: 7 - Vai e volta de leds:

8 - Contador de 0 á 9 com display: 9 - Contador de 0 á 9 com display ll: 10 - Pisca-pisca acionado por botão:

WWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COM

Page 2: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

1- Acendendo um led:

Neste exemplo o objetivo é acender um led sem o auxilio de chaves ou botões, para isso utiliza-se uma única saída do pic16f628a , esta saída por sua vez esta ligada através de um resistor a um led que indica o funcionalidade do exemplo.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

360R D1LED-BIGY

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ output_high(pin_b0);

}

Page 3: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

2 - Acionando led por chave:

Como o próprio titulo diz o exemplo a seguir tem como função ligar e desligar um led. O que diferencia do exemplo anterior é que agora alem da saída referente ao led tem também uma entrada acomoda a chave liga e desliga.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

360R D1LED-BIGY

R2360R

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ while(1){ if((input(pin_a0))==1){ output_high(pin_b0); } else output_low(pin_b0); } }

Page 4: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

3 - Pisca-pisca:

A seguir temos o exemplo de um pisca pisca feito com leds, como poderá ser visto no código fonte este ira piscar a cada 350 ms(milisegundos), e colocara a saída do pic em nível lógico alto ou baixo.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

100

D1

LED-BIRY

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ while(true){ output_b(0b00000001); delay_ms(350); output_b(0); delay_ms(350); } }

Page 5: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

4 - Corredor de leds:

O circuito referente ao exemplo usa todas as saídas do port_b totalizando 8 pinos (saídas), o exemplo tem como finalidade reproduzir uma corrida de leds continua que sempre volta onde começou o ciclo.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

D1

LED-GREEND2

LED-GREEND3

LED-GREEND4

LED-GREEND5

LED-GREEND6

LED-GREEND7

LED-GREEND8

LED-GREEN

R1

100RR2

100RR3

100RR4

100RR5

100RR6

100RR7

100RR8

100R

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ int d=0; while(true){ output_b(d); delay_ms(100); output_b(0); d=d<<1; if (d == 256) d=0; } }

Page 6: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

5 - Botão de trava: Este exemplo usa duas chaves, ligadas a duas entradas do microcontrolador e consequentemente um led ligado numa saída do port_b, sua funcionalidade é a seguinte, o led só ira acender se for ligado e desligado a primeira chave, mais desde que não seja apertado o botão 2, assim exemplificando um sistema de trava, pois se o botão 2 permanecer apertado o led não acende.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

100R

R2100R

D1LED-GREEN

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ while(true){ if((input(pin_a0)) == 1){ delay_ms(10); if(input(pin_a0) == 0){ output_high(pin_b0); } if(input(pin_a1) == 1){ output_low(pin_b0); } } } }

Page 7: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

6 - Acionando led por botão: Semelhante ao exemplo 2 este tem a função de acionar um led por botão não é chave, semelhante também ao exemplo anterior o led somente ira acender quando for solto o botão e ira apagar quando for apertado e solto novamente.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1100R

D1LED-GREEN

R2

100R

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ int chave=0; while(true){ if(input(pin_a0)==1 && chave ==0){ while(chave==0){ if(input(pin_a0)==0){ output_high(pin_b0); chave=1; } } } if(input(pin_a0)== 1 && chave ==1){

Page 8: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

while(chave ==1){ if(input(pin_a0)== 0){ output_low(pin_b0); chave==0; } } } } }

Page 9: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

7 - Vai e volta de leds: Assim como o exemplo 4 este utiliza o port_b inteiro, não utiliza nenhum botão ou chave. Seu funcionamento é simples ao clicar em play no simulador Proteus disponível no site, o led b0 acende, depois de um delay de alguns milisegundos o led a seguir acende e não apaga o anterior, isso ocorre até todos acenderem,até que o led do pino b7 apaga e depois de um delay o led b6 apaga e isso ocorre gradativamente em seqüência até que o ciclo se inicie novamente e infinitamente.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

100RR2

100RR3

100RR4

100RR5

100RR6

100RR7

100RR8

100R

D1

LED-YELLOWD2

LED-YELLOWD3

LED-YELLOWD4

LED-YELLOWD5

LED-YELLOWD6

LED-YELLOWD7

LED-YELLOWD8

LED-YELLOW

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ int i =1; while(true){ while(i <=255){ output_b(i); i= (i<<1)+ 1; delay_ms(100); if(i == 255){ output_b(i); delay_ms(100); while(i <= 255){ i = (i>>1) ; output_b(i); delay_ms(100);

Page 10: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

if(i == 1) break; } } } } }

Page 11: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

8 - Contador de 0 á 9 com display: Este exemplo não utiliza nenhum botão ou chave e usa todo o port_b do microcontrolador. Ao port_b é ligado um display de 7 segmentos de catodo comum que por conseqüência ira reproduzir um contador de 0 á 9 que será repetido infinitamente.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1

330RR2

330RR3

330RR4

330RR5

330RR6

330RR7

330R

Código Fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ int tabela [ ]= {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111100, 0b0000111, 0b1111111, 0b1100111}; int i = 0; while(true){

Page 12: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

output_b(tabela[i]); delay_ms(350); i++; if(i == 10) i = 0; } }

Page 13: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

9 - Contador de 0 á 9 com display ll: Este exemplo executa a mesma função do exemplo anterior, porventura utiliza somente 4 saidas do port_b assim viabilizando o uso das outra saídas para outra funções. Para tanto a modificação do circuito é necessária, por se dizer utiliza-se um outro componente, se trata do 4511 usado como driver de display, as modificações do circuito podem ser vista no circuito abaixo. Outra característica para essa mudança se nota no código onde a declaração dos pinos do display são representados por código hexadecimal, (decimal não funciona neste caso).

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

A7

B1

C2

D6

LT3

BI4

LE/STB5

QA 13

QB 12

QC 11

QD 10

QE 9

QF 15

QG 14

U2

4511

Código fonte #include <16f628a.h> #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP #use delay (clock=4000000) void main(){ int tabela[]= {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9}; int i = 0; while(true){ output_b(tabela[i]); delay_ms(350); i++; if(i == 10) i = 0; } }

Page 14: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

10 - Pisca-pisca acionado por botão:

Semelhante ao exemplo do pisca-pisca este tem a mesma função só que o acionamento do processo é controlado pelo uso de uma chave.

RA7/OSC1/CLKIN16

RB0/INT 6

RB1/RX/DT 7

RB2/TX/CK 8

RB3/CCP1 9

RB4 10

RB5 11

RB6/T1OSO/T1CKI 12

RB7/T1OSI 13

RA0/AN0 17

RA1/AN1 18

RA2/AN2/VREF 1

RA3/AN3/CMP1 2

RA4/T0CKI/CMP2 3

RA6/OSC2/CLKOUT15

RA5/MCLR4

U1

PIC16F628A

R1330R

R2

330R D1LED-GREEN

Código Fonte #include <16f628a.h> #use delay(clock=4000000) #fuses INTRC,NOWDT,NOPROTECT,NOMCLR,NOLVP void main(){ while(1){ if (input(pin_a1) == 1){ output_high(pin_b0); delay_ms(200); output_low(pin_b0); delay_ms(200); } else { output_low(pin_b0); } } }

Page 15: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com

WWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COM

CODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPCODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPCODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPCODIGOS FONTE PARA MICROCONTROLADOR PIC16F628A, EXEMPLOS LOS LOS LOS

PRATICOS:PRATICOS:PRATICOS:PRATICOS:

10 EXEMPLOS FUNCIONAIS EM LINGUAGEM C

1- Acendendo um led: 2 - Acionando led por chave:

3 - Pisca-pisca: 4 - Corredor de leds: 5 - Botão de trava:

6 - Acionando led por botão: 7 - Vai e volta de leds:

8 - Contador de 0 á 9 com display: 9 - Contador de 0 á 9 com display ll: 10 - Pisca-pisca acionado por botão:

WWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COMWWW.CLOCKSIZE.BLOGSPOT.COM

Page 16: Exemplos Em C Para Pic 16f628a Www.clocksize.blogspot.com