;Output pins
;	X - PORTA,0
;	Y - PORTA,1
;	LED - PORTA,2
;	Input1 - PORTA,3
;	Input2 - PORTA,4
;	Vref - PORTB[0..7]
;--------------------------------------------------------------------

		processor 16f88

		#INCLUDE <p16f88.inc>       ; processor specific variable definitions

		__CONFIG    _CONFIG1, _HS_OSC & _WDT_OFF & _LVP_OFF
		__CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

StepNum			equ	h'20'	;position counter
flag			equ	h'21'	;flags: 0-low current,1- up/down
MaxStepNum		equ	h'22'	;Max step Number

#define Front		flag,	0
#define OutX		PORTA,	0
#define OutY		PORTA,	1
#define LED			PORTA,	2
#define JP1			PORTA,	3
#define JP2			PORTA,	4
#define Vref		PORTB
;---------------------------------------------------

		org 0
		goto	start

		org 4
		goto	int_service
		
;---------------------------------------------------		
start:	
		BANKSEL ANSEL				; Select Bank of ANSEL
		MOVLW 	0x00 				; Configure all pins
		MOVWF 	ANSEL 				; as digital in/out
		BANKSEL	TRISA
		movlw	b'00011000'
		movwf  	TRISA		
		movlw	b'00000000'
		movwf	TRISB
		BANKSEL PORTA
		clrf	PORTA
		bsf		OutX
		bcf		OutY
		clrf	PORTB
		clrf	flag
		BANKSEL	INTCON
		movlw	b'11000000'
		movwf	INTCON			;Enable interupts
		movlw	b'00000010'
		BANKSEL	PIE1
		movwf	PIE1			;Enable TMR2 interupt
		movlw	b'00000100'
		BANKSEL	T2CON
		movwf	T2CON			;T2-ON, presc=1, postsc=1 
		bcf		PIR1,	TMR2IF	;clr TMR2 interupt flag

		movlw	d'255'
		movwf	MaxStepNum
		clrf	StepNum
		bsf		Front

		btfsc	JP1
		goto	JP1S
		btfsc	JP2
		goto	JP2S
		goto	JP00

JP1S	btfsc	JP2		
		goto	JP11
		goto	JP01

JP2S	btfsc	JP2		
		goto	JP11
		goto	JP10
				
JP00	movlw	b'00000100'	
		BANKSEL	T2CON
		movwf	T2CON			;T2-ON, presc=1, postsc=1 
		goto	main
		
JP01	movlw	b'00000101'	
		BANKSEL	T2CON
		movwf	T2CON			;T2-ON, presc=4, postsc=1 
		goto	main

JP10	movlw	b'00000110'	
		BANKSEL	T2CON
		movwf	T2CON			;T2-ON, presc=16, postsc=1 
		goto	main
		
JP11	movlw	b'00001111'	
		BANKSEL	T2CON
		movwf	T2CON			;T2-ON, presc=16, postsc=1 
		goto	main		
;---------------------------------------------------

main:	goto	main

;---------------------------------------------------

TB		btfsc	OutX
		goto	TB10
		bcf		OutY
		bsf		OutX
		return
TB10	bsf		OutY
		bcf		OutX
		return
;---------------------------------------------------
		
int_service:
		movfw	StepNum
		call	t8
		movwf	Vref				;set next step
		movf	Vref,	F
		btfsc	STATUS,	Z
		call	TB
		movfw	StepNum				;chek for final step
		xorwf	MaxStepNum,	W
		btfsc	STATUS,	Z
		bcf		Front				;set front down
		movf	StepNum,	f		;chek for start step
		btfsc	STATUS,	Z
		bsf		Front				;set front up

		btfsc	Front				;test for next movement
		incf	StepNum,	F
		btfss	Front				
		decf	StepNum,	F

		movlw	d'240'				;start timer count 1ms
		movwf	TMR2
		BANKSEL	T2CON
		bcf		PIR1,	TMR2IF		;clr TMR2 interupt flag
		retfie
				
;---------------------------------------------------				
			
t2:		addwf	PCL, f
		retlw	d'0';0
		retlw	d'128';1
		retlw	d'221';2
		retlw	d'255';3
;---------------------------------------------------				
			
