The code below is for frequency meter 0-50Mhz.
it is posible to import in pbp;
Code:
           processor  16F84a
           include    p16f84a.inc
		  
RAM        equ        h'0C'     
YES        equ        1
NO         equ        0

;PORTA
CONFIGA    equ        B'00010000'

;Port B
CONFIGB    equ        B'00000000'
PULLUP     equ        NO
						    
;OPTION
CONFOPT    equ        B'00100111' 

;INTERRUPTION
CONFINT    equ        B'00000000'

           cblock     RAM
Temp
Temp0
TimeOut
SaveW
Result   : 4      
Count
Char
Thousand : 2     
BCD0
BCD1
BCD2
BCD3
N
           endc


           Reset      START
           IntReq     Intserv

IncPre     macro                      
           bsf        PORTA,3
           bcf        PORTA,3
	endm

Init       macro
           clrf       PORTA
           clrf       PORTB
	Bank1
           Movlf      CONFIGA,TRISA        
           Movlf      CONFIGB,TRISB
           Movlf      CONFOPT,OPTION_REG    
           Movlf      CONFINT,INTCON
	Bank0
           bsf        POWER               
           endm

InitMeasure macro
           Movlf      B'00000011',Thousand  ; Change: Thousand=(999)10
           Movlf      B'11100111',Thousand+1
           clrf       TMR0               
           clrf       Result+1
           clrf       Result
	endm

Ra3_out    macro                        
	Bank1
           bcf        TRISA,3
	Bank0
	endm

Ra3_in     macro                           
	Bank1
           bsf        TRISA,3
	Bank0
	endm

TJZ16      macro      file16,address        
           Test       file16
           JZ         TJZ16_MSB_ZERO
	nop
           nop
           goto       TJZ16_END
TJZ16_MSB_ZERO
           Test       file16 +1
           JZ         address
TJZ16_END
	endm

ClearDisp  macro
           movlw      b'00000001'
           call       SEND_CMD
           call       T1mS      
           endm

DataOk     macro                
           bsf        E
           bcf        E
           endm

DDRam      macro      address
           movlw      0x80 + address
           call       SEND_CMD
           endm

Disp       macro      charvalue
           movlw      charvalue
           call       SEND_CHAR
           endm

RSCmd      macro                
           bcf        RS
           endm

RSChar     macro               
           bsf        RS
           endm

ShiftL     macro                
           movlw      b'00011000'
           call       SEND_CMD
           endm         
           
T975us   
           Movlf      .243 ,Temp0           
Loop975us
	nop
           decfsz     Temp0,f
           goto       Loop975us

	return		
           
;Name    : Readprescal
;Function: Read the prescaler and store the result.
;Input   : tmr0 and prescaler
;Output  : Result +2 (tmr0) and Result +3 (prescaler)
;Call    : None
;Register: Count

Readprescal
           Movlf      255,Count   
           Movff      TMR0,Result+2

INCREMENT   
	IncPre
           incf       Count,f
           CJE        TMR0,Result+2,INCREMENT
           movf       Count,w
           sublw      255
           movwf      Result+3
           return

; Bin To BCD conversion ( 32 bit word -> 8 digits )
; Bin in Result, Result+1, Result+2, Result+3
; BCD in BCD3, BCD2, BCD1, BCD0
Bin2BCD
           clrc
           Movlf      .32,N                 
           clrf       BCD3               
           clrf       BCD2
           clrf       BCD1
           clrf       BCD0
LoopBB                                   
           rlf        Result+3,f         
           rlf        Result+2,f            
           rlf        Result+1,f
           rlf        Result,f
           rlf        BCD3,f               
           rlf        BCD2,f
           rlf        BCD1,f
           rlf        BCD0,f
           decfsz     N,f
           goto       DecAdj             
           return

DecAdj
           Movlf      BCD3,FSR           
           call       BCDAdj             
           Movlf      BCD2,FSR           
           call       BCDAdj               
           Movlf      BCD1,FSR            
           call       BCDAdj               
           Movlf      BCD0,FSR           
           call       BCDAdj               
           goto       LoopBB
