Jag har testat med att sätta in NOP enligt förslag. Ingen skillnad.
Jag snickrade ihop ett program som är något mindre tillkrånglat och ger samma resultat som det som inte funkar. Det använder också en COUNT som räknar ner till noll innan led tänds. Enda skillnaden är att jag togglar utporten i stället för att använda en separat räknare för tänd resp släck led. Det fungerar felfritt.
Men som jag skrev i ett tidigare inlägg, så är inte sättet programmet är skrivet på det viktiga, utan orsaken till varför det funkar i sim men inte skarpt.
Misstanken var problemet ligger hos det program som inte funkar är att det troligen har något att göra med den låga cycel-hastigheten i sim jämfört med skarpt läge.

Jag tror jag släpper detta problem tillsvidare och fortsätter frammåt. Tids nog stöter man väl på samma problem igen men då kanske man har mer "choklad på skjortan" som någon myntade tidigare i forumet.

Nedanstående funkar och ger samma utput som det andra var tänkt att ge.
Kod: Markera allt
processor 16F84A
include p16F84A.inc
__config _HS_OSC & _WDT_OFF & _PWRTE_ON
;********* konstanter********
COUNT equ 08h
OLDINP equ 09h
#define LED_1 PORTA,1
#define LED_2 PORTA,2
;******** set port A1 till input resten till out******
banksel TRISA ;Gå till den bank där TRISA finns.
movlw 01h ;flytta in till arbesregistret
movwf TRISA ;set portpinnarnas riktning (in/ut läge)
banksel PORTA ;Gå tillbaka till banken med PORTA
;**********här börjar programmet *****************
bsf LED_2 ;Tänd kontroll-led A2, låt stå
start
btfss PORTA,0 ;kolla input från resolvern
goto resolver0 ;resolvern gick till 0
;**********här körs slinga för resolver=1*****************
btfsc OLDINP,0 ;kolla om OLDINP=1 (väntar på en resolvernolla)
goto start ;om OLDINP=1, börja om från start
bsf OLDINP,0 ;stoppa nedräkning av COUNT och invänta ny nolla
decfsz COUNT,1 ;minska COUNT med 1
goto start ;om COUNT är större än 0, börja om från början
call toggleled ;om COUNT är 0 hoppa till toggleled
;********** här är slingan för resolver=0**************
resolver0
bcf OLDINP,0 ;öppna slinga för resolver=1, vänta på ny etta
;********** Nästa varv ********************
goto start ;börja om
;*************** subrutiner *******************
toggleled
movlw 02h
xorwf LED_1 ;Toggle led
return
end