Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
LIST P=16F877A
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _LVP_OFF & _CPD_OFF & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC
#INCLUDE <P16F877A.INC>
CBLOCK 0x20
COUNT, PCOUNT
ENDC
ORG 0x00
GOTO MAIN
ORG 0x04 ;INTERRUPT VECTOR
GOTO ISR ;INTERRUPT SERVICE ROUTINE
;================================================
ISR
INCF COUNT ;INCREMENT CONTENTS OF COUNT
MOVF COUNT, W ;MOVE COUNT TO W
BTFSC STATUS, Z ;CHECK IF COUNT = 0
;COUNT = 0, WHEN COUNT INCREMENTS AND OVERFLOWS AT ROLLOVER
; FROM 255 TO 0
INCF PCOUNT ;EVERY OVERFLOW OF COUNT, INCREMENT CONTENTS
;OF PCOUNT
MOVF PCOUNT, W ;MOVE CONTENTS OF PCOUNT TO W
MOVWF PORTB ;MOVE CONTENTS OF W TO PORTB
BANKSEL INTCON ;BANK0
BCF INTCON, TMR0IF ;CLEAR INTERRUPT FLAG
RETFIE
;================================================
MAIN
BSF COUNT, 1 ;COUNT = 1
CLRF CCP1CON ;CCP OFF
BANKSEL TRISB ;BANK1
CLRF TRISB ;ALL OUTPUT
MOVLW .7
MOVWF CMCON ;COMPARATOR OFF
MOVWF ADCON1 ;ADC OFF
MOVLW 0x82
MOVWF OPTION_REG ;PORTB PULL-UP OFF, PRESCALER- 1:8
BANKSEL INTCON ;BANK2
MOVLW 0xA0
MOVWF INTCON ;Global interrupt and TMR0 interrupt enabled
CLRF PORTB ;CLEAR PORTB
BANKSEL TMR0 ;BANK0
CLRF TMR0 ;RESTART TMR0
GOTO $ ;WAIT FOR INTERRUPT
END
;==================================================
program TMR0INTEDA
dim COUNT as byte
dim PCOUNT as byte
sub procedure interrupt
inc(COUNT)
if (COUNT = 0) then
inc(PCOUNT)
end if
PORTB = PCOUNT
INTCON.TMR0IF = 0
end sub
main:
COUNT = 1
CCP1CON = 0
TRISB = 0
CMCON = 7
ADCON1 = 7
OPTION_REG = 0x82
INTCON = 0xA0
PORTB = 0
TMR0 = 0
while true
wend
end.