BCDAdj
           movlw      3
           addwf      INDF,w
           movwf      Temp
           btfsc      Temp,3               
           movwf      INDF
           movlw      30H
           addwf      INDF,w
           movwf      Temp
           btfsc      Temp,7             
           movwf      INDF               
           return

; Display Frequency stored in BCD3, BCD2, BCD1 and BCD0 (LSD)

DispFreq
           DDRam      3
           swapf      BCD0,W
           andlw      0FH
           call       DispHex
           movf       BCD0,W
           andlw      0FH
           call       DispHex
           Disp       '.'

           swapf      BCD1,W
           andlw      0FH
           call       DispHex
           movf       BCD1,W
           andlw      0FH
           call       DispHex
           swapf      BCD2,W
           andlw      0FH
           call       DispHex
           Disp       '.'

           movf       BCD2,W
           andlw      0FH
           call       DispHex
           swapf      BCD3,W
           andlw      0FH
           call       DispHex
           movf       BCD3,W
           andlw      0FH
           call       DispHex
                 
           return

; Display hex digit
; input : w = hex

DispHex
           addlw      -0AH
           SkipNC
           addlw      7
           addlw      3AH
           call       SEND_CHAR

           return

Intserv
           retfie
;____________________________________main_______________________

START      Init

           call       INIT_LCD
           
           movlw      b'00001100'          
           call       SEND_CMD           
           
           movlw      b'00101000'         
           call       SEND_CMD

           Movlf      226,TimeOut

           ClearDisp

           Disp       'F'
           Disp       'R'
           Disp       'E'
           Disp       'Q'
           Disp       'U'
           Disp       'E'
           Disp       'N'
           Disp       'C'
           Disp       'Y
           Disp       'M'
           Disp       'E'
           Disp       'T'
           Disp       'E'
           Disp       'R'
           Disp       ' '

           call       T1S
           call       T1S

           ClearDisp

           call       T100mS

           Disp       ' '
           Disp       ' '
           Disp       '5'
           Disp       '0'
           Disp       ' '
           Disp       'M'
           Disp       'H'
           Disp       'z'
           Disp       ' '
           Disp       ' '

           call       T1S
           call       T1S

           ClearDisp

           call       T100mS
           
           Disp       'F'                   
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       ' '
           Disp       'H'
           Disp       'z'           

MEASURE    InitMeasure

           Ra3_in                       
           call       T975us
           nop                             
           nop
           nop
           nop
           nop
           nop
           nop
           nop
           nop
           nop
           nop
           nop

GATE       TJZ16      Thousand,STOP        

WAIT       call       T975us                 
           Dec16      Thousand             
	
           btfss      INTCON,T0IF        
           goto       NO_OVERFLOW_TMR0

OVERFLOW_TMR0                         
           bcf        INTCON,T0IF          
           incf       Result+1,f
           JZ         INC_RESULT         
           nop
           nop
           goto       GATE

INC_RESULT                                  
           incf       Result,f             
           goto       GATE

NO_OVERFLOW_TMR0
           nop                             
           nop                           
           nop
           nop
           nop
           goto       GATE

STOP       Ra3_out                          
		
READ       call       Readprescal
           call       Bin2BCD               
           call       DispFreq             

TEST       Test       BCD0
           SkipNZ
           Test       BCD1
           SkipNZ
           Test       BCD2
           SkipNZ
           Test       BCD3
           SkipNZ
           goto       TIME_CONTROL
           clrf       TimeOut
           goto       MEASURE             

TIME_CONTROL
           incf       TimeOut,F
           JZ         MESS_TIME_OUT
           goto       MEASURE

MESS_TIME_OUT
           ClearDisp

           Disp       ' '
           Disp       'A'
           Disp       'R'
           Disp       'R'
           Disp       'E'
           Disp       'T'
           Disp       ' '
           Disp       'A'
           Disp       'U'
           Disp       'T'
           Disp       'O'

           call       T1S
           call       T1S

           bcf        POWER               
LOOP_STOP
           goto       LOOP_STOP
           end