; Source created with Parsic Version 4.0.14.2

; at              : 2014.12.27. 19:22:21


; Project File    : C:\Program Files\Parsic 4\Munka\HLX\1W_SPI_kaz_4.0\4550_AN_X.pic

; Project Version : 1.0.155

; Created         : 2013.11.17. 9:52:36

; Last change     : 2014.12.27. 19:22:20

	PROCESSOR 18F4550
	INCLUDE P18F4550.INC
	RADIX DEC
	__IDLOCS _IDLOC0,H'01'
	__IDLOCS _IDLOC1,H'00'
	__IDLOCS _IDLOC2,H'9B'
	ERRORLEVEL -230
	__CONFIG _CONFIG1L,H'C0';192
	__CONFIG _CONFIG1H,H'30';48
	__CONFIG _CONFIG2L,H'DE';222
	__CONFIG _CONFIG2H,H'E6';230
	__CONFIG _CONFIG3H,H'79';121
	__CONFIG _CONFIG4L,H'9B';155
	__CONFIG _CONFIG5L,H'FF';255
	__CONFIG _CONFIG5H,H'FF';255
	__CONFIG _CONFIG6L,H'FF';255
	__CONFIG _CONFIG6H,H'FF';255
	__CONFIG _CONFIG7L,H'FF';255
	__CONFIG _CONFIG7H,H'FF';255
	ERRORLEVEL +230
; missing constants

ZERO	EQU Z	; ZERO-Flag
CARRY	EQU C	; CARRY-Flag
SYS_TICKS	EQU	1000

; variable

SYS_FSAV	EQU 0	; located in Bank ACCESS BANK
SYS_FSAV_1	EQU 1	; located in Bank ACCESS BANK
_FD1	EQU 2	; located in Bank ACCESS BANK
ADC0	EQU 3	; located in Bank ACCESS BANK
ADC0_1	EQU 4	; located in Bank ACCESS BANK
ADC1	EQU 5	; located in Bank ACCESS BANK
ADC1_1	EQU 6	; located in Bank ACCESS BANK
ADC2	EQU 7	; located in Bank ACCESS BANK
ADC2_1	EQU 8	; located in Bank ACCESS BANK
SYS_TMP0	EQU 9	; located in Bank ACCESS BANK
SYS_TMP1	EQU 10	; located in Bank ACCESS BANK
SYS_TMP2	EQU 11	; located in Bank ACCESS BANK
SYS_TMP3	EQU 12	; located in Bank ACCESS BANK
SYS_TMP4	EQU 13	; located in Bank ACCESS BANK
SYS_TMP5	EQU 14	; located in Bank ACCESS BANK
SYS_TMP6	EQU 15	; located in Bank ACCESS BANK
SYS_TMP7	EQU 16	; located in Bank ACCESS BANK
SYS_TMP8	EQU 17	; located in Bank ACCESS BANK
SYS_TMP9	EQU 18	; located in Bank ACCESS BANK
SYS_TMP10	EQU 19	; located in Bank ACCESS BANK
SYS_TMP11	EQU 20	; located in Bank ACCESS BANK
S0	EQU 21	; located in Bank ACCESS BANK
TR1	EQU 22	; located in Bank ACCESS BANK
TR1_1	EQU 23	; located in Bank ACCESS BANK

; disable warning (Bankswitching)
	ERRORLEVEL -302
; disable warning (Pageswitching)
	ERRORLEVEL -306

;-------------------------------------------------------
; Program start
;-------------------------------------------------------
	ORG 0
	NOP
	BRA SYS_INIT
	NOP
	NOP

;-------------------------------------------------------
; Interrupt-address
;-------------------------------------------------------

	BTFSS INTCON,T0IF,A
	BRA NOTIMERINTERRUPT

	BCF INTCON,T0IF,A
; add 9 to timer0, so the interrupt occures after 250 ticks, instead 256
	MOVLW 9
	ADDWF TMR0,F,A	; W + f -> f

	INCFSZ TR1,F,A	; f + 1 -> f
	BRA TR1_NEXT

	INCF TR1_1,F,A	; f + 1 -> f

TR1_NEXT



NOTIMERINTERRUPT


