Beste COers,

Ik ben bezig om een rotary encodee uit te lezen,
en vervolgens het aantal stappen (tov beginstand) op een LCD te plaatsen.
Hierover zijn al een aantal topics geopend, en er is zelfs een How-to op GoT.
Maar ik kom er maar niet uit !
Onderstaand mijn code, ik programeer dus in Proton Basic,
de rotary zit aan PORTB.0 en PORTB.1.


DEVICE 16F628A                
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL    = TRUE
PORTB_PULLUPS  = TRUE
LCD_DTPIN      = PORTa.0      ;LCD data aan a0 tm a3
LCD_RSpin      = PORTa.6      ;RS = pin 4 LCD
lcd_enpin      = PORTa.7      ;EN = pin 6 LCD
;        76543210           
PORTA = %00000000             ;1 = 5V    0 = 0V
PORTB = %00000000             ;1 = 5V    0 = 0V
TRISA = %00110000             ;1 = input 0 = output
TRISB = %11111111             ;1 = input 0 = output
INTCON= %10001000
symbol ENC_A      = portb.0
symbol ENC_B      = portb.1
symbol GIE        = INTCON.7
DIM    TEMP       as byte
;================================================================
clear
DELAYMS 500 
cls                   
print "       Rotary"        
;================================================================
on interrupt goto Interr 

Interr:
if enc_a = 1 then
  if enc_b = 1 then
    temp = temp + 1
  else 
    temp = temp - 1
  endif
else
  if enc_b = 1 then
    temp = temp - 1
  else
    temp = temp + 1
  endif
  delayms 5
  gie = 0
endif

INTCON= %10001000

while 1 = 1
  delayms 100    
  PRINT AT 2, 1, temp
wend
end 

Ik heb de code die in het topic op got staat te getracht vertalen.
Helaas zit in de PIC die ik gebruik, de 16f628, zit geen "string" functie.
Verder heb ik ook bepaalde "interrupt" dingen niet kunnen plaatsen,
zelfs niet met de handleiding !
Met de code van avrfreaks kom ik helaas ook niet ver.
Hier onder de links die ik gebruikt heb, hopelijk kan iemand mij verder helpen.

http://gathering.tweakers.net/forum/list_messages/1167996/last
http://www.circuitsonline.net/forum/view/40455/1/
http://www.circuitsonline.net/forum/view/47208/1/
http://www.circuitsonline.net/forum/view/36659/1/
http://www.circuitsonline.net/forum/view/52970/1/

Het eerste wat ik al zie is dat je prog meteen de ISR induikt, omdat je na je on_interrupt niet naar je main loop springt.

Ten tweede dien je een ISR af te sluiten met CONTEXT RESTORE.