t3:		addwf	PCL, f
		retlw	d'0';0
		retlw	d'57';1
		retlw	d'111';2
		retlw	d'159';3
		retlw	d'199';4
		retlw	d'230';5
		retlw	d'249';6
		retlw	d'255';7
;---------------------------------------------------				
			
t4:		addwf	PCL, f
		retlw	d'0';0
		retlw	d'27';1
		retlw	d'53';2
		retlw	d'79';3
		retlw	d'104';4
		retlw	d'128';5
		retlw	d'150';6
		retlw	d'171';7
		retlw	d'190';8
		retlw	d'206';9
		retlw	d'221';10
		retlw	d'233';11
		retlw	d'243';12
		retlw	d'249';13
		retlw	d'254';14
		retlw	d'255';15
;---------------------------------------------------	

t5:		addwf	PCL, f
		retlw	d'0';	0
		retlw	d'13';	1
		retlw	d'26';	2
		retlw	d'39';	3
		retlw	d'51';	4
		retlw	d'64';	5
		retlw	d'76';	6
		retlw	d'89';	7
		retlw	d'101';	8
		retlw	d'112';	9
		retlw	d'124';	10
		retlw	d'135';	11
		retlw	d'146';	12
		retlw	d'156';	13
		retlw	d'166';	14
		retlw	d'176';	15
		retlw	d'185';	16
		retlw	d'193';	17
		retlw	d'202';	18
		retlw	d'209';	19
		retlw	d'216';	20
		retlw	d'223';	21
		retlw	d'229';	22
		retlw	d'234';	23
		retlw	d'239';	24
		retlw	d'243';	25
		retlw	d'247';	26
		retlw	d'250';	27
		retlw	d'252';	28
		retlw	d'254';	29
		retlw	d'255';	30
		retlw	d'255';	31
;---------------------------------------------------	
		
t6:		addwf	PCL, f
		retlw	d'0'	;0
		retlw	d'6'	;1
		retlw	d'13'	;2
		retlw	d'19'	;3
		retlw	d'25'	;4
		retlw	d'32'	;5
		retlw	d'38'	;6
		retlw	d'44'	;7
		retlw	d'51'	;8
		retlw	d'57'	;9
		retlw	d'63'	;10
		retlw	d'69'	;11
		retlw	d'75'	;12
		retlw	d'81'	;13
		retlw	d'87'	;14
		retlw	d'93'	;15
		retlw	d'99'	;16
		retlw	d'105'	;17
		retlw	d'111'	;18
		retlw	d'116'	;19
		retlw	d'122'	;20
		retlw	d'128'	;21
		retlw	d'133'	;22
		retlw	d'138'	;23
		retlw	d'144'	;24
		retlw	d'149'	;25
		retlw	d'154'	;26
		retlw	d'159'	;27
		retlw	d'164'	;28
		retlw	d'169'	;29
		retlw	d'173'	;30
		retlw	d'178'	;31
		retlw	d'183'	;32
		retlw	d'187'	;33
		retlw	d'191'	;34
		retlw	d'195'	;35
		retlw	d'199'	;36
		retlw	d'203'	;37
		retlw	d'207'	;38
		retlw	d'211'	;39
		retlw	d'214'	;40
		retlw	d'218'	;41
		retlw	d'221'	;42
		retlw	d'224'	;43
		retlw	d'227'	;44
		retlw	d'230'	;45
		retlw	d'232'	;46
		retlw	d'235'	;47
		retlw	d'237'	;48
		retlw	d'240'	;49
		retlw	d'242'	;50
		retlw	d'244'	;51
		retlw	d'245'	;52
		retlw	d'247'	;53
		retlw	d'249'	;54
		retlw	d'250'	;55
		retlw	d'251'	;56
		retlw	d'252'	;57
		retlw	d'253'	;58
		retlw	d'254'	;59
		retlw	d'254'	;60
		retlw	d'255'	;61
		retlw	d'255'	;62
		retlw	d'255'	;63
;---------------------------------------------------	