EXITINT

	RETFIE FAST	; FAST = restore STATUS,BSR,W-register, enable GIE/GIEH, PEIE/GIEL

;-------------------------------------------------------
; Subroutines
;-------------------------------------------------------

;-------------------------------------------------------
; Read  -> AN0
;-------------------------------------------------------

READ_AN0

	MOVLW B'1110'
	MOVWF ADCON1,A
	MOVLW B'00000011'
	MOVWF ADCON2,A

	MOVLW B'000001'
	MOVWF ADCON0,A

; Right Justified
	BSF ADCON2,ADFM,A


	MOVLW 7
	MOVWF SYS_TMP1,A

SYS_ADC0_0

	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA SYS_ADC0_0

; start convert
	BSF ADCON0,GO,A

SYS_ADC1_0

	BTFSC ADCON0,GO,A
	BRA SYS_ADC1_0

	MOVF ADRESL,W,A
	MOVWF ADC0,A
	MOVF ADRESH,W,A
	MOVWF ADC0_1,A

; Shut-off
	CLRF ADCON0,A	; 0 -> f
	MOVLW 15
	MOVWF ADCON1,A

	RETURN

;-------------------------------------------------------
; Read  -> AN1
;-------------------------------------------------------

READ_AN1

	MOVLW B'1101'
	MOVWF ADCON1,A
	MOVLW B'00000011'
	MOVWF ADCON2,A

	MOVLW B'000101'
	MOVWF ADCON0,A

; Right Justified
	BSF ADCON2,ADFM,A


	MOVLW 7
	MOVWF SYS_TMP1,A

SYS_ADC0_1

	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA SYS_ADC0_1

; start convert
	BSF ADCON0,GO,A

SYS_ADC1_1

	BTFSC ADCON0,GO,A
	BRA SYS_ADC1_1

	MOVF ADRESL,W,A
	MOVWF ADC1,A
	MOVF ADRESH,W,A
	MOVWF ADC1_1,A

; Shut-off
	CLRF ADCON0,A	; 0 -> f
	MOVLW 15
	MOVWF ADCON1,A

	RETURN

;-------------------------------------------------------
; Read  -> AN2
;-------------------------------------------------------

READ_AN2

	MOVLW B'1100'
	MOVWF ADCON1,A
	MOVLW B'00000011'
	MOVWF ADCON2,A

	MOVLW B'001001'
	MOVWF ADCON0,A

; Right Justified
	BSF ADCON2,ADFM,A


	MOVLW 7
	MOVWF SYS_TMP1,A

SYS_ADC0_2

	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA SYS_ADC0_2

; start convert
	BSF ADCON0,GO,A

SYS_ADC1_2

	BTFSC ADCON0,GO,A
	BRA SYS_ADC1_2

	MOVF ADRESL,W,A
	MOVWF ADC2,A
	MOVF ADRESH,W,A
	MOVWF ADC2_1,A

; Shut-off
	CLRF ADCON0,A	; 0 -> f
	MOVLW 15
	MOVWF ADCON1,A

	RETURN

;-------------------------------------------------------
; System Delay
;-------------------------------------------------------

SYS_DELAY

	MOVWF SYS_TMP0,A

SYS_DELAY_1

	DECFSZ SYS_TMP0,F,A	; f - 1 -> f
	BRA SYS_DELAY_1

SYS_DELAY_4

	RETURN

;-------------------------------------------------------
; Subroutines for LCD1
;-------------------------------------------------------


LCD1_INIT

; wait long
	CLRF SYS_TMP1,A	; 0 -> f

LCD1_INIT1

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT1

; Maybe the worst case. The display is already in 4-Bit mode and waits for the second nibble !!
; So we have to reset it back to the 8-Bit mode - three times

; IR-Register
	BCF PORTD,4,A
	NOP
	MOVF PORTD,W,A
	ANDLW 240
	IORLW 3
	MOVWF PORTD,A
	NOP

; 1st
	BSF PORTD,5,A
	NOP
	BCF PORTD,5,A

; wait long

LCD1_INIT2

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT2

; 2nd
	BSF PORTD,5,A
	NOP
	BCF PORTD,5,A

; wait long

