You are on page 1of 2

LIST P=PIC16F877A #INCLUDE <P16F877A.

INC> __CONFIG _HS_OSC & _BOREN_ON & _CP_OFF & _CPD_OFF & _PWRTE_ON & _WDT_OFF & _LVP_ OFF #DEFINE BANK0 BCF STATUS,RP0 #DEFINE BANK1 BSF STATUS,RP0 ;*VARIAVEIS* CBLOCK 0X20 rp tmp tmp1 rpmlo ENDC ;*ENTRADAS* #DEFINE pulso PORTB,0 ;*SAIDAS* #DEFINE LED PORTB,1 ;*VETOR DE RESET* ORG 0X0000 GOTO inicio ;*INT* ORG 0X0004 RETFIE ;*INICIO DO PROG* inicio CLRF PORTB BANK1 MOVLW B'00000001' MOVWF TRISB movlw b'10000000' MOVWF OPTION_REG CLRF INTCON MOVLW B'00000111' MOVWF ADCON1 MOVLW B'00000111' MOVWF CMCON clrf rp BANK0 ;*ROTINA PRINCIPAL* btn btfss pulso ; testa o botao goto test ; caso 0 clrf rp ; reseta a flag ou seja, botao despressionado goto btn ; loop test ; testa a flag movf rp,W btfss STATUS,Z goto btn ; caso o status,z = 0 incre ; rotina para incrementa r a var movlw 0xFF ; flag para evitar repet iao movwf rp ; var da flag incf rpmlo,f ; incrementa var movlw 0x0A ; testa se ja deu 10 subwf rpmlo,w ; btfss STATUS,Z ; caso o status,z de 0, entao <> de 0 se 1 entao =0 goto btn

led1 clrf rpmlo bsf LED call delay bcf LED goto btn delay movlw .250 movwf tmp movlw .250 movwf tmp1 delay_1 nop nop nop nop nop decfsz tmp goto delay_2 return delay_2 nop nop nop nop nop decfsz tmp1 goto delay_2 goto delay_1 end

; rotina do led ; limpa contador

; rotina de delay

; fim

You might also like