t7:		addwf	PCL,	f
		retlw	d'0'	;0
		retlw	d'3'	;1
		retlw	d'6'	;2
		retlw	d'9'	;3
		retlw	d'13'	;4
		retlw	d'16'	;5
		retlw	d'19'	;6
		retlw	d'22'	;7
		retlw	d'25'	;8
		retlw	d'28'	;9
		retlw	d'31'	;10
		retlw	d'35'	;11
		retlw	d'38'	;12
		retlw	d'41'	;13
		retlw	d'44'	;14
		retlw	d'47'	;15
		retlw	d'50'	;16
		retlw	d'53'	;17
		retlw	d'56'	;18
		retlw	d'59'	;19
		retlw	d'62'	;20
		retlw	d'65'	;21
		retlw	d'69'	;22
		retlw	d'72'	;23
		retlw	d'75'	;24
		retlw	d'78'	;25
		retlw	d'81'	;26
		retlw	d'84'	;27
		retlw	d'87'	;28
		retlw	d'90'	;29
		retlw	d'92'	;30
		retlw	d'95'	;31
		retlw	d'98'	;32
		retlw	d'101'	;33
		retlw	d'104'	;34
		retlw	d'107'	;35
		retlw	d'110'	;36
		retlw	d'113'	;37
		retlw	d'115'	;38
		retlw	d'118'	;39
		retlw	d'121'	;40
		retlw	d'124'	;41
		retlw	d'127'	;42
		retlw	d'129'	;43
		retlw	d'132'	;44
		retlw	d'135'	;45
		retlw	d'137'	;46
		retlw	d'140'	;47
		retlw	d'143'	;48
		retlw	d'145'	;49
		retlw	d'148'	;50
		retlw	d'150'	;51
		retlw	d'153'	;52
		retlw	d'155'	;53
		retlw	d'158'	;54
		retlw	d'160'	;55
		retlw	d'163'	;56
		retlw	d'165'	;57
		retlw	d'168'	;58
		retlw	d'170'	;59
		retlw	d'172'	;60
		retlw	d'175'	;61
		retlw	d'177'	;62
		retlw	d'179'	;63
		retlw	d'181'	;64
		retlw	d'184'	;65
		retlw	d'186'	;66
		retlw	d'188'	;67
		retlw	d'190'	;68
		retlw	d'192'	;69
		retlw	d'194'	;70
		retlw	d'196'	;71
		retlw	d'198'	;72
		retlw	d'200'	;73
		retlw	d'202'	;74
		retlw	d'204'	;75
		retlw	d'206'	;76
		retlw	d'208'	;77
		retlw	d'210'	;78
		retlw	d'211'	;79
		retlw	d'213'	;80
		retlw	d'215'	;81
		retlw	d'217'	;82
		retlw	d'218'	;83
		retlw	d'220'	;84
		retlw	d'221'	;85
		retlw	d'223'	;86
		retlw	d'224'	;87
		retlw	d'226'	;88
		retlw	d'227'	;89
		retlw	d'229'	;90
		retlw	d'230'	;91
		retlw	d'231'	;92
		retlw	d'233'	;93
		retlw	d'234'	;94
		retlw	d'235'	;95
		retlw	d'236'	;96
		retlw	d'238'	;97
		retlw	d'239'	;98
		retlw	d'240'	;99
		retlw	d'241'	;100
		retlw	d'242'	;101
		retlw	d'243'	;102
		retlw	d'244'	;103
		retlw	d'245'	;104
		retlw	d'246'	;105
		retlw	d'246'	;106
		retlw	d'247'	;107
		retlw	d'248'	;108
		retlw	d'249'	;109
		retlw	d'249'	;110
		retlw	d'250'	;111
		retlw	d'251'	;112
		retlw	d'251'	;113
		retlw	d'252'	;114
		retlw	d'252'	;115
		retlw	d'253'	;116
		retlw	d'253'	;117
		retlw	d'253'	;118
		retlw	d'254'	;119
		retlw	d'254'	;120
		retlw	d'254'	;121
		retlw	d'255'	;122
		retlw	d'255'	;123
		retlw	d'255'	;124
		retlw	d'255'	;125
		retlw	d'255'	;126
		retlw	d'255'	;127
;---------------------------------------------------	
		ORG		0X1FE
