Você está na página 1de 2

source_PIC035.

c 08/02/2018 12:29:57

1: /*
2: WR Kits Channel - Curso de Microcontroladores PIC aula 035
3:
4: Contador de passagem com sensor infravermelho e display 7 seg
5:
6: Objetivo: utilizar a interrupção externa para contar passagem de
7: itens por uma esteira por exemplo
8:
9: MCU: PIC16F628A
10:
11: Clock: 4MHz
12:
13: Plataforma: Paradoxus 9 2.0 (www.wrkits.com.br)
14:
15:
16:
17: */
18:
19:
20: // --- Protótipo das Funções Auxiliares ---
21: int disp(int num); //Exibe o dado no display
22:
23:
24: // --- Variáveis Globais ---
25: char counter = 0x00; //Variável para contagem
26:
27: // --- Rotina de Interrupção ---
28: void interrupt()
29: {
30: if(INTF_bit) //Interrupção externa?
31: { //Sim...
32: INTF_bit = 0x00; //Limpa a flag
33: counter++; //Incrementa contador
34: PORTB = disp(counter); //Atualiza dado
35:
36: if(counter > 0x09) //Counter maior que 9?
37: { //Sim...
38: counter = 0x00; //Reinicia counter
39: PORTB = disp(counter); //Envia dado para display
40: } //end if aninhado
41:
42: } //end if
43:
44: } //end interrupt
45:
46: // --- Rotina Principal ---
47: void main()
48: {
49: CMCON = 0x07; //Desabilita comparadores
50: GIE_bit = 0x01; //Habilita interrupção global
51: PEIE_bit = 0x00; //Desabilita interrupção por periféricos
52: INTE_bit = 0x01; //Habibilita interrupção externa
53: INTEDG_bit = 0x01; //ligado ao registrador OPTION_REG //Interrupção
externa por borda de subida
54:
55: TRISB = 0x01; //Entrada RB0/INT
56: PORTB = 0x7e; //Inicia PORTB 7 0111 E 1110

1/2 mikroC PRO for PIC by mikroElektronika

Você também pode gostar