TAK JSEM UDĚLAL JEN TESTOVACÍ KOSTRU A TU NAHRÁL DO PROCESORU TAM PO AKTIVACI PŘERUŠENÍ OD TMR2 PŘESTANE JET PŘERUŠENÍ OD TMR2 ? PODOTÝKÁM V MPLABU TO JEDE NORMÁLNĚ
TADY JE KOD
errorlevel -302
;**********************************************************************
LIST p=16F886 ; list directive to define processor
#INCLUDE <p16F886.inc> ; processor specific variable definitions
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_ON & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V
BITY EQU 20H ;POMOCNÉ BITY CHODU REGULÁTORU
POMOC1 EQU 21H ;TESTOVACÍ POMOCNÁ
CASOVV EQU 22H
TEMP_W EQU 2BH
TEMP_ST EQU 2CH
;**********************************************************
;start se zpožděním pwrt=1
RESET org 00h
GOTO START
ORG 04H ;PŘERUŠENÍ NUTNO IDENTIFIKOVAT JAKÉ !
PUSH MOVWF TEMP_W
SWAPF STATUS,W
MOVWF TEMP_ST
;program přerušení
BANKSEL PIR1
;*****************************************
BSF BITY,2
BTFSS INTCON,RBIF
GOTO PRER1
BTFSS PORTB,3
NOP
BCF INTCON,RBIF
BSF BITY,1
GOTO POP
PRER1 BTFSS PIR1,TMR2IF
GOTO START
BCF PIR1,TMR2IF
BSF BITY,0
;PROGRAM PŘERUŠENÍ KONEC
POP SWAPF TEMP_ST,W
MOVWF STATUS
SWAPF TEMP_W,F
SWAPF TEMP_W,W
RETFIE
;VÝMAZ BANK MIMO SPODNÍCH 5 SLOV
START CLRF TMR0 ;VÝMAZ ČASOVAČE0
CLRF PORTA
CLRF PORTB ;VÝMAZ PORTU B
CLRF CCP1CON
CLRF CCP2CON
CLRF PORTC
BANKSEL OSCCON
;BSF STATUS,RP0 ;BANKA1
MOVLW 0X74 ; 8MHz hfintosc stable
MOVWF OSCCON
CLRWDT
MOVLW 0x17 ; nastaven před dělič 65536 pro WDT + aktivace wdt
MOVWF WDTCON
MOVLW 0X0F ;128 před dělič pro wdt
MOVWF OPTION_REG
MOVLW 0X7C ;KONSTANTA 125 PRO TMR2
MOVWF PR2
MOVLW 0XFF
MOVWF TRISA
MOVLW 0X0F
MOVWF TRISB ;PORTB HORNÍ VÝSTUP SPODNÍ VSTUP
MOVLW 0X08
MOVWF IOCB ;ZAPIS POVOLENÍ PŘERUŠENÍ OD PORTU B PRO DEDEKCI ENKODERU
CLRF TRISC
BSF TRISC,0
BANKSEL ANSEL
CLRF ANSEL
CLRF ANSELH
;BCF STATUS,RP0 ;BANKA0
BANKSEL PORTC
MOVLW 0XFF
MOVWF PORTC
CLRF BITY
MOVLW 0X20
MOVWF FSR
NEXT CLRF INDF
INCF FSR,1
MOVF FSR,0
SUBLW 0X6F
SKPZ
GOTO NEXT
GOTO START1
;****************************
START1 NOP
MOVLW B'01001110' ;TMR2 PŘED DĚLIČ 4 PODĚLIČ 1
BANKSEL T2CON
MOVWF T2CON
BANKSEL PIE1
BSF PIE1,TMR2IE
;POVOLIT PŘERUŠENÍ
;POVOLIT GENERÁLNÍ PŘERUŠENÍ
MOVLW B'11001000'
MOVWF INTCON
MOVLW 0X7C
MOVWF PR2
START2 NOP
CLRWDT
NOP
BTFSS BITY,0
GOTO S2
BCF PORTC,6
BCF BITY,0
NOP
NOP
NOP
BSF PORTC,6
S2 BTFSS BITY,1
GOTO S3
BCF BITY,1
BCF PORTC,5
NOP
NOP
NOP
BSF PORTC,5
S3 BTFSS BITY,2
GOTO START2
BCF BITY,2
BTFSS BITY,3
GOTO S4
BCF PORTC,7
BCF BITY,3
GOTO START2
S4 BSF PORTC,7
BSF BITY,3
goto START2
end