t8:		BSF		PCLATH,	1
		addwf	PCL,	f
		retlw	d'0'	;0
		retlw	d'2'	;1
		retlw	d'3'	;2
		retlw	d'5'	;3
		retlw	d'6'	;4
		retlw	d'8'	;5
		retlw	d'9'	;6
		retlw	d'11'	;7
		retlw	d'13'	;8
		retlw	d'14'	;9
		retlw	d'16'	;10
		retlw	d'17'	;11
		retlw	d'19'	;12
		retlw	d'20'	;13
		retlw	d'22'	;14
		retlw	d'24'	;15
		retlw	d'25'	;16
		retlw	d'27'	;17
		retlw	d'28'	;18
		retlw	d'30'	;19
		retlw	d'31'	;20
		retlw	d'33'	;21
		retlw	d'34'	;22
		retlw	d'36'	;23
		retlw	d'38'	;24
		retlw	d'39'	;25
		retlw	d'41'	;26
		retlw	d'42'	;27
		retlw	d'44'	;28
		retlw	d'45'	;29
		retlw	d'47'	;30
		retlw	d'48'	;31
		retlw	d'50'	;32
		retlw	d'51'	;33
		retlw	d'53'	;34
		retlw	d'55'	;35
		retlw	d'56'	;36
		retlw	d'58'	;37
		retlw	d'59'	;38
		retlw	d'61'	;39
		retlw	d'62'	;40
		retlw	d'64'	;41
		retlw	d'65'	;42
		retlw	d'67'	;43
		retlw	d'68'	;44
		retlw	d'70'	;45
		retlw	d'71'	;46
		retlw	d'73'	;47
		retlw	d'74'	;48
		retlw	d'76'	;49
		retlw	d'77'	;50
		retlw	d'79'	;51
		retlw	d'80'	;52
		retlw	d'82'	;53
		retlw	d'83'	;54
		retlw	d'85'	;55
		retlw	d'86'	;56
		retlw	d'88'	;57
		retlw	d'89'	;58
		retlw	d'91'	;59
		retlw	d'92'	;60
		retlw	d'94'	;61
		retlw	d'95'	;62
		retlw	d'96'	;63
		retlw	d'98'	;64
		retlw	d'99'	;65
		retlw	d'101'	;66
		retlw	d'102'	;67
		retlw	d'104'	;68
		retlw	d'105'	;69
		retlw	d'107'	;70
		retlw	d'108'	;71
		retlw	d'109'	;72
		retlw	d'111'	;73
		retlw	d'112'	;74
		retlw	d'114'	;75
		retlw	d'115'	;76
		retlw	d'116'	;77
		retlw	d'118'	;78
		retlw	d'119'	;79
		retlw	d'121'	;80
		retlw	d'122'	;81
		retlw	d'123'	;82
		retlw	d'125'	;83
		retlw	d'126'	;84
		retlw	d'128'	;85
		retlw	d'129'	;86
		retlw	d'130'	;87
		retlw	d'132'	;88
		retlw	d'133'	;89
		retlw	d'134'	;90
		retlw	d'136'	;91
		retlw	d'137'	;92
		retlw	d'138'	;93
		retlw	d'140'	;94
		retlw	d'141'	;95
		retlw	d'142'	;96
		retlw	d'143'	;97
		retlw	d'145'	;98
		retlw	d'146'	;99
		retlw	d'147'	;100
		retlw	d'149'	;101
		retlw	d'150'	;102
		retlw	d'151'	;103
		retlw	d'152'	;104
		retlw	d'154'	;105
		retlw	d'155'	;106
		retlw	d'156'	;107
		retlw	d'157'	;108
		retlw	d'159'	;109
		retlw	d'160'	;110
		retlw	d'161'	;111
		retlw	d'162'	;112
		retlw	d'164'	;113
		retlw	d'165'	;114
		retlw	d'166'	;115
		retlw	d'167'	;116
		retlw	d'168'	;117
		retlw	d'169'	;118
		retlw	d'171'	;119
		retlw	d'172'	;120
		retlw	d'173'	;121
		retlw	d'174'	;122
		retlw	d'175'	;123
		retlw	d'176'	;124
		retlw	d'178'	;125
		retlw	d'179'	;126
		retlw	d'180'	;127
		retlw	d'181'	;128
		retlw	d'182'	;129
		retlw	d'183'	;130
		retlw	d'184'	;131
		retlw	d'185'	;132
		retlw	d'186'	;133
		retlw	d'187'	;134
		retlw	d'188'	;135
		retlw	d'190'	;136
		retlw	d'191'	;137
		retlw	d'192'	;138
		retlw	d'193'	;139
		retlw	d'194'	;140
		retlw	d'195'	;141
		retlw	d'196'	;142
		retlw	d'197'	;143
		retlw	d'198'	;144
		retlw	d'199'	;145
		retlw	d'200'	;146
		retlw	d'201'	;147
		retlw	d'202'	;148
		retlw	d'203'	;149
		retlw	d'203'	;150
		retlw	d'204'	;151
		retlw	d'205'	;152
		retlw	d'206'	;153
		retlw	d'207'	;154
		retlw	d'208'	;155
		retlw	d'209'	;156
		retlw	d'210'	;157
		retlw	d'211'	;158
		retlw	d'212'	;159
		retlw	d'213'	;160
		retlw	d'213'	;161
		retlw	d'214'	;162
		retlw	d'215'	;163
		retlw	d'216'	;164
		retlw	d'217'	;165
		retlw	d'218'	;166
		retlw	d'218'	;167
		retlw	d'219'	;168
		retlw	d'220'	;169
		retlw	d'221'	;170
		retlw	d'222'	;171
		retlw	d'222'	;172
		retlw	d'223'	;173
		retlw	d'224'	;174
		retlw	d'225'	;175
		retlw	d'225'	;176
		retlw	d'226'	;177
		retlw	d'227'	;178
		retlw	d'228'	;179
		retlw	d'228'	;180
		retlw	d'229'	;181
		retlw	d'230'	;182
		retlw	d'230'	;183
		retlw	d'231'	;184
		retlw	d'232'	;185
		retlw	d'232'	;186
		retlw	d'233'	;187
		retlw	d'234'	;188
		retlw	d'234'	;189
		retlw	d'235'	;190
		retlw	d'235'	;191
		retlw	d'236'	;192
		retlw	d'237'	;193
		retlw	d'237'	;194
		retlw	d'238'	;195
		retlw	d'238'	;196
		retlw	d'239'	;197
		retlw	d'239'	;198
		retlw	d'240'	;199
		retlw	d'241'	;200
		retlw	d'241'	;201
		retlw	d'242'	;202
		retlw	d'242'	;203
		retlw	d'243'	;204
		retlw	d'243'	;205
		retlw	d'243'	;206
		retlw	d'244'	;207
		retlw	d'244'	;208
		retlw	d'245'	;209
		retlw	d'245'	;210
		retlw	d'246'	;211
		retlw	d'246'	;212
		retlw	d'247'	;213
		retlw	d'247'	;214
		retlw	d'247'	;215
		retlw	d'248'	;216
		retlw	d'248'	;217
		retlw	d'248'	;218
		retlw	d'249'	;219
		retlw	d'249'	;220
		retlw	d'249'	;221
		retlw	d'250'	;222
		retlw	d'250'	;223
		retlw	d'250'	;224
		retlw	d'251'	;225
		retlw	d'251'	;226
		retlw	d'251'	;227
		retlw	d'251'	;228
		retlw	d'252'	;229
		retlw	d'252'	;230
		retlw	d'252'	;231
		retlw	d'252'	;232
		retlw	d'253'	;233
		retlw	d'253'	;234
		retlw	d'253'	;235
		retlw	d'253'	;236
		retlw	d'253'	;237
		retlw	d'254'	;238
		retlw	d'254'	;239
		retlw	d'254'	;240
		retlw	d'254'	;241
		retlw	d'254'	;242
		retlw	d'254'	;243
		retlw	d'254'	;244
		retlw	d'255'	;245
		retlw	d'255'	;246
		retlw	d'255'	;247
		retlw	d'255'	;248
		retlw	d'255'	;249
		retlw	d'255'	;250
		retlw	d'255'	;251
		retlw	d'255'	;252
		retlw	d'255'	;253
		retlw	d'255'	;254
		retlw	d'255'	;255
;---------------------------------------------------
		end