LCD1_INIT3

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT3

; 3rd
	BSF PORTD,5,A
	NOP
	BCF PORTD,5,A

; wait long

LCD1_INIT4

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT4

; function set 4-bit, this is the last 8-Bit command
	BCF PORTD,0,A
	NOP
	BSF PORTD,5,A
	NOP
	BCF PORTD,5,A

; wait long

LCD1_INIT5

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT5

; function set 4-bit,2-lines = 00101000
	MOVLW 40
	RCALL LCD1_OUT
; display on, cursor off, blink off = 00001100
	MOVLW 12
	RCALL LCD1_OUT
; entrymode set = 00000110"
	MOVLW 6
	RCALL LCD1_OUT
; entrypoint display clear = 00000001

LCD1_CLR

	MOVLW 1
	RCALL LCD1_WRITE_IR
; wait long
	CLRF SYS_TMP1,A	; 0 -> f

LCD1_INIT6

	RCALL LCD1_OUT4
	DECFSZ SYS_TMP1,F,A	; f - 1 -> f
	BRA LCD1_INIT6

	BRA LCD1_OUT4

;-------------------------------------------------------
; LCD Write DDRAM or CGRAM
;-------------------------------------------------------

LCD1_WRITE_DDRAM

; DDRAM or CGRAM
	BSF PORTD,4,A
	BRA LCD1_OUT


;-------------------------------------------------------
; LCD Set CGRAM
;-------------------------------------------------------

LCD1_SET_CGRAM

	IORLW 64
	BRA LCD1_WRITE_IR

;-------------------------------------------------------
; LCD Set DDRAM
;-------------------------------------------------------

LCD1_SET_DDRAM

	IORLW 128
;-------------------------------------------------------
; LCD Write IR
;-------------------------------------------------------

LCD1_WRITE_IR

; IR-Register
	BCF PORTD,4,A
;-------------------------------------------------------
; LCD Out Bit-7...4 first
; W-Register contains the byte to be written
;-------------------------------------------------------


LCD1_OUT

	MOVWF SYS_TMP1,A

LCD1_OUT1

	CLRF SYS_TMP3,A	; 0 -> f

LCD1_OUT2

	SWAPF SYS_TMP1,W,A

LCD1_OUT3

	ANDLW 15
	MOVWF SYS_TMP2,A
	MOVF PORTD,W,A
	ANDLW 240
	IORWF SYS_TMP2,W,A
	MOVWF PORTD,A
	NOP

	BSF PORTD,5,A
	NOP
	BCF PORTD,5,A

	BTFSC SYS_TMP3,0,A
	BRA LCD1_OUT4

	BSF SYS_TMP3,0,A
	MOVF SYS_TMP1,W,A
	BRA LCD1_OUT3



LCD1_OUT4

	MOVLW 17
	MOVWF SYS_TMP3,A

LCD1_OUT5

	DECFSZ SYS_TMP3,F,A	; f - 1 -> f
	BRA LCD1_OUT5

	RETURN

;-------------------------------------------------------
; GOTOXY - Set Cursor Position
; SYS_TMP1  = X
; SYS_TMP2  = Y
; SYS_TMP12 = copy of X (only if a 1 Line-Display is used)
;-------------------------------------------------------

LCD1_GOTOXY

; Ypos bit-0
	MOVLW 64
	BTFSC SYS_TMP2,0,A
	ADDWF SYS_TMP1,F,A	; W + f -> f
	MOVLW 20
; Ypos bit-1
	BTFSC SYS_TMP2,1,A
	ADDWF SYS_TMP1,F,A	; W + f -> f
	MOVF SYS_TMP1,W,A
	BRA LCD1_SET_DDRAM


;-------------------------------------------------------


LCD1_CONVERTHEX

; only lower nibble
	ANDLW 15
	MOVWF SYS_TMP1,A
; add asc'0', if greater or equal 10 add asc'7'
	MOVLW 10
	SUBWF SYS_TMP1,W,A	; f - W -> W
	MOVLW 55
	BTFSS STATUS,CARRY,A
	MOVLW 48
	ADDWF SYS_TMP1,F,A	; W + f -> f
	MOVF SYS_TMP1,W,A
	BRA LCD1_WRITE_DDRAM

