Device 16F84A ' Define what device your using
XTAL = 16 ' Set the Osc speed
Symbol GIE = INTCON.7
Symbol TMR = INTCON.5
Symbol TMR_0 = INTCON.2
Dim uS as Word
Dim mS as Word
Dim S as Word
Dim X as Byte
Dim Count1 as Word
Dim Average as DWord
Dim Temp_DW as DWord
LCD_DTPIN = PORTB.4
LCD_RSPIN = PORTB.2
LCD_ENPIN = PORTB.3
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0
ON_INTERRUPT Interrupt_Sub
INTCON = %00100000
Option_Reg = %00000000
Delayms 150
Cls
Count1 = 0
Main:
S = 0
mS = 0
uS = 0
TMR0 = 0
GIE = 1
For X = 0 To 63
EWrite X, [X]
Next
GIE = 0
Average = uS
Temp_DW = mS
Temp_DW = Temp_DW * 1000
Average = Average + Temp_DW
Temp_DW = S * 1000000
Average = Average + Temp_DW
Average = Average / 63
Print at 1,1, "Write: ", DEC5 Average, " uS"
S = 0
mS = 0
uS = 0
TMR0 = 0
GIE = 1
Repeat
SEROUT PORTA.0 , 84 , [X]
Count1 = Count1 + 1
Until S = 3
Average = Count1
Average = 3000000 / Average
Print At 2,1, "Serial: ", Dec5 Average, " uS"
Count1 = 0
Goto Main
Interrupt_Sub:
Context Save
If TMR_0 = 1 Then
TMR_0 = 0
uS = uS + 128
If uS >= 1000 Then
uS = uS - 1000
mS = mS + 1
If mS >= 1000 Then
mS = mS - 1000
S = S + 1
EndIf
EndIf
EndIf
GIE = 1
CONTEXT RESTORE