encoder-16f74.asm:
...
; _________
; KONSTANTY
#DEFINE BANK_1 STATUS,RP0 ; PREPINANI BANK0 / BANK1
#DEFINE x_TRIS_ENC_TL TRISB,6
#DEFINE x_TRIS_ENC_R TRISB,5
#DEFINE x_TRIS_ENC_L TRISB,4
#DEFINE k_PORT_ENC PORTB
#DEFINE x_PORT_ENC_TL PORTB,6
#DEFINE x_PORT_ENC_R PORTB,5
#DEFINE x_PORT_ENC_L PORTB,4
MEM_ENCODER UDATA_SHR
r_ENCODER_PRODLEVA RES 1 ; PROTIZAKMITOVA PRODLEVA
;___________
;PODPROGRAMY
CODE_ENCODER CODE
;###################################################################################################
_ENCODER__INIT:
;---------------------------------------------------------------------------------------------------
; --- INICIALIZACE PORTU ---
BSF BANK_1 ; BANKA -> 1
BSF x_TRIS_ENC_TL ; VSTUPNI: ENCODER TLACITKO
BSF x_TRIS_ENC_L ; VSTUPNI: ENCODER VLEVO
BSF x_TRIS_ENC_R ; VSTUPNI: ENCODER PRAVO
BCF OPTION_REG,NOT_RBPU ; AKTIVACE PULL-UP
BCF BANK_1 ; BANKA -> 0
; --- INICIALIZACE PRERUSENI ---
MOVF k_PORT_ENC,w ; SHOZENI POZADAVKU NA PRERUSENI OD PORTU B
BCF INTCON,RBIF
BSF INTCON,RBIE ; POVOLENI PRERUSENI NA PORTU B
RETURN
;###################################################################################################
_ENCODER__UDALOST:
;---------------------------------------------------------------------------------------------------
; * PRIPOJENI ENCODERU NA PORTY RB4 = L, RB5 = R, RB6 = TLACITKO NA PIC16F73,74,76,77
;
; * SEPNUTY KONTAKT JE ZDE BRAN V '0'.
;
; * PRI POVOLENEM PREUSENI INTCON,RBIE SE SEPNUTIM KONTAKTU VYVOLA PRERUSENI OD ZMENY STAVU NA PORTU
; RB4, RB5, RB6, KTERY NAHODI PRIZNAK INTCON,RBIF.
;
; * V PRERUSENI SE TESTUJE PRIZNAK INTCON,RBIF A DALE PORTY RB4, RB5, RB6 PRO SELEKCI KONTAKTU.
;
; * NA KONCI ZPRACOVANI PRERUSENI SE MUSI PRIZNAK INTCON,RBIF RUCNE SHODIT.
;
; * KROK ENCODERU ZACNE POSTUPNYM SEPNUTIM L->R NEBO R->L. ___ ___
; UPROSTRED KRORKU JSOU SEPNUTE OBA KONTAKTY. L: _| _|___ ___|_ |_
; UKONCENI KROKU ZAS POSTUPNE KONTAKTY ROZEPNE. R: ___| |_ _| |___
;
; * SEJMUTI STAVU KONTAKTU MUSI BYT V JEJICH USTALENEM STAVU (NARPIKLAD PRODLEVOU OSETRIT ZAKMITY).
;---------------------------------------------------------------------------------------------------
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
BTFSS x_PORT_ENC_L ; ?? SEPNUT KONTAKT L ??
GOTO _ENCODER__UDALOST_L ; 'ANO'
BTFSS x_PORT_ENC_R ; ?? SEPNUT KONTAKT R ??
GOTO _ENCODER__UDALOST_R ; 'ANO'
BTFSS x_PORT_ENC_TL ; ?? SEPNUTO TLACITKO ??
GOTO _ENCODER__UDALOST_TL ; 'ANO'
MOVF k_PORT_ENC,w
BCF INTCON,RBIF ; SHOZENI POZADAVKU NA PRERUSENI OD PORTU RB
RETURN
;###################################################################################################
_ENCODER__UDALOST_TL:
;---------------------------------------------------------------------------------------------------
BTFSS x_PORT_ENC_TL ; ?? SEPNUTO TLACITKO ??
GOTO _ENCODER__UDALOST_TL ; 'ANO'
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
... OBSLUZNY PROGRAM ...
MOVF k_PORT_ENC,w
BCF INTCON,RBIF ; SHOZENI POZADAVKU NA PRERUSENI OD PORTU RB
RETURN
;###################################################################################################
_ENCODER__UDALOST_L:
;---------------------------------------------------------------------------------------------------
BTFSS x_PORT_ENC_L ; ?? SEPNUT KONTAKT L ??
GOTO _ENCODER__UDALOST_L ; 'ANO'
BTFSS x_PORT_ENC_R ; ?? SEPNUT KONTAKT R ??
GOTO $-1 ; 'ANO'
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
... OBSLUZNY PROGRAM ...
MOVF k_PORT_ENC,w
BCF INTCON,RBIF ; SHOZENI POZADAVKU NA PRERUSENI OD PORTU RB
RETURN
;###################################################################################################
_ENCODER__UDALOST_R:
;---------------------------------------------------------------------------------------------------
BTFSS x_PORT_ENC_R ; ?? SEPNUT KONTAKT R ??
GOTO _ENCODER__UDALOST_R ; 'ANO'
BTFSS x_PORT_ENC_L ; ?? SEPNUT KONTAKT L ??
GOTO $-1 ; 'ANO'
CALL _ENCODER__PRODLEVA ; PROTIZAKMITOVA PRODLEVA
... OBSLUZNY PROGRAM ...
MOVF k_PORT_ENC,w
BCF INTCON,RBIF ; SHOZENI POZADAVKU NA PRERUSENI OD PORTU RB
RETURN
;###################################################################################################
_ENCODER__PRODLEVA:
;---------------------------------------------------------------------------------------------------
; PROTIZAKMITOVA PRODLEVA
CLRF r_ENCODER_PRODLEVA
DECFSZ r_ENCODER_PRODLEVA,f
GOTO $-1
RETURN
;###################################################################################################
END