Escolar Documentos
Profissional Documentos
Cultura Documentos
Microcontrolador PIC16F877A
Microcontrolador PIC16F877A
MICROCONTROLADOR
PIC16F877A
FUNDAMENTOS
E
PROGRAMAO BSICA
Introduo
PIC PROGRAMMABLE INTERRUPT CONTROLLER (CONTROLADOR DE INTERRUPO
PROGRAMVEL) um componente eletrnico programvel produzido pela Microchip Technology Inc, utilizado
no controle de processos e atividades lgicas.
Os microcontroladores so compostos de uma nica pastilha de silcio encapsulada, popularmente chamada de CI
(Circuito Integrado) e todos os elementos necessrios para o controle das atividades esto internamente ligados a
pastilha de silcio. Alis, essa a caracterstica principal que diferencia os microcontroladores dos
microprocessadores.
O PIC16F877A est enquadrado na famlia 8 bits de microcontroladores Microchip, possui via de programao
com 14 bits e um conjunto de 35 instrues.
O PIC16F877A
Microcontrolador de 40 pinos;
Memria de programa 14 bits com 8k words, capacidade de escrita e leitura pelo prprio cdigo interno;
15 interrupes disponveis;
Memria de programao E2PROM FLASH permite a gravao do programa diversas vezes por meio de
pulsos eltricos no mesmo CI, no necessrio apag-lo por meio de luz ultravioleta;
Power-on Reset (POR) interno Ao ligar o microcontrolador, ele garante funcionamento correto do PIC;
Brown-out Reset (BOR) interno Ele Reseta o PIC sempre que a tenso de alimentao for menor que
4V;
Tipo
Descrio
13
14
1
Caracte
rstica
I
O
I/P
OSC1 / CLKIN
OSC2 / CLKOUT
MCLR / VPP
ST/CMOS4
VSS
VDD
RA0 / AN0
RA1 / AN1
RA2 / AN2 / VREF- /
CVREF
RA3 / AN3 / VREF+
12/31
11/32
2
3
4
P
P
I/O
I/O
I/O
TTL
TTL
TTL
I/O
TTL
I/O
ST
RA5 / SS / AN4 /
C2OUT
I/O
TTL
RB0 / INT
RB1
RB2
RB3 / PGM
RB4
RB5
RB6 / PGC
33
34
35
36
37
38
39
I/O
I/O
I/O
I/O
I/O
I/O
I/O
TTL/ST1
TTL
TTL
TTL
TTL
TTL
TTL/ST2
RB7 / PGD
40
I/O
TTL/ST2
15
I/O
ST
16
I/O
ST
RC2 / CCP1
17
I/O
ST
18
I/O
ST
23
I/O
ST
RC5 / SDO
RC6 / TX / CK
24
25
I/O
I/O
ST
ST
RC7 / RX / DT
26
I/O
ST
RD0 / PSP0
RD1 / PSP1
RD2 / PSP2
RD3 / PSP3
19
20
21
22
I/O
I/O
I/O
I/O
TTL/ST3
TTL/ST3
TTL/ST3
TTL/ST3
ST
27
28
29
30
8
I/O
I/O
I/O
I/O
I/O
TTL/ST3
TTL/ST3
TTL/ST3
TTL/ST3
TTL/ST3
RE1 / WR / AN6
I/O
TTL/ST3
RE2 / CS / AN7
10
I/O
TTL/ST3
Legenda:
I
=> Input (Entrada);
O => Output (Sada);
I/O => Input/Output (Entrada ou Sada);
P
=> Power (Alimentao);
=> No utilizado;
TTL => Pino tipo TTL;
ST => Pino tipo Schmitt Trigger;
Notas:
1
Ciclo de Mquina
Todo microcontrolador possui um sinal de clock para poder trabalhar. No caso dos microcontroladores PIC o sinal
de clock internamente dividido por 4. Assim sendo se utilizarmos um oscilador externo que gere um clock de
4MHz, tem-se um clock interno de 1MHz e um ciclo de mquina de 1s.
CKint = CKext / 4
TCM = 1 / Ckint
De maneira simplificada pode-se utilizar como clculo de ciclo de mquina a seguinte equao:
TCM = 4 / Freq. Osc.
Supondo que cada etapa gaste 30 minutos para ser realizada, utilizando o ciclo sem PIPELINE, um cesto de roupas
levar 2h para ficar pronto. J utilizando o ciclo com PIPELINE, o mesmo cesto ficar pronto em apenas 30
minutos. Ao final de duas horas teremos lavado 4 cestos de roupas.
10
Memrias
Memria de Programa: a memria onde ficar armazenada as instrues do programa no qual far o controle
das atividades. No caso do PIC16F877A esta uma memria do tipo FLASH de 8192 palavras (8K) e 14 bits.
11
12
RP0
0
1
0
1
Observao: Sempre que o PIC for ligado, o Banco 0 ser o primeiro a ser selecionado.
Interrupes
As interrupes so ferramentas que possibilitam a execuo de determinadas situaes no momento em que elas
ocorrem. Normalmente elas so geradas devido aes externas.
O PIC 16F877A composto por 15 interrupes diferentes, as quais sempre sero desviadas para o vetor de
interrupo (0004h) da memria de programa.
13
Interrupo de Timer 0;
Interrupo Externa;
Interrupo por mudana de Estado;
Interrupo da Porta Paralela (PSP);
Interrupo dos Conversores A/D;
Interrupo de Recepo da USART;
Interrupo de Transmisso da USART;
Interrupo da Comunicao Serial (SPI e I2C);
Interrupo do CCP1 (Capture/Compare/PWM);
Interrupo do Timer 1;
Interrupo de Timer 2;
Interrupo de fim de escrita na E2PROM/FLASH;
Interrupo de Coliso de Dados (BUS Collision);
Interrupo dos Comparadores;
Caractersticas Eltricas
Temperatura de Trabalho
Temperatura de Armazenamento
Tenso de Trabalho
Tenso Mxima no Pino VDD (em relao a Vss)
Tenso Mxima no MCRL (em relao a Vss)
Tenso Mxima no Pino RA4 (em relao a Vss)
Tenso Mxima nos Demais Pinos (em relao a Vss)
Dissipao Mxima de Energia
Corrente Mxima de Sada no Pino Vss
Corrente Mxima de Entrada no Pino VDD
Corrente Mxima de Sada de um Pino (em VDD)
Corrente Mxima de Entrada de um Pino (em Vss)
Corrente Mxima de Entrada do PORTA, PORTB e PORTE
Corrente Mxima de Sada do PORTA, PORTB e PORTE
Corrente Mxima de Entrada do PORTC e PORTD
Corrente Mxima de Sada do PORTC e PORTD
-55C at +125C
-65C at +150C
4V a 5,5V
-0,3V a 7,5V
0 a 14V
0 a 8,5V
-0,3V a (VDD + 0,3V)
1W
300mA
250mA
25mA
25mA
200mA
200mA
200mA
200mA
14
Set de Instrues
O Set de instrues dividido em quatro grupos, os quais compem um conjunto com 35 instrues:
Controles;
Descrio
ADDWF
f,d
ANDWF
f,d
CLRF
COMF
f,d
DECF
f,d
Limpa f.
f,d
INCF
f,d
INCFSZ
f,d
IORWF
f,d
MOVF
f,d
MOVWF
RLF
f,d
RRF
f,d
SUBWF
f,d
f,d
em d.
XORWF
f,d
15
Descrio
ADDLW
ANDLW
IORLW
MOVLW
Move k para W.
SUBLW
XORLW
Descrio
BCF
f,b
BSF
f,b
BTFSC
f,b
BTFSS
f,b
Controles
Instruo Argumentos
Descrio
CLRW
Limpa w.
NOP
CALL
Executa a rotina R.
CLRWDT
GOTO
RETFIE
RETLW
RETURN
SLEEP
16
Fluxogramas
Os fluxogramas so ferramentas que ajudam o programador a estruturar de maneira grfica uma seqncia
lgica de atividades que posteriormente sero executadas por um determinado programa.
Elementos utilizados na construo dos fluxogramas:
Inicio ou Trmino Smbolo utilizado para representar inicio ou trmino de
programa;
Processo Smbolo utilizado para descrever uma determinada tarefa;
Pega nmero B.
Soma A+B
No
Guarda A+B em I
A+B Par?
Sim
Guarda A+B em P
FIM
17
INICIO
CONFIGURAES
INICIAIS
1
SIM
ACENDE O LED
BOTO
PRESSIONADO?
NO
APAGA O LED
O Programa
;*************************************************************************************
;*
PROGRAMA LIGA LED POR MEIO DE UM BOTO
*
;*************************************************************************************
;***************************CONFIGURAO PARA GRAVAO*************************
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
; CP - CODE PROTECTION (HABILITA OU DESABILITA LEITURA DA MEMRIA DE PROGRAMA).
; DEBUG - DEPURADOR DA PLACA ICD 2 (HABILITA OU DESABILITA DEPURADOR DA PLACA ICD 2).
; PWRTE - POWER UP TIMER (HABILITA OU DESABILITA TEMPORIZADOR QUE AGUARDA 72 ms PARA
;ESTABILIZAR O PIC).
; WDT - WATCHDOG TIMER ("CO DE GUARDA" TEMPORIZADOR QUE RESETA O PIC QUANDO SISTEMA
;TRAVADO).
; BOREN - BROWN OUT DETECT (SE A ALIMENTAO VDD FOR MENOR QUE 4V DURANTE 100 MICRO-SEG.
;O PIC RESETA).
; LVP - LOW VOLTAGE PROGRAM (SISTEMA DE PROGRAMAO EM BAIXA TENSO).
; XT - OSCILADOR DO TIPO CRISTAL.
18
BCF
BSF
STATUS, RP0
STATUS, RP0
;O PIC 16F877A POSSUI QUATRO BANCOS DE MEMRIAS PARA OS REGISTRADORES ESPECIAIS (SFR). POR
;ISSO, QUANDO QUEREMOS ACESSAR ALGUM REGISTRADOR SFR, DEVEMOS PRIMEIRO INFORMAR AO
;SISTEMA QUAL BANK QUEREMOS TRABALHAR.
;PARA ISSO DEVEMOS ALTERAR OS BITS RP0 E RP1 NO REGISTRADOR STATUS.
;TABELA:
;
BANCO
RP1 RP0
;
0
0
0
;
1
0
1
;
2
1
0
;
3
1
1
;OBS: SEMPRE QUE O PIC INICIA, RP1 E RP0 SO INICIADOS COM ZERO.LOGO O BANK 0 SEMPRE O
;PRIMEIRO SELECIONADO.
;***************************************VARIVEIS*************************************
CBLOCK 0X70
;ENDEREO LOCALIZADO NA MAMRIA DE DADOS DO BANK 0. FOI
;ESCOLHIDO, POIS EST LOCALIZAO ACESSADA DE QUALQUER BANCO, FACILITANDO A OPERAO.
ENDC
;*****************************************FLAGS***************************************
; SINALIZA QUEM GEROU A INTERRUPO. "NO SER UTILIZADO NESTE PROGRAMA".
;***************************************CONSTANTES************************************
; FILTRO PARA EVITAR RUIDOS DOS BOTES. "NO SER UTILIZADO NESTE PROGRAMA".
;****************************************ENTRADAS*************************************
#DEFINE BOTAO_0 PORTB,0
;*****************************************SADAS**************************************
#DEFINE LED_1 PORTB,1
;*************************************VETOR DE RESET**********************************
ORG 0X0000
GOTO INICIO
;***********************************INICIO DA INTERRUPO*****************************
ORG 0X0004
RETFIE
19
;LIMPA PORTB
BANK1
MOVLW B'00000001'
MOVWF TRISB
;ENTRADA, 0 -> SADA).
BANK0
;*************************************ROTINA PRINCIPAL********************************
MAIN
BTFSC BOTAO_0
GOTO BOTAO_LIBERADO
GOTO BOTAO_PRESSIONADO
BOTAO_LIBERADO
BCF LED_1
GOTO MAIN
;APAGA LED_1
;RETORNA AO LOOP PRINCIPAL (MAIN)
BOTAO_PRESSIONADO
BSF LED_1
GOTO MAIN
;ACENDE LED_1
;RETORNA AO LOOP PRINCIPAL (MAIN)
;**************************************FIM DO PROGRAMA********************************
END
;FIM DO PROGRAMA (OBRIGATRIO)
Exerccios Propostos
Utilizando como parmetro o primeiro exemplo, faa as seguintes alteraes:
A) Inverta a lgica do LED, ao pressionar o boto o LED apagar e ao liber-lo o LED acender.
B) Ao apertar o boto faa dois LEDs acenderem.
C) Utilize dois botes e quatro LEDs. Quando um boto for pressionado dois LEDs acesos se apagaro, j o
outro boto ao ser pressionado acender dois LEDs que estavam apagados.
20
INICIO
CONFIGURAES
INICIAIS
1
SIM
BOTO
NO
PRESSIONADO?
APAGA O LED
ACENDE O LED
CONTADOR DE
TEMPO = 0s?
NO
DECREMENTA
CONTADOR DE TEMPO.
SIM
APAGA O LED
21
TEMPO1
TEMPO2
TEMPO3
ENDC
PORTB,0
LED_1
PORTB,1
22
MOVLW B'00000001'
MOVWF TRISB
;CONFIGURA PORTB,0 COMO ENTRADA E DEMAIS PINOS COMO SADA.
BANK0
BOTAO_LIBERADO
BCF LED_1
;APAGA LED_1
GOTO MAIN
;RETORNA AO LOOP PRINCIPAL (MAIN)
BOTAO_PRESSIONADO
BSF LED_1
;ACENDE LED_1
CALL DELAY
;CHAMA ROTINA DE DELAY
BCF LED_1
;DESLIGA LED_1
GOTO MAIN
;RETORNA AO LOOP PRINCIPAL (MAIN)
;*********************************** ROTINA DE DELAY *********************************************
DELAY
;ROTINA DE DELAY
MOVLW .4
MOVWF TEMPO3 ;TEMPORIZA 1s
DL3
MOVLW .250
MOVWF TEMPO2 ;TEMPORIZA 1/4s = 0.25s
DL2
MOVLW .250
MOVWF TEMPO1 ;TEMPORIZA 1ms
DL1
NOP
;GASTA UM CICLO DE MQUINA.
DECFSZ TEMPO1 ;DECREMENTA TEMPO1
GOTO DL1
DECFSZ TEMPO2 ;DECREMENTA TEMPO2
GOTO DL2
DECFSZ TEMPO3 ;DECREMENTA TEMPO3
GOTO DL3
23
;FIM DO PROGRAMA
Exerccios Propostos
Utilizando como parmetro o segundo exemplo, faa as seguintes alteraes:
A) Ao apertar um boto, um LED ficar ligado por 5s e desligado logo em seguida.
B) Ao apertar um boto, ligue o LED_1, aps 2s ligue o LED_2 e os desligue aps 2s.
C) Ao ligar o microcontrolador, o LED_1 deve se manter aceso constantemente, passados 4s o LED_2 dever
piscar 5 vezes com um DELAY de 1s apagado e 3s ligado.
24
INICIO
CONFIGURAES
INICIAIS
GERAR ONDA
QUADRADA COM
FREQUNCIA f.
O Programa
;****************************************************************************************************
;*
PROGRAMA BUZZER
*
;****************************************************************************************************
;********************************* ARQUIVOS DE DEFINIO DO PIC **********************************
#INCLUDE <P16F877A.INC> ;MODELO DO MICROCONTROLADOR UTILIZADO - PIC 16F877A
__CONFIG _CP_OFF & _CPD_OFF & _DEBUG_OFF & _LVP_OFF & _WRT_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;VARIAVEL TEMPO1
25
;PORTA DO BUZZER
BANK1
MOVLW B'00000000'
MOVWF TRISA
;CONFIGURA TODO PORTA COMO SADA.
BANK0
BSF BUZZER
CALL DELAY_MS
BCF BUZZER
CALL DELAY_MS
GOTO MAIN
;**************************************ROTINA DE DELAY********************************
DELAY_MS
;ROTINA DE DELAY
MOVLW .50
;MOVER O NUMERO 50 EM DECIMAL PARA W (VALOR MAXIMO = 256)
MOVWF TEMPO1 ;MOVER O NUMERO 50 PARA TEMPO1
NOP
26
;FIM DO PROGRAMA
Exerccios Propostos
Utilizando como parmetro o terceiro exemplo, faa as seguintes alteraes:
A) Altere as freqncias geradas, deixando o som mais grave.
B) Faa o buzzer soar de maneira que fique bipando com delay de 2s.
C) Insira 3 botes, cada um ao ser pressionado ira gerar uma freqncia diferente. (o som s ser escutado em
quanto o boto estiver pressionado).
27
ESTADO
LIGA
DESLIGA
LIGA
DESLIGA
LIGA
DESLIGA
LIGA
DESLIGA
Fluxograma
INICIO
CONFIGURAES
INICIAIS
LIMPA
REGISTRADOR
STATUS,C
ROTACIONAR O BIT
(3X)
LIMPA LED
(PORTB)
28
__CONFIG _CP_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;**************************DEFINIO DOS BANCOS DE MEMRIA RAM************************
#DEFINE BANK0
#DEFINE BANK1
;***************************************VARIVEIS*************************************
CBLOCK 0X70
;ENDEREO LOCALIZADO NA MAMRIA DE DADOS DO BANK 0. FOI ESCOLHIDO, POIS
;EST LOCALIZAO ACESSADA DE QUALQUER BANCO, FACILITANDO A OPERAO.
TEMPO1
TEMPO2
TEMPO3
ENDC
;*****************************************SADAS**************************************
#DEFINE LED PORTB
;*************************************VETOR DE RESET**********************************
ORG 0X0000
GOTO INICIO
;***********************************INICIO DA INTERRUPO*****************************
ORG 0X0004
RETFIE
;*************************************INICIO DO PROGRAMA******************************
INICIO
CLRF PORTB
;LIMPA PORTB
BANK1
29
;*************************************ROTINA PRINCIPAL********************************
MAIN
BCF STATUS,C
;LIMPA CARRY (REGISTRADOR RELACIONADO AS OPERAES MATEMTICAS)
MOVLW B'00000001'
;MOVER VALOR 1 EM BINRIO PARA W (VALOR MENOS SIGNIFICATIVO)
MOVWF LED
;MOVER VALOR DE W (W=1)PARA LED (PORTB)
CALL DELAY_1S ;CHAMA ROTINA DE DELAY
RLF LED
CALL DELAY_1S
RLF LED
CALL DELAY_1S
RLF LED
CALL DELAY_1S
CLRF LED
GOTO MAIN
;LIMPA LED
;RETORNA PARA MAIN
;**************************************ROTINA DE DELAY********************************
DELAY_1S
;ROTINA DE DELAY
MOVLW .4
MOVWF TEMPO3 ;TEMPORIZA 1s
DL3
MOVLW .250
MOVWF TEMPO2 ;TEMPORIZA 1/4s = 0.25s
DL2
MOVLW .250
MOVWF TEMPO1 ;TEMPORIZA 1ms
DL1
NOP
;GASTA UM CICLO DE MQUINA.
DECFSZ TEMPO1 ;DECREMENTA TEMPO1
GOTO DL1
DECFSZ TEMPO2 ;DECREMENTA TEMPO2
GOTO DL2
30
;**************************************FIM DO PROGRAMA********************************
END
Exerccios Propostos
Utilizando como parmetro o quarto exemplo, faa as seguintes alteraes:
A) Inverta o sentido de rotao do bit para a direita.
B) Ao invs de rotacionar apenas o bit como no exemplo, rotacione o bit, mantendo o anterior ligado.
LED
L0
L1
L2
L3
L0
L1
L2
L3
ESTADO
LIGA
LIGA
LIGA
LIGA
DESLIGA
DESLIGA
DESLIGA
DESLIGA
C) Mantenha a seqncia pedida no item B (iniciar ligada) e insira um boto que ao ser pressionado, ir manter
todos os LEDs ligados por 5s, em seguida a seqncia do item B voltar a rotacionar.
31
32
__CONFIG _CP_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;**************************DEFINIO DOS BANCOS DE MEMRIA RAM*****************
#DEFINE BANK0 BCF STATUS, RP0
#DEFINE BANK1 BSF STATUS, RP0
;***************************************VARIVEIS************************************
CBLOCK 0X70
;ENDEREO LOCALIZADO NA MAMRIA DE DADOS DO BANK 0. FOI ESCOLHIDO, POIS
;EST LOCALIZAO ACESSADA DE QUALQUER BANCO, FACILITANDO A OPERAO.
CONTADOR
FLAGS
FILTRO1
FILTRO2
ENDC
;*****************************************FLAGS***************************************
; DEFINIO DE TODOS OS FLAGS UTILIZADOS PELO SISTEMA.
#DEFINE ST_BT0
#DEFINE ST_BT1
FLAGS,0
FLAGS,1
;STATUS DO BOTO 0
;STATUS DO BOTO 1
;***************************************CONSTANTES************************************
; DEFINIO DE TODAS AS CONSTANTES UTILIZADAS PELO SISTEMA
MIN EQU .0
MAX EQU .15
T_FILTRO EQU .255
;****************************************ENTRADAS*************************************
#DEFINE BOTAO_0 PORTB,0
#DEFINE BOTAO_1 PORTB,1
;*****************************************SADAS**************************************
;NO SER UTILIZADO NESTE PROGRAMA.
33
;***********************************INICIO DA INTERRUPO*****************************
ORG 0X0004
RETFIE
;COLOCA CONTADOR EM W
;MASCARA VALOR DE CONTADOR
;CONSIDERAR SOMENTE AT 15
;SOMA DESLOCAMENTO AO PROGRAM COUTER, GERANDO UMATABELA"CASE"
34
MOVLW
MOVWF
MOVLW
MOVWF
MOVLW
MOVWF
B'00000011'
TRISB
B'00000000'
TRISC
B'00000000'
TRISD
BANK0
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF FLAGS
MOVLW MIN
MOVWF CONTADOR
GOTO ATUALIZA
;LIMPA O PORTB
;LIMPA O PORTC
;LIMPA O PORTD
;LIMPA TODOS OS FLAGS
;INICIA CONTADOR = MIN = 0
;ATUALIZA O DISPLAY INICIALMENTE
;*************************************ROTINA PRINCIPAL********************************
MAIN
BSF
MOVLW
MOVWF
MOVWF
PORTC,3
T_FILTRO
FILTRO1
FILTRO2
CHECA_BT0
BTFSC BOTAO_0
GOTO BT0_LIB
BTFSS ST_BT0
GOTO DEC
GOTO CHECA_BT1
BCF
DECFSZ FILTRO1,F
GOTO CHECA_BT0
BT0_LIB
ST_BT0
CHECA_BT1
BTFSC BOTAO_1
GOTO BT1_LIB
DECFSZ FILTRO2,F
35
BTFSS ST_BT1
GOTO INC
GOTO MAIN
;TERMINOU?
;NO, CONTINUA ESPERANDO
;SIM
;BOTO J ESTAVA PRESSIONADO? (FLAG)
;NO, EXECUTA AO DO BOTO
;SIM, VOLTA AO LOOPING
BCF
ST_BT1
GOTO MAIN
GOTO CHECA_BT1
BT1_LIB
DEC
BSF
ST_BT0
MOVF CONTADOR,W
XORLW MIN
BTFSC STATUS,Z
GOTO MAIN
DECF CONTADOR,F
GOTO ATUALIZA
INC
;AO DE DECREMENTAR
;MARCA BOTO 0 COMO J PRESSIONADO (FLAG)
;COLOCA CONTADOR EM W
;APLICA XOR ENTRE CONTADOR E MIN
;PARA TESTAR IGUALDADE. SE FOREM
;IGUAIS, O RESULTADO SER ZERO
;RESULTOU EM ZERO?
;SIM, RETORNA SEM AFETAR CONT.
;NO
;DECREMENTA O CONTADOR
;ATUALIZA O DISPLAY
INCF CONTADOR,F
GOTO ATUALIZA
;AO DE INCREMENTAR
;MARCA BOTO 1 COMO J PRESSIONADO (FLAG)
;COLOCA CONTADOR EM W
;APLICA XOR ENTRE CONTADOR E MAX
;PARA TESTAR IGUALDADE. SE FOREM
;IGUAIS, O RESULTADO SER ZERO
;RESULTOU EM ZERO?
;SIM, RETORNA SEM AFETAR CONT.
;NO
;INCREMENTA O CONTADOR
;ATUALIZA O DISPLAY
CALL CONVERTE
MOVWF
BSF
ST_BT1
MOVF CONTADOR,W
XORLW
MAX
BTFSC STATUS,Z
GOTO MAIN
ATUALIZA
GOTO MAIN
PORTD
;**************************************FIM DO PROGRAMA********************************
END
36
37
38
Referncias
Datasheet PIC16F877A.
http://www.labtools.com.br/
40