;-------------------------------------------------------
; Write String
;-------------------------------------------------------


LCD1_WRITESTR

	RCALL LCD1_GETROMCHAR
; last is zero
	ANDLW 255
	BTFSC STATUS,ZERO,A
	RETURN

	RCALL LCD1_WRITE_DDRAM
; next char
	INCF SYS_TMP5,F,A	; f + 1 -> f
	INCFSZ SYS_TMP5,F,A	; f + 1 -> f
	BRA LCD1_WRITESTR

; next page
	INCF SYS_TMP6,F,A	; f + 1 -> f
	BRA LCD1_WRITESTR

; direct jump into the table

LCD1_GETROMCHAR

	MOVF SYS_TMP6,W,A
	MOVWF PCLATH,A
	MOVF SYS_TMP5,W,A
	MOVWF PCL,A

;-------------------------------------------------------


LCD1_WRITE_DEZ

; test zero
	ANDLW 255
	BTFSS STATUS,ZERO,A
	BCF SYS_TMP9,0,A
	BTFSS SYS_TMP9,0,A
	ADDLW 48	; k + W -> W
	BTFSC SYS_TMP9,0,A
	ADDLW 32	; k + W -> W
	BRA LCD1_WRITE_DDRAM

;-------------------------------------------------------


LCD1_CONVERTDEZ

	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	DECF SYS_TMP10,F	; f - 1 -> f
	CLRF SYS_TMP11,A	; 0 -> f

LCD1_CONVERTDEZ2

	INCF SYS_TMP11,F,A	; f + 1 -> f

	MOVF SYS_TMP1,W,A
	SUBWF SYS_TMP5,F,A	; f - W -> f

	MOVF SYS_TMP2,W,A
	BTFSS STATUS,CARRY,A
	INCFSZ SYS_TMP2,W,A	; f + 1 -> w
	SUBWF SYS_TMP6,F,A	; f - W -> f

	MOVF SYS_TMP3,W,A
	BTFSS STATUS,CARRY,A
	INCFSZ SYS_TMP3,W,A	; f + 1 -> w
	SUBWF SYS_TMP7,F,A	; f - W -> f

	MOVF SYS_TMP4,W,A
	BTFSS STATUS,CARRY,A
	INCFSZ SYS_TMP4,W,A	; f + 1 -> w
	SUBWF SYS_TMP8,F,A	; f - W -> f

	BTFSC STATUS,CARRY,A
	BRA LCD1_CONVERTDEZ2

	MOVF SYS_TMP1,W,A
	ADDWF SYS_TMP5,F,A	; W + f -> f

	MOVF SYS_TMP2,W,A
	BTFSC STATUS,CARRY,A
	INCFSZ SYS_TMP2,W,A	; f + 1 -> w
	ADDWF SYS_TMP6,F,A	; W + f -> f

	MOVF SYS_TMP3,W,A
	BTFSC STATUS,CARRY,A
	INCFSZ SYS_TMP3,W,A	; f + 1 -> w
	ADDWF SYS_TMP7,F,A	; W + f -> f

	MOVF SYS_TMP4,W,A
	BTFSC STATUS,CARRY,A
	INCFSZ SYS_TMP4,W,A	; f + 1 -> w
	ADDWF SYS_TMP8,F,A	; W + f -> f

	DECF SYS_TMP11,W	; f + 1 -> w
	RETURN

;-------------------------------------------------------

LCD1_1000000000


	MOVLW 0
	MOVWF SYS_TMP1,A
	MOVLW 202
	MOVWF SYS_TMP2,A
	MOVLW 154
	MOVWF SYS_TMP3,A
	MOVLW 59
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_100000000

	RCALL LCD1_WRITE_DEZ

LCD1_100000000


	MOVLW 0
	MOVWF SYS_TMP1,A
	MOVLW 225
	MOVWF SYS_TMP2,A
	MOVLW 245
	MOVWF SYS_TMP3,A
	MOVLW 5
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_10000000

	RCALL LCD1_WRITE_DEZ

