Thanks...
Compiled and worked (not I was expected), but thereīs my fault.
Before interrupts, with a 25Hz signal Iīve read a 1500 rpm.
Now, with led blinking, Iīve read is 120~180.
The code
Code:
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : Mauro Perides *
'* Notice : Copyright (c) 2008 Mauro Perides *
'* : All Rights Reserved *
'* Date : 25/11/2008 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
'@ device pic16F887, HS_OSC, WDT_OFF, LVP_OFF
INCLUDE "DT_INTS-14.bas" ' Base Interrupt System
INCLUDE "ReEnterPBP.bas" ' Include if using PBP interrupts
'Define MHZ Crystal
DEFINE OSC 20
' Set LCD
DEFINE LCD_DREG PORTB
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 0
' Set LCD Register Select port
DEFINE LCD_RSREG PORTB
' Set LCD Register Select bit
DEFINE LCD_RSBIT 4
' Set LCD Enable port
DEFINE LCD_EREG PORTB
' Set LCD Enable bit
DEFINE LCD_EBIT 5
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
' Set command delay time in us
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
'DEFINE LCD_DATAUS 50
SYMBOL LED1 = portd.1
symbol rpmIn = portd.0
rpm VAR word
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _ToggleLED1, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
T1CON = $31 ; Prescaler = 8, TMR1ON
@ INT_ENABLE TMR1_INT ; enable Timer 1 interrupts
:main
CM1CON0 = 0 ' Comparators off (Do I need these?)
CM2CON0 = 0 ' Comparators off
'ANSEL = 0
ANSELH = 0 ' Configure other AN pins as digital I/O
output PORTB
INPUT PORTD.0
PORTC = 0
TRISC = 0
LCDOUT $FE, 1, " prdTURBO "
LCDOUT $FE, $C0, " FUEL COMPUTER "
pause 2000
LCDOUT $FE, 1
while 1=1
COUNT rpmIn, 100, rpm
LCDOUT $FE,1, "PULS/S ", DEC(RPM)
LCDOUT $FE, $C0, "RPM ", DEC(rpm)*60
wend
'---[TMR1 - interrupt handler]--------------------------------------------------
ToggleLED1:
TOGGLE LED1
@ INT_RETURN
Bookmarks