Source file: /~heha/ewa/Kram/igr-251008.zip/igr.a15

; Inkremental-Drehgeber auslesen und per WebUSB ausgeben
; Erst mal ohne Interpolation

	radix	dec
	list	n=0,st=off
	nolist
	include	"p16f1454.inc"
	nolist
	include	"mymacros.i15"
	list

;Hardware: PIC16F1454 + LM339 (Vierfach-Komparator)
;(13) RA0/D+	USB D+
;(12) RA1/D-	USB D-
; (4) RA3/!MCLR	Reset (ungenutzt, Lo springt zum Urlader)
; (3) RA4/IOC	Digital-Spur A vom LM339, interner Pullup
; (2) RA5/IOC	Digital-Spur B vom LM339, interner Pullup
;(10) RC0/AN4	Spur A+
; (9) RC1/AN5	Spur A-
; (8) RC2/AN6	Spur B+
; (7) RC3/AN7	Spur B-
; (6) RC4	L = Stromfresser aktivieren, H = USB-Sleep (Ausgang)
; (5) RC5	Digital-Spur 0 vom LM339, externer Pullup

E0_SSH 		equ	3	;EP0: 1<<3 = 8 Byte
E1I_SSH		equ	3	;EP3IN: 8 Byte

;Exy_STA bits
BSTALL		equ	2
DTSEN		equ	3
DTS		equ	6
UOWN		equ	7

;list of Bank0 RAM variables, starting with BDT
	cblock 0x20	;Bank 0 (completely full)
E0O_STA		;@0x20
E0O_CNT
E0O_ADR:2
E0I_STA
E0I_CNT
E0I_ADR:2
; Der Platz für Endpoint 1 Out wird für Arbeitsvariablen imn Bank 0 missbraucht
USB_STATE	;@0x28: Einige Flags
SETUPDAT_CNT	;Bytes die noch zu senden oder empfangen sind
SETUPDAT_PTR:2	;Datenzeiger
E1I_STA
E1I_CNT
E1I_ADR:2
E0_BUF:1<<E0_SSH	;@0x30: Shared für EP0 Setup-, Out-, und In-Transfer
E1I_BUF:1<<E1I_SSH
	endc
	cblock	0x70	;Nicht-Bank-Register
CL		;Zählregister, 3. Argument
saveP		;für ISR: Gefangene Portpins am Anfang
saveX		;für ISR: alter/neuer 2-Bit-Zählerstand
report:4	;Input-Report

	endc
bmRequestType	equ	E0_BUF+0
bRequest	equ	E0_BUF+1
wValueL		equ	E0_BUF+2
wValueH		equ	E0_BUF+3
wLengthL	equ	E0_BUF+6
wLengthH	equ	E0_BUF+7
;Lineare (und zusammenhängende) Pufferadressen
LIN_E0_BUF	equ	0x2010	;bis 0x2017
LIN_E1I_BUF	equ	0x2018	;bis 0x201F

	org	0x200
	banksel	PCON		;Bank1
	bsf	PCON,NOT_RMCLR	; clear !MCLR reset reason for next onReset
	goto	onReset
	nop
	include	"io.i15"

onReset
	call	ioInit
	call	usbInit
;Hauptschleife
_loop	call	ioPoll
	call	usbPoll
	bra	_loop

	include	"usb.i15"
	include	"flash.i15"
	include	"descriptors.i15"

	end
Detected encoding: UTF-80