LCD1_10000000


	MOVLW 128
	MOVWF SYS_TMP1,A
	MOVLW 150
	MOVWF SYS_TMP2,A
	MOVLW 152
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_1000000

	RCALL LCD1_WRITE_DEZ

LCD1_1000000


	MOVLW 64
	MOVWF SYS_TMP1,A
	MOVLW 66
	MOVWF SYS_TMP2,A
	MOVLW 15
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_100000

	RCALL LCD1_WRITE_DEZ

LCD1_100000


	MOVLW 160
	MOVWF SYS_TMP1,A
	MOVLW 134
	MOVWF SYS_TMP2,A
	MOVLW 1
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_10000

	RCALL LCD1_WRITE_DEZ

LCD1_10000


	MOVLW 16
	MOVWF SYS_TMP1,A
	MOVLW 39
	MOVWF SYS_TMP2,A
	MOVLW 0
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_1000

	RCALL LCD1_WRITE_DEZ

LCD1_1000


	MOVLW 232
	MOVWF SYS_TMP1,A
	MOVLW 3
	MOVWF SYS_TMP2,A
	MOVLW 0
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_100

	RCALL LCD1_WRITE_DEZ

LCD1_100


	MOVLW 100
	MOVWF SYS_TMP1,A
	MOVLW 0
	MOVWF SYS_TMP2,A
	MOVLW 0
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_10

	RCALL LCD1_WRITE_DEZ

LCD1_10


	MOVLW 10
	MOVWF SYS_TMP1,A
	MOVLW 0
	MOVWF SYS_TMP2,A
	MOVLW 0
	MOVWF SYS_TMP3,A
	MOVLW 0
	MOVWF SYS_TMP4,A

	RCALL LCD1_CONVERTDEZ
	MOVF SYS_TMP10,F,A
	BTFSS STATUS,ZERO,A
	BRA LCD1_1

	RCALL LCD1_WRITE_DEZ

LCD1_1

	BCF SYS_TMP9,0,A
	MOVF SYS_TMP5,W,A
	BRA LCD1_WRITE_DEZ

;-------------------------------------------------------
; Initialisation
;-------------------------------------------------------

SYS_INIT

	MOVLB 0	; bank 0
	CLRF INTCON,A	; 0 -> f

; Set output before direction

	MOVLW B'00000000'
	MOVWF PORTA,A

	MOVLW B'00000000'
	MOVWF PORTB,A

	MOVLW B'00000000'
	MOVWF PORTC,A

	MOVLW B'00000000'
	MOVWF PORTD,A

	MOVLW B'00000000'
	MOVWF PORTE,A

; set direction

	MOVLW B'01111111'
	MOVWF TRISA,A

	MOVLW B'11111111'
	MOVWF TRISB,A

	MOVLW B'11111111'
	MOVWF TRISC,A

	MOVLW B'11000000'
	MOVWF TRISD,A

	MOVLW B'00000111'
	MOVWF TRISE,A


; init some registers

; Timer 0
	MOVLW 223
	MOVWF T0CON,A
	BSF INTCON,T0IE,A

; A/D off
	MOVLW 15
	MOVWF ADCON1,A
	CLRF ADCON2,A	; 0 -> f

;-------------------------------------------------------
; Clear RAM
;-------------------------------------------------------

; Clear from $000 to $7FF

	LFSR 0,0

SYSClearRAM1

	CLRF POSTINC0,A	; 0 -> f
	MOVLW 8
	SUBWF FSR0H,W,A	; f - W -> W
	BTFSS STATUS,ZERO,A
	BRA SYSClearRAM1
	MOVLW 0
	SUBWF FSR0L,W,A	; f - W -> W
	BTFSS STATUS,ZERO,A
	BRA SYSClearRAM1

;-------------------------------------------------------

; init vars


;-------------------------------------------------------
; Init LCD-module -> LCD1
;-------------------------------------------------------
	RCALL LCD1_INIT
	CLRF TMR0,A	; 0 -> f
; enable interrupts
	BCF INTCON,T0IF,A
	BSF INTCON,GIE,A

;-------------------------------------------------------
; Main program
;-------------------------------------------------------


MAIN

	RCALL READ_AN0
	RCALL READ_AN1
	RCALL READ_AN2

;-------------------------------------------------------
; TR1
;-------------------------------------------------------

	BCF INTCON,GIE,A
	MOVLW 1
	SUBWF TR1_1,W,A	; f - W -> W
	BTFSS STATUS,ZERO,A
	BRA TR1_CHECK


	MOVLW 144
	SUBWF TR1,W,A	; f - W -> W

TR1_CHECK

	BTFSS STATUS,CARRY,A
	BRA TR1_END


TR1_RESET

	MOVLW 1
	SUBWF TR1_1,F,A	; f - W -> f
	MOVLW 144
	SUBWF TR1,F,A	; f - W -> f
	BTFSS STATUS,CARRY,A
	DECF TR1_1,F,A	; f - 1 -> f

TR1_SET

	BTFSC S0,0,A
	BRA TR1_CLR

	BSF S0,0,A
	BRA TR1_END


TR1_CLR

	BCF S0,0,A


TR1_END

	BSF INTCON,GIE,A

;-------------------------------------------------------
; LCD1
;-------------------------------------------------------


;-------------------------------------------------------
; LT4
;-------------------------------------------------------

; check positive edge

	BTFSC _FD1,0,A
	BRA LT4_SETFD
	BTFSS S0,0,A
	BRA LT4_SETFD
	BSF _FD1,0,A


	MOVLW 7
	MOVWF SYS_TMP1,A
	MOVLW 0
	MOVWF SYS_TMP2,A
	RCALL LCD1_GOTOXY
	MOVF ADC1,W,A
	MOVWF SYS_TMP5,A
	MOVF ADC1_1,W,A
	MOVWF SYS_TMP6,A
	CLRF SYS_TMP7,A	; 0 -> f
	CLRF SYS_TMP8,A	; 0 -> f

	BSF SYS_TMP9,0,A
	MOVLW 2
	MOVWF SYS_TMP10,A
	RCALL LCD1_10000

LT4_SETFD

; check negative

	BTFSC S0,0,A
	BRA LT4_EXIT
	BCF _FD1,0,A

LT4_EXIT



;-------------------------------------------------------
; LT7
;-------------------------------------------------------

; check positive edge

	BTFSC _FD1,1,A
	BRA LT7_SETFD
	BTFSS S0,0,A
	BRA LT7_SETFD
	BSF _FD1,1,A


	MOVLW 0
	MOVWF SYS_TMP1,A
	MOVLW 0
	MOVWF SYS_TMP2,A
	RCALL LCD1_GOTOXY
	MOVF ADC0,W,A
	MOVWF SYS_TMP5,A
	MOVF ADC0_1,W,A
	MOVWF SYS_TMP6,A
	CLRF SYS_TMP7,A	; 0 -> f
	CLRF SYS_TMP8,A	; 0 -> f

	BSF SYS_TMP9,0,A
	MOVLW 2
	MOVWF SYS_TMP10,A
	RCALL LCD1_10000

LT7_SETFD

; check negative

	BTFSC S0,0,A
	BRA LT7_EXIT
	BCF _FD1,1,A

LT7_EXIT



;-------------------------------------------------------
; LT10
;-------------------------------------------------------

; check positive edge

	BTFSC _FD1,2,A
	BRA LT10_SETFD
	BTFSS S0,0,A
	BRA LT10_SETFD
	BSF _FD1,2,A


	MOVLW 14
	MOVWF SYS_TMP1,A
	MOVLW 0
	MOVWF SYS_TMP2,A
	RCALL LCD1_GOTOXY
	MOVF ADC2,W,A
	MOVWF SYS_TMP5,A
	MOVF ADC2_1,W,A
	MOVWF SYS_TMP6,A
	CLRF SYS_TMP7,A	; 0 -> f
	CLRF SYS_TMP8,A	; 0 -> f

	BSF SYS_TMP9,0,A
	MOVLW 2
	MOVWF SYS_TMP10,A
	RCALL LCD1_10000

LT10_SETFD

; check negative

	BTFSC S0,0,A
	BRA LT10_EXIT
	BCF _FD1,2,A

LT10_EXIT


;-------------------------------------------------------
	BRA MAIN
;-------------------------------------------------------








	END

